Patch "sd: get disk reference in sd_check_events()" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
sd: get disk reference in sd_check_events()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sd-get-disk-reference-in-sd_check_events.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
eb72d0bb84eee5d0dc3044fd17b75e7101dabb57Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <[email protected]>
Date: Tue, 26 Apr 2016 08:06:58 +0200
Subject: sd: get disk reference in sd_check_events()
From: Hannes Reinecke <[email protected]>
commit eb72d0bb84eee5d0dc3044fd17b75e7101dabb57 upstream.
sd_check_events() is called asynchronously, and might race with device removal. So always take a disk reference when processing the event to avoid the device being removed while the event is processed.
--- drivers/scsi/sd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/scsi/sd.c +7 -2
@@ -1398,11 +1398,15 @@ static int media_not_present(struct scsi**/ static unsigned int sd_check_events (struct gendisk *disk,unsigned int clearing) { -struct scsi_disk *sdkp =scsi_disk (disk); -struct scsi_device *sdp = sdkp->device; +struct scsi_disk *sdkp =scsi_disk_get (disk); +struct scsi_device *sdp;struct scsi_sense_hdr *sshdr =NULL ;int retval; +if (!sdkp) +return 0 ; + + sdp = sdkp->device;SCSI_LOG_HLQUEUE (3 ,sd_printk (KERN_INFO , sdkp,"sd_check_events\n" ));/*
@@ -1459,6 +1463,7 @@ out:kfree (sshdr); retval = sdp->changed ?DISK_EVENT_MEDIA_CHANGE :0 ; sdp->changed =0 ; +scsi_disk_put (sdkp);return retval; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/sd-get-disk-reference-in-sd_check_events.patch queue-4.4/scsi-use-scsi_device_from_queue-for-scsi_dh.patch