• Arnd Bergmann's avatar
    3w-xxxx: fix mis-aligned struct accesses · e75c8f5a
    Arnd Bergmann authored
    commit 4bfaa5c4 upstream.
    
    Building an allmodconfig ARM kernel, I get multiple such
    warnings because of a spinlock contained in packed structure
    in the 3w-xxxx driver:
    
    ../drivers/scsi/3w-xxxx.c: In function 'tw_chrdev_ioctl':
    ../drivers/scsi/3w-xxxx.c:1001:68: warning: mis-aligned access used for structure member [-fstrict-volatile-bitfields]
        timeout = wait_event_timeout(tw_dev->ioctl_wqueue, tw_dev->chrdev_request_id == TW_IOCTL_CHRDEV_FREE, timeout);
                                                                        ^
    ../drivers/scsi/3w-xxxx.c:1001:68: note: when a volatile object spans multiple type-sized locations, the compiler must choose between using a single mis-aligned access to preserve the volatility, or using multiple aligned accesses to avoid runtime faults; this code may fail at runtime if the hardware does not allow this access
    
    The same bug apparently was present in 3w-sas and 3w-9xxx, but has been
    fixed in the past. This patch uses the same fix by moving the pragma
    in front of the TW_Device_Extension definition, so it only covers
    hardware structures.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarAdam Radford <aradford@gmail.com>
    Cc: Adam Radford <linuxraid@lsi.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    e75c8f5a
3w-xxxx.h 16.4 KB