kernel-testers.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Jens Axboe <jaxboe@fusionio.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Maciej Rutecki <maciej.rutecki@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Kernel Testers List <kernel-testers@vger.kernel.org>,
	Network Development <netdev@vger.kernel.org>,
	Linux ACPI <linux-acpi@vger.kernel.org>,
	Linux PM List <linux-pm@lists.linux-foundation.org>,
	Linux SCSI List <linux-scsi@vger.kernel.org>,
	Linux Wireless List <linux-wireless@vger.kernel.org>,
	DRI <dri-devel@lists.freedesktop.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	stable@kernel.org, Maciej Rutecki <maciej.rutecki@gmail.com>
Subject: [PATCH RESEND block#for-2.6.36] block_dev: always serialize exclusive open attempts
Date: Wed, 04 Aug 2010 17:59:39 +0200	[thread overview]
Message-ID: <4C598E6B.7050405@gmail.com> (raw)
In-Reply-To: <4C56F30D.3020304@kernel.org>

bd_prepare_to_claim() incorrectly allowed multiple attempts for
exclusive open to progress in parallel if the attempting holders are
identical.  This triggered BUG_ON() as reported in the following bug.

  https://bugzilla.kernel.org/show_bug.cgi?id=16393

__bd_abort_claiming() is used to finish claiming blocks and doesn't
work if multiple openers are inside a claiming block.  Allowing
multiple parallel open attempts to continue doesn't gain anything as
those are serialized down in the call chain anyway.  Fix it by always
allowing only single open attempt in a claiming block.

This problem can easily be reproduced by adding a delay after
bd_prepare_to_claim() and attempting to mount two partitions of a
disk.

stable: only applicable to v2.6.35

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: stable@kernel.org
---
Oops, had the wrong reported-by credit.  Updated.

Thanks.

 fs/block_dev.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/block_dev.c b/fs/block_dev.c
index 99d6af8..b3171fb 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -681,8 +681,8 @@ retry:
 	if (!bd_may_claim(bdev, whole, holder))
 		return -EBUSY;

-	/* if someone else is claiming, wait for it to finish */
-	if (whole->bd_claiming && whole->bd_claiming != holder) {
+	/* if claiming is already in progress, wait for it to finish */
+	if (whole->bd_claiming) {
 		wait_queue_head_t *wq = bit_waitqueue(&whole->bd_claiming, 0);
 		DEFINE_WAIT(wait);


  parent reply	other threads:[~2010-08-04 15:59 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-01 13:46 2.6.35-rc6-git6: Reported regressions from 2.6.34 Rafael J. Wysocki
2010-08-01 13:46 ` [Bug #16173] After uncompressing the kernel, at boot time, the server hangs Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16215] sysfs: cannot create duplicate filename '/class/net/bnep0' Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16307] i915 in kernel 2.6.35-rc3, high number of wakeups Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16221] 2.6.35-rc2-git5 -- [drm:drm_mode_getfb] *ERROR* invalid framebuffer id Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16228] BUG/boot failure on Dell Precision T3500 (pci/ahci_stop_engine) Rafael J. Wysocki
2010-08-02  0:27   ` Bjorn Helgaas
2010-08-01 13:52 ` [Bug #16265] Why is kslowd accumulating so much CPU time? Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16278] lvm snapshot causes deadlock in 2.6.35 Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16184] Container, X86-64, i386, iptables rule Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16322] WARNING: at /arch/x86/include/asm/processor.h:1005 read_measured_perf_ctrs+0x5a/0x70() Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16310] arm omap invalid module format Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16312] WARNING: at fs/fs-writeback.c:1127 __mark_inode_dirty Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16337] general protection fault: 0000 [#1] SMP Rafael J. Wysocki
2010-08-02  1:01   ` Justin P. Mattock
     [not found]     ` <4C5618DA.1020407-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2010-08-02 13:34       ` Rafael J. Wysocki
2010-08-02 13:47         ` Justin P. Mattock
2010-08-01 13:52 ` [Bug #16369] Yet another 2.6.35 regression (AGP)? Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16383] Regression with e1000e from 2.6.34.1 to 2.6.35-rc5 Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16380] Loop devices act strangely in 2.6.35 Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16365] kernel BUG at fs/btrfs/extent-tree.c:1353 Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16393] kernel BUG at fs/block_dev.c:765! Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16396] [bisected] resume from suspend freezes system Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16399] perf failed with kernel 2.6.35-rc Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16400] 2.6.35-rc5 inconsistent lock state Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16423] netfilter/iptables stopped logging 2.6.35-rc Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16405] Brightness Adjustment on Toshiba nb305 Netbooks is non-functional Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16406] Badness with the kernel version 2.6.35-rc1-git1 running on P6 box Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16448] 2.6.35-rc5 panic at __br_deliver+0x64/0xe0 with kvm bridge networking Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16458] Bluetooth disabled after resume Rafael J. Wysocki
2010-08-02 12:19   ` Oliver Neukum
2010-08-01 13:52 ` [Bug #16450] MTD drivers cannot be unloaded Rafael J. Wysocki
2010-08-01 13:52 ` [Bug #16462] unable to connect to AP on legal channels 12/13 Rafael J. Wysocki
2010-08-02 14:58   ` Daniel J Blueman
     [not found]     ` <AANLkTikmgrKTLtgs1+h+BkS5X6qt9bP1wMDL4Gu7L3u3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-08-02 15:49       ` Justin P. Mattock
2010-08-02 15:51       ` Justin P. Mattock
2010-08-01 14:48 ` 2.6.35-rc6-git6: Reported regressions from 2.6.34 Stefan Richter
2010-08-01 15:50   ` Rafael J. Wysocki
2010-08-01 18:01 ` Linus Torvalds
     [not found]   ` <AANLkTimcH7+Bq1UEbaSU7SQpzArPgmSLegiqE13V8=CF-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-08-01 21:37     ` Rafael J. Wysocki
2010-08-02 16:32   ` Tejun Heo
2010-08-04 15:40     ` [PATCH block#for-2.6.36] block_dev: always serialize exclusive open attempts Tejun Heo
2010-08-04 15:59     ` Tejun Heo [this message]
2010-08-05  9:02       ` [PATCH RESEND " Jens Axboe
     [not found]         ` <4C5A7E33.3060101-5c4llco8/ftWk0Htik3J/w@public.gmane.org>
2010-08-05  9:17           ` Markus Trippelsdorf
     [not found]             ` <20100805091704.GA1772-joY5NpejW+Hx3b7vapvTcQ@public.gmane.org>
2010-08-05  9:20               ` Jens Axboe
2010-08-01 19:39 ` 2.6.35-rc6-git6: Reported regressions from 2.6.34 Larry Finger

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=4C598E6B.7050405@gmail.com \
    --to=htejun@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jaxboe@fusionio.com \
    --cc=kernel-testers@vger.kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=maciej.rutecki@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.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).