linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Byungchul Park <byungchul.park@lge.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Michal Hocko <mhocko@kernel.org>,
	Dmitry Vyukov <dvyukov@google.com>,
	syzbot 
	<bot+e7353c7141ff7cbb718e4c888a14fa92de41ebaa@syzkaller.appspotmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Johannes Weiner <hannes@cmpxchg.org>, Jan Kara <jack@suse.cz>,
	jglisse@redhat.com, LKML <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, shli@fb.com, syzkaller-bugs@googlegroups.com,
	Thomas Gleixner <tglx@linutronix.de>,
	Vlastimil Babka <vbabka@suse.cz>,
	ying.huang@intel.com, kernel-team@lge.com
Subject: Re: possible deadlock in lru_add_drain_all
Date: Wed, 1 Nov 2017 17:59:27 +0900	[thread overview]
Message-ID: <20171101085927.GB3172@X58A-UD3R> (raw)
In-Reply-To: <20171031151024.uhbaynabzq6k7fbc@hirez.programming.kicks-ass.net>

On Tue, Oct 31, 2017 at 04:10:24PM +0100, Peter Zijlstra wrote:
> On Tue, Oct 31, 2017 at 03:58:04PM +0100, Michal Hocko wrote:
> > On Tue 31-10-17 15:52:47, Peter Zijlstra wrote:
> > [...]
> > > If we want to save those stacks; we have to save a stacktrace on _every_
> > > lock acquire, simply because we never know ahead of time if there will
> > > be a new link. Doing this is _expensive_.
> > > 
> > > Furthermore, the space into which we store stacktraces is limited;
> > > since memory allocators use locks we can't very well use dynamic memory
> > > for lockdep -- that would give recursive and robustness issues.

I agree with all you said.

But, I have a better idea, that is, to save only the caller's ip of each
acquisition as an additional information? Of course, it's not enough in
some cases, but it's cheep and better than doing nothing.

For example, when building A->B, let's save not only full stack of B,
but also caller's ip of A together, then use them on warning like:

-> #3 aa_mutex:
   a()
   b()
   c()
   d()
   ---
   while holding bb_mutex at $IP <- additional information I said

-> #2 bb_mutex:
   e()
   f()
   g()
   h()
   ---
   while holding cc_mutex at $IP <- additional information I said

-> #1 cc_mutex:
   i()
   j()
   k()
   l()
   ---
   while holding xxx at $IP <- additional information I said

and so on.

Don't you think this is worth working it?

  reply	other threads:[~2017-11-01  8:59 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <089e0825eec8955c1f055c83d476@google.com>
2017-10-27  9:34 ` possible deadlock in lru_add_drain_all Michal Hocko
2017-10-27  9:44   ` Dmitry Vyukov
2017-10-27  9:47     ` Dmitry Vyukov
2017-10-27 13:42     ` Michal Hocko
2017-10-30  8:22       ` Michal Hocko
2017-10-30 10:09         ` Byungchul Park
2017-10-30 15:10           ` Peter Zijlstra
2017-10-30 15:22             ` Peter Zijlstra
2017-10-31 13:13             ` Michal Hocko
2017-10-31 13:51               ` Peter Zijlstra
2017-10-31 13:55                 ` Dmitry Vyukov
2017-10-31 14:52                   ` Peter Zijlstra
2017-10-31 14:58                     ` Michal Hocko
2017-10-31 15:10                       ` Peter Zijlstra
2017-11-01  8:59                         ` Byungchul Park [this message]
2017-11-01 12:01                           ` Peter Zijlstra
2017-11-01 23:54                             ` Byungchul Park
2018-02-14 14:01                               ` Dmitry Vyukov
2018-02-14 15:44                                 ` Michal Hocko
2018-02-14 15:57                                   ` Dmitry Vyukov
2017-10-31 15:25               ` Peter Zijlstra
2017-10-31 15:45                 ` Michal Hocko
2017-10-31 16:30                   ` Peter Zijlstra
2017-11-01  8:31                 ` Byungchul Park
2017-10-30 10:26         ` Byungchul Park
2017-10-30 11:48           ` Michal Hocko
2017-10-27 11:27   ` Vlastimil Babka

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=20171101085927.GB3172@X58A-UD3R \
    --to=byungchul.park@lge.com \
    --cc=akpm@linux-foundation.org \
    --cc=bot+e7353c7141ff7cbb718e4c888a14fa92de41ebaa@syzkaller.appspotmail.com \
    --cc=dan.j.williams@intel.com \
    --cc=dvyukov@google.com \
    --cc=hannes@cmpxchg.org \
    --cc=jack@suse.cz \
    --cc=jglisse@redhat.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=peterz@infradead.org \
    --cc=shli@fb.com \
    --cc=syzkaller-bugs@googlegroups.com \
    --cc=tglx@linutronix.de \
    --cc=vbabka@suse.cz \
    --cc=ying.huang@intel.com \
    /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).