hv: fix enable_msr_interception() function

Fixed three MISRA-C violations:
11S: No brackets to loop body
7C: Procedure has more than one exit point.
8D: DD data flow anomalies found.
  initialize read_map and write_map in the declaration statements.

Fixed one bug:
Use "msr <= 0x1FFFU" instead of "msr < 0x1FFFU" because 0x1FFF is a valid MSR
bitmap address.

Tracked-On: #861
Signed-off-by: Zide Chen <zide.chen@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
This commit is contained in:
Zide Chen 2018-12-19 10:42:26 -08:00 committed by wenlingz
parent 56af4332e3
commit bb47184f3c

View File

@ -220,21 +220,16 @@ uint32_t vmsr_get_guest_msr_index(uint32_t msr)
static void enable_msr_interception(uint8_t *bitmap, uint32_t msr_arg, uint32_t mode) static void enable_msr_interception(uint8_t *bitmap, uint32_t msr_arg, uint32_t mode)
{ {
uint8_t *read_map; uint8_t *read_map = bitmap;
uint8_t *write_map; uint8_t *write_map = bitmap + 2048;
uint32_t msr = msr_arg; uint32_t msr = msr_arg;
uint8_t msr_bit; uint8_t msr_bit;
uint32_t msr_index; uint32_t msr_index;
/* low MSR */
if (msr < 0x1FFFU) { if ((msr <= 0x1FFFU) || ((msr >= 0xc0000000U) && (msr <= 0xc0001fffU))) {
read_map = bitmap; if ((msr & 0xc0000000U) != 0U) {
write_map = bitmap + 2048; read_map = read_map + 1024;
} else if ((msr >= 0xc0000000U) && (msr <= 0xc0001fffU)) { write_map = write_map + 1024;
read_map = bitmap + 1024;
write_map = bitmap + 3072;
} else {
pr_err("Invalid MSR");
return;
} }
msr &= 0x1FFFU; msr &= 0x1FFFU;
@ -252,6 +247,9 @@ static void enable_msr_interception(uint8_t *bitmap, uint32_t msr_arg, uint32_t
} else { } else {
write_map[msr_index] &= ~msr_bit; write_map[msr_index] &= ~msr_bit;
} }
} else {
pr_err("%s, Invalid MSR: 0x%x", __func__, msr);
}
} }
/* /*