PATCH: st.c: Fix blk_get_queue usage
Subsystems (2)
Hi,
in st_probe(), st.c I stumbled across what I'd call a minor problem.
So I'd like to suggest the following patch.
Best Regards,
Bodo
P.S.: Please CC me, I'm not on the list.
---------------------------------------------------------------------
From: Bodo Stroesser <[email protected]>
Date: Thu, 14 Nov 2013 14:35:00 +0100
Subject: [PATCH] sg: fix blk_get_queue usage
If blk_queue_get() in st_probe fails, disk->queue must not be set to SDp->request_queue, as that would result in put_disk() dropping a not taken reference.
Thus, disk->queue should be set only after a successful blk_queue_get().
---
drivers/scsi/st.c +1 -1
@@ -4107,11 +4107,11 @@kref_init (&tpnt->kref); tpnt->disk = disk; disk->private_data = &tpnt->driver; - disk->queue = SDp->request_queue;/* SCSI tape doesn't register this gendisk via add_disk(). Manually * take queue reference that release_disk() expects. */ if (blk_get_queue (disk->queue)) goto out_put_disk; + disk->queue = SDp->request_queue; tpnt->driver = &st_template; tpnt->device = SDp;
Quoted 32 lines · Bodo Stroesser
Hi,
in
st_probe(),st.cI stumbled across what I'd call a minor problem.So I'd like to suggest the following patch.
Best Regards,
Bodo
P.S.: Please CC me, I'm not on the list.---------------------------------------------------------------------
From: Bodo Stroesser <[email protected]>
Date: Thu, 14 Nov 2013 14:35:00 +0100
Subject: [PATCH] sg: fixblk_get_queueusageIf
blk_queue_get()inst_probefails,disk->queuemust not be set toSDp->request_queue, as that would result input_disk()dropping a not taken reference.Thus,
disk->queueshould be set only after a successfulblk_queue_get().Signed-off-by Bodo Stroesser <[email protected]>---
drivers/scsi/st.c line 4111
Quoted 6 lines
drivers/scsi/st.c +0
-1@@ -4107,11 +4107,11 @@kref_init (&tpnt->kref); tpnt->disk = disk; disk->private_data = &tpnt->driver; - disk->queue = SDp->request_queue;/* SCSI tape doesn't register this gendisk via add_disk(). Manually * take queue reference that release_disk() expects. */
With this patch, blk_get_queue() is not called with the correct argument. Maybe change the call to blk_get_queue(SDp->request_queue) ?
Quoted 10 lines
drivers/scsi/st.c +1
-0if (blk_get_queue (disk->queue)) goto out_put_disk; + disk->queue = SDp->request_queue; tpnt->driver = &st_template; tpnt->device = SDp--To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
;
Thanks,
Kai