You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
scsi: scsi_debug: Fix buffer size of REPORT ZONES command
commit7db0e0c819upstream. According to ZBC and SPC specifications, the unit of ALLOCATION LENGTH field of REPORT ZONES command is byte. However, current scsi_debug implementation handles it as number of zones to calculate buffer size to report zones. When the ALLOCATION LENGTH has a large number, this results in too large buffer size and causes memory allocation failure. Fix the failure by handling ALLOCATION LENGTH as byte unit. Link: https://lore.kernel.org/r/20211207010638.124280-1-shinichiro.kawasaki@wdc.com Fixes:f0d1cf9378("scsi: scsi_debug: Add ZBC zone commands") Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
1e434d2687
commit
c4d2d7c935
@@ -4313,7 +4313,7 @@ static int resp_report_zones(struct scsi_cmnd *scp,
|
||||
rep_max_zones = min((alloc_len - 64) >> ilog2(RZONES_DESC_HD),
|
||||
max_zones);
|
||||
|
||||
arr = kcalloc(RZONES_DESC_HD, alloc_len, GFP_ATOMIC);
|
||||
arr = kzalloc(alloc_len, GFP_ATOMIC);
|
||||
if (!arr) {
|
||||
mk_sense_buffer(scp, ILLEGAL_REQUEST, INSUFF_RES_ASC,
|
||||
INSUFF_RES_ASCQ);
|
||||
|
||||
Reference in New Issue
Block a user