All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: roger.larsson@e-gatan.se, linux-kernel@vger.kernel.org,
	mingo@elte.hu, rml@tech9.net, pavel@ucw.cz,
	netdev@vger.kernel.org
Subject: Re: PROBLEM: in_atomic() misuse all over the place
Date: Fri, 30 Jan 2009 21:49:33 -0800	[thread overview]
Message-ID: <20090130214933.1b91ea3e.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090131055508.GD18453@one.firstfloor.org>

On Sat, 31 Jan 2009 06:55:08 +0100 Andi Kleen <andi@firstfloor.org> wrote:

> > There's a bit of a problem here.  If someone accidentally uses
> > gfp_any() inside a spinlock, it will do a sleeping allocation on
> > non-preempt kernels and will do an atomic allocation on preemptible
> > kernels, so we won't get to see the warning which would allow us to fix
> > the bug.
> 
> Yes exporting the function to drivers is dangerous I agree because
> it's easy to abuse.
> 
> > Would using irq_count() work?  If so, that would fix this up.
> 
> There's nothing that works reliably to detect spinlocks on non
> preempt kernels.

Hang on.  You said

  That's typically for softirq vs non softirq, which is important for
  the network stack.

that's what in_softirq() does.

Now, if networking is indeed using in_atomic() to detect
are-we-inside-a-spinlock then networking is buggy.

If networking is _not_ doing that then we can safely switch it to
in_sortirq() or in_interrupt().  And this would reenable the bug
detection which networking's use of in_atomic() accidentally
suppressed.



  reply	other threads:[~2009-01-31  5:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-27 23:10 PROBLEM: in_atomic() misuse all over the place Roger Larsson
2009-01-28  0:12 ` Robert Hancock
2009-01-31 11:45   ` Joerg Roedel
2009-01-28 12:18 ` Andi Kleen
2009-01-31  0:03   ` Andrew Morton
2009-01-31  5:55     ` Andi Kleen
2009-01-31  5:49       ` Andrew Morton [this message]
2009-01-31  8:48         ` David Miller
2009-01-31  8:58           ` Andrew Morton
2009-02-04 16:17 ` Pavel Machek

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=20090130214933.1b91ea3e.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rml@tech9.net \
    --cc=roger.larsson@e-gatan.se \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.