• Kees Cook's avatar
    scsi: aacraid: Allocate cmd_priv with scsicmd · 7ab734fc
    Kees Cook authored
    The aac_priv() helper assumes that the private cmd area immediately follows
    struct scsi_cmnd. Allocate this space as part of scsicmd, else there is a
    risk of heap overflow. Seen with GCC 13:
    
    ../drivers/scsi/aacraid/aachba.c: In function 'aac_probe_container':
    ../drivers/scsi/aacraid/aachba.c:841:26: warning: array subscript 16 is outside array bounds of 'void[392]' [-Warray-bounds=]
      841 |         status = cmd_priv->status;
          |                          ^~
    In file included from ../include/linux/resource_ext.h:11,
                     from ../include/linux/pci.h:40,
                     from ../drivers/scsi/aacraid/aachba.c:22:
    In function 'kmalloc',
        inlined from 'kzalloc' at ../include/linux/slab.h:720:9,
        inlined from 'aac_probe_container' at ../drivers/scsi/aacraid/aachba.c:821:30:
    ../include/linux/slab.h:580:24: note: at offset 392 into object of size 392 allocated by 'kmalloc_trace'
      580 |                 return kmalloc_trace(
          |                        ^~~~~~~~~~~~~~
      581 |                                 kmalloc_caches[kmalloc_type(flags)][index],
          |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      582 |                                 flags, size);
          |                                 ~~~~~~~~~~~~
    
    Fixes: 76a3451b ("scsi: aacraid: Move the SCSI pointer to private command data")
    Link: https://lore.kernel.org/r/20230128000409.never.976-kees@kernel.org
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Himanshu Madhani <himanshu.madhani@oracle.com>
    Cc: Adaptec OEM Raid Solutions <aacraid@microsemi.com>
    Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: linux-scsi@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Reviewed-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    7ab734fc
aachba.c 113 KB