• Marcel Holtmann's avatar
    Bluetooth: Fix endian and alignment issue with ath3k version handling · 72dd2b2a
    Marcel Holtmann authored
    The ath3k driver is treating the version information badly when it
    comes to loading the right firmware version and comparing that it
    actually matches with the hardware.
    
    Initially this showed up as this:
    
      CHECK   drivers/bluetooth/ath3k.c
    drivers/bluetooth/ath3k.c:373:17: warning: cast to restricted __le32
    drivers/bluetooth/ath3k.c:435:17: warning: cast to restricted __le32
    
    However when fixing this by actually using __packed and __le32 for
    the ath3_version structure, more issues came up:
    
      CHECK   drivers/bluetooth/ath3k.c
    drivers/bluetooth/ath3k.c:381:32: warning: incorrect type in assignment (different base types)
    drivers/bluetooth/ath3k.c:381:32:    expected restricted __le32 [usertype] rom_version
    drivers/bluetooth/ath3k.c:381:32:    got int [signed] <noident>
    drivers/bluetooth/ath3k.c:382:34: warning: incorrect type in assignment (different base types)
    drivers/bluetooth/ath3k.c:382:34:    expected restricted __le32 [usertype] build_version
    drivers/bluetooth/ath3k.c:382:34:    got int [signed] <noident>
    drivers/bluetooth/ath3k.c:386:28: warning: restricted __le32 degrades to integer
    drivers/bluetooth/ath3k.c:386:56: warning: restricted __le32 degrades to integer
    
    This patch fixes every instance of the firmware version handling and
    makes sure it is endian safe and uses proper unaligned access.
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
    72dd2b2a
ath3k.c 13.9 KB