stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>, Sasha Levin <sashal@kernel.org>,
	linux-block@vger.kernel.org
Subject: [PATCH AUTOSEL 5.0 18/67] paride/pf: cleanup queues when detection fails
Date: Fri, 29 Mar 2019 20:49:58 -0400	[thread overview]
Message-ID: <20190330005047.25998-18-sashal@kernel.org> (raw)
In-Reply-To: <20190330005047.25998-1-sashal@kernel.org>

From: Jens Axboe <axboe@kernel.dk>

[ Upstream commit 6ce59025f1182125e75c8d121daf44056b65dd1f ]

The driver allocates queues for all the units it potentially
supports. But if we fail to detect any drives, then we fail
loading the module without cleaning up those queues. This is
now evident with the switch to blk-mq, though the bug has
been there forever as far as I can tell.

Also fix cleanup through regular module exit.

Reported-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/block/paride/pf.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/block/paride/pf.c b/drivers/block/paride/pf.c
index e92e7a8eeeb2..103b617cdc31 100644
--- a/drivers/block/paride/pf.c
+++ b/drivers/block/paride/pf.c
@@ -761,8 +761,12 @@ static int pf_detect(void)
 		return 0;
 
 	printk("%s: No ATAPI disk detected\n", name);
-	for (pf = units, unit = 0; unit < PF_UNITS; pf++, unit++)
+	for (pf = units, unit = 0; unit < PF_UNITS; pf++, unit++) {
+		blk_cleanup_queue(pf->disk->queue);
+		pf->disk->queue = NULL;
+		blk_mq_free_tag_set(&pf->tag_set);
 		put_disk(pf->disk);
+	}
 	pi_unregister_driver(par_drv);
 	return -1;
 }
@@ -1047,13 +1051,15 @@ static void __exit pf_exit(void)
 	int unit;
 	unregister_blkdev(major, name);
 	for (pf = units, unit = 0; unit < PF_UNITS; pf++, unit++) {
-		if (!pf->present)
-			continue;
-		del_gendisk(pf->disk);
+		if (pf->present)
+			del_gendisk(pf->disk);
+
 		blk_cleanup_queue(pf->disk->queue);
 		blk_mq_free_tag_set(&pf->tag_set);
 		put_disk(pf->disk);
-		pi_release(pf->pi);
+
+		if (pf->present)
+			pi_release(pf->pi);
 	}
 }
 
