summaryrefslogtreecommitdiff
path: root/drivers/scsi/ipr.c
diff options
context:
space:
mode:
authorJoe Lawrence <Joe.Lawrence@stratus.com>2013-03-05 10:57:56 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-04-06 11:14:20 +0100
commit2b5bebccd282f2527d17ac90cf3ad0d486dd89d8 (patch)
tree6fdef4e36e3e4d4cfef58d37c06bcfd86ff63557 /drivers/scsi/ipr.c
parent95c9f4d4da6c4e445a9dd58c8382356520ea91a0 (diff)
downloadlwn-2b5bebccd282f2527d17ac90cf3ad0d486dd89d8.tar.gz
lwn-2b5bebccd282f2527d17ac90cf3ad0d486dd89d8.zip
[SCSI] st: Take additional queue ref in st_probe
This patch fixes a reference count bug in the SCSI tape driver which can be reproduced with the following: * Boot with slub_debug=FZPU, tape drive attached * echo 1 > /sys/devices/... tape device pci path .../remove * Wait for device removal * echo 1 > /sys/kernel/slab/blkdev_queue/validate * Slub debug complains about corrupted poison pattern In commit 523e1d39 (block: make gendisk hold a reference to its queue) add_disk() and disk_release() were modified to get/put an additional reference on a disk queue to fix a reference counting discrepency between bdev release and SCSI device removal. The ST driver never calls add_disk(), so this commit introduced an extra kref put when the ST driver frees its struct gendisk. Attempts were made to fix this bug at the block level [1] but later abandoned due to floppy driver issues [2]. [1] https://lkml.org/lkml/2012/8/27/354 [2] https://lkml.org/lkml/2012/9/22/113 Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com> Tested-by: Ewan D. Milne <emilne@redhat.com> Acked-by: Kai Mäkisara <Kai.Makisara@kolumbus.fi> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/ipr.c')
0 files changed, 0 insertions, 0 deletions