Hello Krish Sadhukhan, Commit 95d6d2c32288 ("nVMX: Test Host Segment Registers and Descriptor Tables on vmentry of nested guests") from Jun 28, 2019 (linux-next), leads to the following Smatch static checker warning: x86/vmx_tests.c:7583 test_vmcs_field() warn: maybe use && instead of & x86/vmx_tests.c 7561 static void test_vmcs_field(u64 field, const char *field_name, u32 bit_start, 7562 u32 bit_end, u64 val, bool valid_val, u32 error) 7563 { 7564 u64 field_saved = vmcs_read(field); 7565 u32 i; 7566 u64 tmp; 7567 u32 bit_on; 7568 u64 mask = ~0ull; 7569 7570 mask = (mask >> bit_end) << bit_end; 7571 mask = mask | ((1 << bit_start) - 1); 7572 tmp = (field_saved & mask) | (val << bit_start); 7573 7574 vmcs_write(field, tmp); 7575 report_prefix_pushf("%s %lx", field_name, tmp); 7576 if (valid_val) 7577 test_vmx_vmlaunch(0); 7578 else 7579 test_vmx_vmlaunch(error); 7580 report_prefix_pop(); 7581 7582 for (i = bit_start; i <= bit_end; i = i + 2) { --> 7583 bit_on = ((1ull < i) & (val << bit_start)) ? 0 : 1; ^ This quite looks like it's supposed to be << instead of <. 7584 if (bit_on) 7585 tmp = field_saved | (1ull << i); 7586 else 7587 tmp = field_saved & ~(1ull << i); 7588 vmcs_write(field, tmp); 7589 report_prefix_pushf("%s %lx", field_name, tmp); 7590 if (valid_val) 7591 test_vmx_vmlaunch(error); 7592 else 7593 test_vmx_vmlaunch(0); 7594 report_prefix_pop(); 7595 } 7596 7597 vmcs_write(field, field_saved); 7598 } regards, dan carpenter