Andrey Vagin
8515736604
block: fix memory leaks on unplugging block device
All objects, which are allocated in blk_mq_register_disk, must be
released in blk_mq_unregister_disk.
I use a KVM virtual machine and virtio disk to reproduce this issue.
kmemleak: 18 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
$ cat /sys/kernel/debug/kmemleak | head -n 30
unreferenced object 0xffff8800b6636150 (size 8):
comm "kworker/0:2", pid 65, jiffies 4294809903 (age 86.358s)
hex dump (first 8 bytes):
76 69 72 74 69 6f 34 00 virtio4.
backtrace:
[<ffffffff8165d41e>] kmemleak_alloc+0x4e/0xb0
[<ffffffff8118cfc5>] __kmalloc_track_caller+0xf5/0x260
[<ffffffff81155b11>] kstrdup+0x31/0x60
[<ffffffff812242be>] sysfs_new_dirent+0x2e/0x140
[<ffffffff81224678>] create_dir+0x38/0xe0
[<ffffffff812249e3>] sysfs_create_dir_ns+0x73/0xc0
[<ffffffff8130dfa9>] kobject_add_internal+0xc9/0x340
[<ffffffff8130e535>] kobject_add+0x65/0xb0
[<ffffffff813f34f8>] device_add+0x128/0x660
[<ffffffff813f3a4a>] device_register+0x1a/0x20
[<ffffffff813ae6f8>] register_virtio_device+0x98/0xe0
[<ffffffff813b0cce>] virtio_pci_probe+0x12e/0x1c0
[<ffffffff81340675>] local_pci_probe+0x45/0xa0
[<ffffffff81341a51>] pci_device_probe+0x121/0x130
[<ffffffff813f67f7>] driver_probe_device+0x87/0x390
[<ffffffff813f6b3b>] __device_attach+0x3b/0x40
unreferenced object 0xffff8800b65aa1d8 (size 144):
Fixes: 320ae51fee (blk-mq: new multi-queue block IO queueing mechanism)
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
2013-12-06 09:18:02 -07:00 |
| .. |
|
partitions
|
block/partitions/efi.c: fix bound check
|
2013-11-21 16:42:27 -08:00 |
|
blk-cgroup.c
|
Merge branch 'for-3.12/core' of git://git.kernel.dk/linux-block
|
2013-09-22 15:00:11 -07:00 |
|
blk-cgroup.h
|
Update of blkg_stat and blkg_rwstat may happen in bh context.
|
2013-11-20 15:33:04 -07:00 |
|
blk-core.c
|
Merge branch 'blk-mq/core' into for-3.13/core
|
2013-11-08 09:08:12 -07:00 |
|
blk-exec.c
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
blk-flush.c
|
block: submit_bio_wait() conversions
|
2013-11-24 16:33:41 -07:00 |
|
blk-integrity.c
|
|
|
|
blk-ioc.c
|
block: cleanup removing dependency on bootmem headers
|
2013-11-08 19:43:48 -07:00 |
|
blk-iopoll.c
|
block: Replace __get_cpu_var uses
|
2013-11-08 08:59:58 -07:00 |
|
blk-lib.c
|
block: Do not call sector_div() with a 64-bit divisor
|
2013-11-08 09:04:46 -07:00 |
|
blk-map.c
|
|
|
|
blk-merge.c
|
blk-mq: don't disallow request merges for req->special being set
|
2013-10-29 12:11:47 -06:00 |
|
blk-mq-cpu.c
|
blk-mq: remove newly added instances of __cpuinit
|
2013-11-14 08:26:02 -07:00 |
|
blk-mq-cpumap.c
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
blk-mq-sysfs.c
|
block: fix memory leaks on unplugging block device
|
2013-12-06 09:18:02 -07:00 |
|
blk-mq-tag.c
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
blk-mq-tag.h
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
blk-mq.c
|
blk-mq: fix use-after-free of request
|
2013-12-05 10:50:39 -07:00 |
|
blk-mq.h
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
blk-settings.c
|
Merge branch 'for-3.13/core' of git://git.kernel.dk/linux-block
|
2013-11-14 12:08:14 +09:00 |
|
blk-softirq.c
|
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS
|
2013-11-15 09:32:22 +09:00 |
|
blk-sysfs.c
|
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS
|
2013-11-15 09:32:22 +09:00 |
|
blk-tag.c
|
block: Reserve only one queue tag for sync IO if only 3 tags are available
|
2013-06-28 21:32:27 +02:00 |
|
blk-throttle.c
|
block: Use u64_stats_init() to initialize seqcounts
|
2013-11-13 13:54:08 +01:00 |
|
blk-timeout.c
|
Merge branch 'blk-mq/core' into for-3.13/core
|
2013-11-08 09:08:12 -07:00 |
|
blk.h
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
bsg-lib.c
|
|
|
|
bsg.c
|
|
|
|
cfq-iosched.c
|
block: Use u64_stats_init() to initialize seqcounts
|
2013-11-13 13:54:08 +01:00 |
|
cmdline-parser.c
|
block: support embedded device command line partition
|
2013-09-11 15:56:57 -07:00 |
|
compat_ioctl.c
|
kernel-wide: fix missing validations on __get/__put/__copy_to/__copy_from_user()
|
2013-09-11 15:58:18 -07:00 |
|
deadline-iosched.c
|
block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
|
2013-09-11 13:22:03 -06:00 |
|
elevator.c
|
elevator: acquire q->sysfs_lock in elevator_change()
|
2013-11-08 09:00:13 -07:00 |
|
genhd.c
|
block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
|
2013-09-11 13:22:03 -06:00 |
|
ioctl.c
|
block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
|
2013-11-08 09:05:31 -07:00 |
|
Kconfig
|
block: change config option name for cmdline partition parsing
|
2013-09-30 14:31:02 -07:00 |
|
Kconfig.iosched
|
|
|
|
Makefile
|
blk-mq: new multi-queue block IO queueing mechanism
|
2013-10-25 11:56:00 +01:00 |
|
noop-iosched.c
|
elevator: Fix a race in elevator switching
|
2013-07-03 13:25:24 +02:00 |
|
partition-generic.c
|
|
|
|
scsi_ioctl.c
|
block: Use rw_copy_check_uvector()
|
2013-11-08 09:02:14 -07:00 |