mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-07-07 12:29:48 +00:00
hv: fix MISRA-C violations in vmsr.c
In enable_msr_interception(), by removing the local pointer declarations and all pointer arithmetic operations, the following violations are fixed. - Use of pointer arithmetic. - Pointer arithmetic is not on array. - Pointer not checked for null before use. 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:
parent
6bdcaf7fe4
commit
b30dfb1da8
@ -264,16 +264,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 = bitmap;
|
uint32_t read_offset = 0U;
|
||||||
uint8_t *write_map = bitmap + 2048;
|
uint32_t write_offset = 2048U;
|
||||||
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;
|
||||||
|
|
||||||
if ((msr <= 0x1FFFU) || ((msr >= 0xc0000000U) && (msr <= 0xc0001fffU))) {
|
if ((msr <= 0x1FFFU) || ((msr >= 0xc0000000U) && (msr <= 0xc0001fffU))) {
|
||||||
if ((msr & 0xc0000000U) != 0U) {
|
if ((msr & 0xc0000000U) != 0U) {
|
||||||
read_map = read_map + 1024;
|
read_offset = read_offset + 1024U;
|
||||||
write_map = write_map + 1024;
|
write_offset = write_offset + 1024U;
|
||||||
}
|
}
|
||||||
|
|
||||||
msr &= 0x1FFFU;
|
msr &= 0x1FFFU;
|
||||||
@ -281,15 +281,15 @@ static void enable_msr_interception(uint8_t *bitmap, uint32_t msr_arg, uint32_t
|
|||||||
msr_index = msr >> 3U;
|
msr_index = msr >> 3U;
|
||||||
|
|
||||||
if ((mode & INTERCEPT_READ) == INTERCEPT_READ) {
|
if ((mode & INTERCEPT_READ) == INTERCEPT_READ) {
|
||||||
read_map[msr_index] |= msr_bit;
|
bitmap[read_offset + msr_index] |= msr_bit;
|
||||||
} else {
|
} else {
|
||||||
read_map[msr_index] &= ~msr_bit;
|
bitmap[read_offset + msr_index] &= ~msr_bit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mode & INTERCEPT_WRITE) == INTERCEPT_WRITE) {
|
if ((mode & INTERCEPT_WRITE) == INTERCEPT_WRITE) {
|
||||||
write_map[msr_index] |= msr_bit;
|
bitmap[write_offset + msr_index] |= msr_bit;
|
||||||
} else {
|
} else {
|
||||||
write_map[msr_index] &= ~msr_bit;
|
bitmap[write_offset + msr_index] &= ~msr_bit;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pr_err("%s, Invalid MSR: 0x%x", __func__, msr);
|
pr_err("%s, Invalid MSR: 0x%x", __func__, msr);
|
||||||
|
Loading…
Reference in New Issue
Block a user