-- 
2.19.1


  parent reply	other threads:[~2019-03-30  1:11 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-30  0:49 [PATCH AUTOSEL 5.0 01/67] ARC: u-boot args: check that magic number is correct Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 02/67] arc: hsdk_defconfig: Enable CONFIG_BLK_DEV_RAM Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 03/67] inotify: Fix fsnotify_mark refcount leak in inotify_update_existing_watch() Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 04/67] perf/core: Restore mmap record type correctly Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 05/67] perf data: Don't store auxtrace index for directory data file Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 06/67] mips: bcm47xx: Enable USB power on Netgear WNDR3400v2 Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 07/67] ext4: avoid panic during forced reboot Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 08/67] ext4: add missing brelse() in add_new_gdb_meta_bg() Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 09/67] ext4: report real fs size after failed resize Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 10/67] ALSA: echoaudio: add a check for ioremap_nocache Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 11/67] ALSA: sb8: add a check for request_region Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 12/67] auxdisplay: hd44780: Fix memory leak on ->remove() Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 13/67] drm/udl: use drm_gem_object_put_unlocked Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 14/67] IB/mlx4: Fix race condition between catas error reset and aliasguid flows Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 15/67] i40iw: Avoid panic when handling the inetdev event Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 16/67] mmc: davinci: remove extraneous __init annotation Sasha Levin
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 17/67] ALSA: opl3: fix mismatch between snd_opl3_drum_switch definition and declaration Sasha Levin
2019-03-30  0:49 ` Sasha Levin [this message]
2019-03-30  0:49 ` [PATCH AUTOSEL 5.0 19/67] paride/pcd: cleanup queues when detection fails Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 20/67] thermal/intel_powerclamp: fix __percpu declaration of worker_data Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 21/67] thermal: samsung: Fix incorrect check after code merge Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 22/67] thermal: bcm2835: Fix crash in bcm2835_thermal_debugfs Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 23/67] thermal/int340x_thermal: Add additional UUIDs Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 24/67] thermal/int340x_thermal: fix mode setting Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 25/67] thermal/intel_powerclamp: fix truncated kthread name Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 26/67] scsi: iscsi: flush running unbind operations when removing a session Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 27/67] sched/cpufreq: Fix 32-bit math overflow Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 28/67] sched/core: Fix buffer overflow in cgroup2 property cpu.max Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 29/67] x86/mm: Don't leak kernel addresses Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 30/67] tools/power turbostat: return the exit status of a command Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 31/67] scsi: core: Also call destroy_rcu_head() for passthrough requests Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 32/67] scsi: qla2xxx: Fix NULL pointer crash due to stale CPUID Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 33/67] perf stat: Fix --no-scale Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 34/67] perf list: Don't forget to drop the reference to the allocated thread_map Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 35/67] perf tools: Fix errors under optimization level '-Og' Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 36/67] perf config: Fix an error in the config template documentation Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 37/67] perf config: Fix a memory leak in collect_config() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 38/67] perf build-id: Fix memory leak in print_sdt_events() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 39/67] perf top: Delete the evlist before perf_session, fixing heap-use-after-free issue Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 40/67] perf top: Fix error handling in cmd_top() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 41/67] perf hist: Add missing map__put() in error case Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 42/67] perf map: Remove map from 'names' tree in __maps__remove() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 43/67] perf maps: Purge all maps from the 'names' tree Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 44/67] perf top: Fix global-buffer-overflow issue Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 45/67] perf evsel: Free evsel->counts in perf_evsel__exit() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 46/67] perf tests: Fix a memory leak of cpu_map object in the openat_syscall_event_on_all_cpus test Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 47/67] perf tests: Fix memory leak by expr__find_other() in test__expr() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 48/67] perf tests: Fix a memory leak in test__perf_evsel__tp_sched_test() Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 49/67] ACPI / utils: Drop reference in test for device presence Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 50/67] PM / Domains: Avoid a potential deadlock Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 51/67] blk-iolatency: #include "blk.h" Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 52/67] drm/exynos/mixer: fix MIXER shadow registry synchronisation code Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 53/67] irqchip/stm32: Don't clear rising/falling config registers at init Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 54/67] irqchip/stm32: Don't set rising configuration " Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 55/67] irqchip/mbigen: Don't clear eventid when freeing an MSI Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 56/67] x86/hpet: Prevent potential NULL pointer dereference Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 57/67] x86/hyperv: " Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 58/67] x86/cpu/cyrix: Use correct macros for Cyrix calls on Geode processors Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 59/67] drm/nouveau/debugfs: Fix check of pm_runtime_get_sync failure Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 60/67] iommu/vt-d: Check capability before disabling protected memory Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 61/67] iommu/vt-d: Save the right domain ID used by hardware Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 62/67] x86/hw_breakpoints: Make default case in hw_breakpoint_arch_parse() return an error Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 63/67] cifs: fix that return -EINVAL when do dedupe operation Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 64/67] fix incorrect error code mapping for OBJECTID_NOT_FOUND Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 65/67] cifs: Fix slab-out-of-bounds when tracing SMB tcon Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 66/67] x86/gart: Exclude GART aperture from kcore Sasha Levin
2019-03-30  0:50 ` [PATCH AUTOSEL 5.0 67/67] ext4: prohibit fstrim in norecovery mode Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190330005047.25998-18-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).