scsi: Check sense buffer size at build time
authorKees Cook <keescook@chromium.org>
Tue, 31 Jul 2018 19:51:54 +0000 (12:51 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 2 Aug 2018 21:23:51 +0000 (15:23 -0600)
commit704f83928c8e7da6e06144569efb15dec73278e8
tree6603bc65758e0c761fc773b8341bf9875dc5fe76
parent429296cc51c4cf145b240a78c8d68545e4d67e4c
scsi: Check sense buffer size at build time

To avoid introducing problems like those fixed in commit f7068114d45e
("sr: pass down correctly sized SCSI sense buffer"), this creates a macro
wrapper for scsi_execute() that verifies the size of the sense buffer
similar to what was done for command string sizes in commit 3756f6401c30
("exec: avoid gcc-8 warning for get_task_comm").

Another solution could be to add a length argument to scsi_execute(),
but this function already takes a lot of arguments and Jens was not fond
of that approach.

Additionally, this moves the SCSI_SENSE_BUFFERSIZE definition into
scsi_device.h, and removes a redundant include for scsi_device.h from
scsi_cmnd.h.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/scsi/scsi_lib.c
include/scsi/scsi_cmnd.h
include/scsi/scsi_device.h