lkml.org 
[lkml]   [2023]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 6.3 54/67] wifi: b43: fix incorrect __packed annotation
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    [ Upstream commit 212457ccbd60dba34f965e4ffbe62f0e4f970538 ]

    clang warns about an unpacked structure inside of a packed one:

    drivers/net/wireless/broadcom/b43/b43.h:654:4: error: field data within 'struct b43_iv' is less aligned than 'union (unnamed union at /home/arnd/arm-soc/drivers/net/wireless/broadcom/b43/b43.h:651:2)' and is usually due to 'struct b43_iv' being packed, which can lead to unaligned accesses [-Werror,-Wunaligned-access]

    The problem here is that the anonymous union has the default alignment
    from its members, apparently because the original author mixed up the
    placement of the __packed attribute by placing it next to the struct
    member rather than the union definition. As the struct itself is
    also marked as __packed, there is no need to mark its members, so just
    move the annotation to the inner type instead.

    As Michael noted, the same problem is present in b43legacy, so
    change both at the same time.

    Acked-by: Michael Büsch <m@bues.ch>
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
    Link: https://lore.kernel.org/oe-kbuild-all/202305160749.ay1HAoyP-lkp@intel.com/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20230516183442.536589-1-arnd@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/broadcom/b43/b43.h | 2 +-
    drivers/net/wireless/broadcom/b43legacy/b43legacy.h | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/wireless/broadcom/b43/b43.h b/drivers/net/wireless/broadcom/b43/b43.h
    index 9fc7c088a539e..67b4bac048e58 100644
    --- a/drivers/net/wireless/broadcom/b43/b43.h
    +++ b/drivers/net/wireless/broadcom/b43/b43.h
    @@ -651,7 +651,7 @@ struct b43_iv {
    union {
    __be16 d16;
    __be32 d32;
    - } data __packed;
    + } __packed data;
    } __packed;


    diff --git a/drivers/net/wireless/broadcom/b43legacy/b43legacy.h b/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
    index 6b0cec467938f..f49365d14619f 100644
    --- a/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
    +++ b/drivers/net/wireless/broadcom/b43legacy/b43legacy.h
    @@ -379,7 +379,7 @@ struct b43legacy_iv {
    union {
    __be16 d16;
    __be32 d32;
    - } data __packed;
    + } __packed data;
    } __packed;

    #define B43legacy_PHYMODE(phytype) (1 << (phytype))
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-05-25 22:39    [W:4.784 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site