Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

usb-storage: fix queue freeze vs limits lock order

Match the locking order used by the core block code by only freezing
the queue after taking the limits lock using the
queue_limits_commit_update_frozen helper.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20250110054726.1499538-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Christoph Hellwig and committed by
Jens Axboe
1233751f f3dec61d

+1 -4
+1 -4
drivers/usb/storage/scsiglue.c
··· 592 592 if (sscanf(buf, "%hu", &ms) <= 0) 593 593 return -EINVAL; 594 594 595 - blk_mq_freeze_queue(sdev->request_queue); 596 595 lim = queue_limits_start_update(sdev->request_queue); 597 596 lim.max_hw_sectors = ms; 598 - ret = queue_limits_commit_update(sdev->request_queue, &lim); 599 - blk_mq_unfreeze_queue(sdev->request_queue); 600 - 597 + ret = queue_limits_commit_update_frozen(sdev->request_queue, &lim); 601 598 if (ret) 602 599 return ret; 603 600 return count;