]> git.itanic.dy.fi Git - linux-stable/commit
scsi: sg: Avoid race in error handling & drop bogus warn
authorAlexander Wetzel <Alexander@wetzel-home.de>
Mon, 1 Apr 2024 19:10:38 +0000 (21:10 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Apr 2024 22:22:12 +0000 (18:22 -0400)
commitd4e655c49f474deffaf5ed7e65034b8167ee39c8
tree66068321ade3d46097bf9d928f91fb036dcbbd77
parent2a26a11e9c258b14be6fd98f8a85f20ac1fff66e
scsi: sg: Avoid race in error handling & drop bogus warn

Commit 27f58c04a8f4 ("scsi: sg: Avoid sg device teardown race") introduced
an incorrect WARN_ON_ONCE() and missed a sequence where sg_device_destroy()
was used after scsi_device_put().

sg_device_destroy() is accessing the parent scsi_device request_queue which
will already be set to NULL when the preceding call to scsi_device_put()
removed the last reference to the parent scsi_device.

Drop the incorrect WARN_ON_ONCE() - allowing more than one concurrent
access to the sg device - and make sure sg_device_destroy() is not used
after scsi_device_put() in the error handling.

Link: https://lore.kernel.org/all/5375B275-D137-4D5F-BE25-6AF8ACAE41EF@linux.ibm.com
Fixes: 27f58c04a8f4 ("scsi: sg: Avoid sg device teardown race")
Cc: stable@vger.kernel.org
Signed-off-by: Alexander Wetzel <Alexander@wetzel-home.de>
Link: https://lore.kernel.org/r/20240401191038.18359-1-Alexander@wetzel-home.de
Tested-by: Sachin Sant <sachinp@linux.ibm.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/sg.c