lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 3 Jun 2008 21:59:54 -0600
From:	Matthew Wilcox <matthew@....cx>
To:	Balbir Singh <balbir@...ux.vnet.ibm.com>
Cc:	linux-fsdevel@...r.kernel.org,
	linux kernel mailing list <linux-kernel@...r.kernel.org>
Subject: Re: per_cpu_counter_sum lockdep warning

On Wed, Jun 04, 2008 at 08:57:16AM +0530, Balbir Singh wrote:
> Saw this warning on an x86_64 box, while booting up 2.6.26-rc4. Has anybody else
> seen it? Working on it?

I've neither seen it, nor am I working on it, but I can decode it.

> inconsistent {in-hardirq-W} -> {hardirq-on-W} usage.

Translation: "This lock was previously grabbed in hardirq context.  Now
someone's taking it in process context without interrupts disabled.
That could lead to a deadlock."

> init/1 [HC0[0]:SC0[0]:HE1:SE1] takes:
>  (&fbc->lock){+...}, at: [<ffffffff80386382>] __percpu_counter_sum+0xf/0x5a

That's the name of the lock -- &fbc->lock and the function where it
happens.

> {in-hardirq-W} state was registered at:
>   [<ffffffffffffffff>] 0xffffffffffffffff

Drat, no backtrace for the guy who took the lock in hardirq context.

> Call Trace:
>  [<ffffffff802518e6>] print_usage_bug+0x15e/0x16f
>  [<ffffffff8025281f>] mark_lock+0x22f/0x416
>  [<ffffffff80386382>] ? __percpu_counter_sum+0xf/0x5a
>  [<ffffffff80253576>] __lock_acquire+0x4e7/0xc8a
>  [<ffffffff80386382>] ? __percpu_counter_sum+0xf/0x5a
>  [<ffffffff80253da7>] lock_acquire+0x8e/0xb2
>  [<ffffffff80386382>] ? __percpu_counter_sum+0xf/0x5a
>  [<ffffffff805990d7>] _spin_lock+0x26/0x53
>  [<ffffffff80386382>] __percpu_counter_sum+0xf/0x5a
>  [<ffffffff803139e2>] ext3_statfs+0xd6/0x160

ext3_statfs was the one who asked for the lock to be taken without
disabling interrupts.


Some percpu counters are supposed to be used from interrupt context.
These are created with percpu_counter_init_irq.  Others are not and
should be created with percpu_counter_init.  It seems like someone's
made a mess of that rule.  This is likely to be a driver, IMO.  Perhaps
you could work on tracking this down?

-- 
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