dm: refine 'assert' usage in pm.c and acpi.c

'assert' usage cleanup to avoid possible software vulnerabilities

Tracked-On: #3252
Signed-off-by: Yonghua Huang <yonghua.huang@intel.com>
Reviewed-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
Yonghua Huang 2019-06-17 18:46:50 +08:00 committed by wenlingz
parent 885d503a60
commit e6eef9b672
2 changed files with 7 additions and 17 deletions

View File

@ -28,7 +28,6 @@
#include <sys/cdefs.h> #include <sys/cdefs.h>
#include <sys/types.h> #include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <assert.h>
#include <errno.h> #include <errno.h>
#include <pthread.h> #include <pthread.h>
#include <signal.h> #include <signal.h>
@ -69,7 +68,6 @@ static int
reset_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes, reset_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg) uint32_t *eax, void *arg)
{ {
int error;
static uint8_t reset_control; static uint8_t reset_control;
if (bytes != 1) if (bytes != 1)
@ -81,14 +79,12 @@ reset_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
if (*eax & 0x8) { if (*eax & 0x8) {
fprintf(stderr, "full reset\r\n"); fprintf(stderr, "full reset\r\n");
error = vm_suspend(ctx, VM_SUSPEND_FULL_RESET); vm_suspend(ctx, VM_SUSPEND_FULL_RESET);
assert(error ==0 || errno == EALREADY);
mevent_notify(); mevent_notify();
reset_control = 0; reset_control = 0;
} else if (*eax & 0x4) { } else if (*eax & 0x4) {
fprintf(stderr, "system reset\r\n"); fprintf(stderr, "system reset\r\n");
error = vm_suspend(ctx, VM_SUSPEND_SYSTEM_RESET); vm_suspend(ctx, VM_SUSPEND_SYSTEM_RESET);
assert(error ==0 || errno == EALREADY);
mevent_notify(); mevent_notify();
} }
} }
@ -279,8 +275,6 @@ static int
pm1_control_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes, pm1_control_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg) uint32_t *eax, void *arg)
{ {
int error;
if (bytes != 2) if (bytes != 2)
return -1; return -1;
if (in) if (in)
@ -300,13 +294,11 @@ pm1_control_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
*/ */
if (*eax & VIRTUAL_PM1A_SLP_EN) { if (*eax & VIRTUAL_PM1A_SLP_EN) {
if ((pm1_control & VIRTUAL_PM1A_SLP_TYP) >> 10 == 5) { if ((pm1_control & VIRTUAL_PM1A_SLP_TYP) >> 10 == 5) {
error = vm_suspend(ctx, VM_SUSPEND_POWEROFF); vm_suspend(ctx, VM_SUSPEND_POWEROFF);
assert(error == 0 || errno == EALREADY);
} }
if ((pm1_control & VIRTUAL_PM1A_SLP_TYP) >> 10 == 3) { if ((pm1_control & VIRTUAL_PM1A_SLP_TYP) >> 10 == 3) {
error = vm_suspend(ctx, VM_SUSPEND_SUSPEND); vm_suspend(ctx, VM_SUSPEND_SUSPEND);
assert(error == 0 || errno == EALREADY);
} }
} }
} }
@ -452,8 +444,7 @@ static int
smi_cmd_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes, smi_cmd_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
uint32_t *eax, void *arg) uint32_t *eax, void *arg)
{ {
assert(!in); if (in || (bytes != 1))
if (bytes != 1)
return -1; return -1;
pthread_mutex_lock(&pm_lock); pthread_mutex_lock(&pm_lock);

View File

@ -857,13 +857,12 @@ void
dsdt_indent(int levels) dsdt_indent(int levels)
{ {
dsdt_indent_level += levels; dsdt_indent_level += levels;
assert(dsdt_indent_level >= 0);
} }
void void
dsdt_unindent(int levels) dsdt_unindent(int levels)
{ {
assert(dsdt_indent_level >= levels); if (dsdt_indent_level >= levels)
dsdt_indent_level -= levels; dsdt_indent_level -= levels;
} }