Skip to content
  • Arnd Bergmann's avatar
    32221df6
    ath10k: fix ath10k_pci struct layout · 32221df6
    Arnd Bergmann authored
    
    
    gcc-10 correctly points out a bug with a zero-length array in
    struct ath10k_pci:
    
    drivers/net/wireless/ath/ath10k/ahb.c: In function 'ath10k_ahb_remove':
    drivers/net/wireless/ath/ath10k/ahb.c:30:9: error: array subscript 0 is outside the bounds of an interior zero-length array 'struct ath10k_ahb[0]' [-Werror=zero-length-bounds]
       30 |  return &((struct ath10k_pci *)ar->drv_priv)->ahb[0];
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from drivers/net/wireless/ath/ath10k/ahb.c:13:
    drivers/net/wireless/ath/ath10k/pci.h:185:20: note: while referencing 'ahb'
      185 |  struct ath10k_ahb ahb[0];
          |                    ^~~
    
    The last addition to the struct ignored the comments and added
    new members behind the array that must remain last.
    
    Change it to a flexible-array member and move it last again to
    make it work correctly, prevent the same thing from happening
    again (all compilers warn about flexible-array members in the
    middle of a struct) and get it to build without warnings.
    
    Fixes: 521fc37b ("ath10k: Avoid override CE5 configuration for QCA99X0 chipsets")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200509120707.188595-2-arnd@arndb.de
    32221df6
    ath10k: fix ath10k_pci struct layout
    Arnd Bergmann authored
    
    
    gcc-10 correctly points out a bug with a zero-length array in
    struct ath10k_pci:
    
    drivers/net/wireless/ath/ath10k/ahb.c: In function 'ath10k_ahb_remove':
    drivers/net/wireless/ath/ath10k/ahb.c:30:9: error: array subscript 0 is outside the bounds of an interior zero-length array 'struct ath10k_ahb[0]' [-Werror=zero-length-bounds]
       30 |  return &((struct ath10k_pci *)ar->drv_priv)->ahb[0];
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from drivers/net/wireless/ath/ath10k/ahb.c:13:
    drivers/net/wireless/ath/ath10k/pci.h:185:20: note: while referencing 'ahb'
      185 |  struct ath10k_ahb ahb[0];
          |                    ^~~
    
    The last addition to the struct ignored the comments and added
    new members behind the array that must remain last.
    
    Change it to a flexible-array member and move it last again to
    make it work correctly, prevent the same thing from happening
    again (all compilers warn about flexible-array members in the
    middle of a struct) and get it to build without warnings.
    
    Fixes: 521fc37b ("ath10k: Avoid override CE5 configuration for QCA99X0 chipsets")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200509120707.188595-2-arnd@arndb.de
Loading