Loading
scsi: ufs: core: Fix a deadlock in the frequency scaling code
Commit 08b12cda ("scsi: ufs: core: Switch to scsi_get_internal_cmd()") accidentally introduced a deadlock in the frequency scaling code. ufshcd_clock_scaling_unprepare() may submit a device management command while SCSI command processing is blocked. The deadlock was introduced by using the SCSI core for submitting device management commands (scsi_get_internal_cmd() + blk_execute_rq()). Fix this deadlock by calling blk_mq_unquiesce_tagset() before any device management commands are submitted by ufshcd_clock_scaling_unprepare(). Fixes: 08b12cda ("scsi: ufs: core: Switch to scsi_get_internal_cmd()") Reported-by:Manivannan Sadhasivam <mani@kernel.org> Reported-by:
Roger Shimizu <rosh@debian.org> Closes: https://lore.kernel.org/linux-scsi/ehorjaflathzab5oekx2nae2zss5vi2r36yqkqsfjb2fgsifz2@yk3us5g3igow/ Tested-by:
Roger Shimizu <rosh@debian.org> Cc: Nitin Rawat <nitin.rawat@oss.qualcomm.com> Signed-off-by:
Bart Van Assche <bvanassche@acm.org> Reviewed-by:
Peter Wang <peter.wang@mediatek.com> Reviewed-by:
Nitin Rawat <nitin.rawat@oss.qualcomm.com> Tested-by: Alexey Klimov <alexey.klimov@linaro.org> # RB5 board Link: https://patch.msgid.link/20251204181548.1006696-1-bvanassche@acm.org Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com>