Skip to content

Commit 534cf52

Browse files
Christoph Hellwigaxboe
authored andcommitted
sd: delay calling free_opal_dev
Call free_opal_dev from scsi_disk_release as the opal_dev field is accessed from the ioctl handler, which isn't synchronized vs sd_release and thus can be accessed during or after sd_release was called. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20220308055200.735835-7-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent c76c46f commit 534cf52

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

drivers/scsi/sd.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3632,8 +3632,6 @@ static int sd_remove(struct device *dev)
36323632
del_gendisk(sdkp->disk);
36333633
sd_shutdown(dev);
36343634

3635-
free_opal_dev(sdkp->opal_dev);
3636-
36373635
mutex_lock(&sd_ref_mutex);
36383636
dev_set_drvdata(dev, NULL);
36393637
put_device(&sdkp->disk_dev);
@@ -3675,6 +3673,7 @@ static void scsi_disk_release(struct device *dev)
36753673

36763674
sd_zbc_release_disk(sdkp);
36773675
put_device(&sdkp->device->sdev_gendev);
3676+
free_opal_dev(sdkp->opal_dev);
36783677

36793678
kfree(sdkp);
36803679
}

0 commit comments

Comments
 (0)