ata: libata-scsi: Fix ata_msense_control_spgt2()
authorDamien Le Moal <dlemoal@kernel.org>
Mon, 23 Sep 2024 09:06:46 +0000 (18:06 +0900)
committerDamien Le Moal <dlemoal@kernel.org>
Tue, 24 Sep 2024 07:56:21 +0000 (16:56 +0900)
commit03a9cfc1314bf75cc7a83995f3a029a7ebf49c05
tree34c075f85bf2559d219a73af17e64e96f71c3e1b
parente5dd410acb34c7341a0a93b429dcf3dabf9e3323
ata: libata-scsi: Fix ata_msense_control_spgt2()

ata_msense_control_spgt2() can be called even for devices that do not
support CDL when the user requests the ALL_SUB_MPAGES mode sense page,
but for such device, this will cause a NULL pointer dereference as
dev->cdl is NULL. Similarly, we should not return any data if
ata_msense_control_spgt2() is called when the user requested the
CDL_T2A_SUB_MPAGE or CDL_T2B_SUB_MPAGE pages for a device that does not
support CDL.

Avoid this potential NULL pointer dereference by checking if the device
support CDL on entry to ata_msense_control_spgt2() and return 0 if it
does not support CDL.

Reported-by: syzbot+37757dc11ee77ef850bb@syzkaller.appspotmail.com
Tested-by: syzbot+37757dc11ee77ef850bb@syzkaller.appspotmail.com
Fixes: 602bcf212637 ("ata: libata: Improve CDL resource management")
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
drivers/ata/libata-scsi.c