Skip to content
  • Geert Uytterhoeven's avatar
    65ece6de
    virtchnl: Add missing explicit padding to structures · 65ece6de
    Geert Uytterhoeven authored
    
    
    On e.g. m68k, the alignment of 32-bit values is only 2 bytes, leading
    to the following:
    
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:577:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(272, virtchnl_filter);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:577:32: error: enumerator value for ‘virtchnl_static_assert_virtchnl_filter’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(272, virtchnl_filter);
    				    ^~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:619:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_pf_event);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:619:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_pf_event’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_pf_event);
    				   ^~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:640:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_iwarp_qv_info);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:640:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_iwarp_qv_info’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_iwarp_qv_info);
    				   ^~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:647:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_iwarp_qvlist_info);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:647:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_iwarp_qvlist_info’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_iwarp_qvlist_info);
    				   ^~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
    
    Fix this by adding explicit padding to structures with holes.
    
    Reported-by: default avatar <noreply@ellerman.id.au>
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    65ece6de
    virtchnl: Add missing explicit padding to structures
    Geert Uytterhoeven authored
    
    
    On e.g. m68k, the alignment of 32-bit values is only 2 bytes, leading
    to the following:
    
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:577:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(272, virtchnl_filter);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:577:32: error: enumerator value for ‘virtchnl_static_assert_virtchnl_filter’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(272, virtchnl_filter);
    				    ^~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:619:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_pf_event);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:619:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_pf_event’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_pf_event);
    				   ^~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:640:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_iwarp_qv_info);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:640:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_iwarp_qv_info’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_iwarp_qv_info);
    				   ^~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
        ./include/linux/avf/virtchnl.h:147:36: warning: division by zero [-Wdiv-by-zero]
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    					^
        ./include/linux/avf/virtchnl.h:647:1: note: in expansion of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_iwarp_qvlist_info);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:647:31: error: enumerator value for ‘virtchnl_static_assert_virtchnl_iwarp_qvlist_info’ is not an integer constant
         VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_iwarp_qvlist_info);
    				   ^~~~~~~~~~~~~~~~~~~~~~~~~~
        ./include/linux/avf/virtchnl.h:147:53: note: in definition of macro ‘VIRTCHNL_CHECK_STRUCT_LEN’
          { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
    							 ^
    
    Fix this by adding explicit padding to structures with holes.
    
    Reported-by: default avatar <noreply@ellerman.id.au>
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Loading