summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2017-03-12 08:17:00 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-12 08:17:00 +0000
commitfbf3cf0c8300dcaf4ac03815ef6330367d15e25b (patch)
tree30a9b273d95570b6054962a3db3ff169a7baaa41
parent2e4caeeccf888e39c0165b4f884b84db12eb2428 (diff)
parentea240cfed99bda8fc1774801cb9da355e66dc7e1 (diff)
sd: get disk reference in sd_check_events()
am: ea240cfed9 Change-Id: Ie5d8f2f3588859d8a4f4466c158223afbf8e2ecb
-rw-r--r--drivers/scsi/sd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 6ee50742f6a5..78430ef28ea4 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1398,11 +1398,15 @@ static int media_not_present(struct scsi_disk *sdkp,
**/
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;
}