diff options
author | Joe Lawrence <Joe.Lawrence@stratus.com> | 2013-03-05 10:57:56 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-04-06 11:14:20 +0100 |
commit | 2b5bebccd282f2527d17ac90cf3ad0d486dd89d8 (patch) | |
tree | 6fdef4e36e3e4d4cfef58d37c06bcfd86ff63557 /drivers/iommu | |
parent | 95c9f4d4da6c4e445a9dd58c8382356520ea91a0 (diff) | |
download | op-kernel-dev-2b5bebccd282f2527d17ac90cf3ad0d486dd89d8.zip op-kernel-dev-2b5bebccd282f2527d17ac90cf3ad0d486dd89d8.tar.gz |
[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/iommu')
0 files changed, 0 insertions, 0 deletions