Drivers: hv: make sure that 'struct vmbus_channel_message_header' compiles correctly
authorVitaly Kuznetsov <vkuznets@redhat.com>
Mon, 6 Apr 2020 10:43:15 +0000 (12:43 +0200)
committerWei Liu <wei.liu@kernel.org>
Thu, 23 Apr 2020 13:17:11 +0000 (13:17 +0000)
Strictly speaking, compiler is free to use something different from 'u32'
for 'enum vmbus_channel_message_type' (e.g. char) but it doesn't happen in
real life, just add a BUILD_BUG_ON() guardian.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/20200406104316.45303-1-vkuznets@redhat.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
drivers/hv/vmbus_drv.c

index 8f08e8273dd8f48f018159a8d2e4d6739f7cd9ec..6e54adb1dd331b5b0d751c2d94a45aff39ccc895 100644 (file)
@@ -1051,6 +1051,13 @@ void vmbus_on_msg_dpc(unsigned long data)
        struct onmessage_work_context *ctx;
        u32 message_type = msg->header.message_type;
 
+       /*
+        * 'enum vmbus_channel_message_type' is supposed to always be 'u32' as
+        * it is being used in 'struct vmbus_channel_message_header' definition
+        * which is supposed to match hypervisor ABI.
+        */
+       BUILD_BUG_ON(sizeof(enum vmbus_channel_message_type) != sizeof(u32));
+
        if (message_type == HVMSG_NONE)
                /* no msg */
                return;