linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Byungchul Park <byungchul.park@lge.com>,
	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,
	David Herrmann <dh.herrmann@gmail.com>
Subject: Re: possible deadlock in lru_add_drain_all
Date: Tue, 31 Oct 2017 16:45:46 +0100	[thread overview]
Message-ID: <20171031154546.ouryhw4rtpbrch2f@dhcp22.suse.cz> (raw)
In-Reply-To: <20171031152532.uah32qiftjerc3gx@hirez.programming.kicks-ass.net>

[CC David Herrmann for shmem_wait_for_pins. The thread starts
 http://lkml.kernel.org/r/089e0825eec8955c1f055c83d476@google.com
 with the callchains explained http://lkml.kernel.org/r/20171030151009.ip4k7nwan7muouca@hirez.programming.kicks-ass.net
 for shmem_wait_for_pins involvement see below]

On Tue 31-10-17 16:25:32, Peter Zijlstra wrote:
> On Tue, Oct 31, 2017 at 02:13:33PM +0100, Michal Hocko wrote:
> 
> > > I can indeed confirm it's running old code; cpuhp_state is no more.
> > 
> > Does this mean the below chain is no longer possible with the current
> > linux-next (tip)?
> 
> I see I failed to answer this; no it will happen but now reads like:
> 
> 	s/cpuhp_state/&_up/
> 
> Where we used to have a single lock protecting the hotplug stuff, we now
> have 2, one for bringing stuff up and one for tearing it down.
> 
> This got rid of lock cycles that included cpu-up and cpu-down parts;
> those are false positives because we cannot do cpu-up and cpu-down
> concurrently.
> 
> But this report only includes a single (cpu-up) part and therefore is
> not affected by that change other than a lock name changing.

Hmm, OK. I have quickly glanced through shmem_wait_for_pins and I fail
to see why it needs lru_add_drain_all at all. All we should care about
is the radix tree and the lru cache only cares about the proper
placement on the LRU list which is not checked here. I might be missing
something subtle though. David?

We've had some MM vs. hotplug issues. See e.g. a459eeb7b852 ("mm,
page_alloc: do not depend on cpu hotplug locks inside the allocator"),
so I suspect we might want/need to do similar for lru_add_drain_all.
It feels like I've already worked on that but for the live of mine I
cannot remember.

Anyway, this lock dependecy is subtle as hell and I am worried that we
might have way too many of those. We have so many callers of
get_online_cpus that dependecies like this are just waiting to blow up.

-- 
Michal Hocko
SUSE Labs

  reply	other threads:[~2017-10-31 15:46 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
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 [this message]
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=20171031154546.ouryhw4rtpbrch2f@dhcp22.suse.cz \
    --to=mhocko@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bot+e7353c7141ff7cbb718e4c888a14fa92de41ebaa@syzkaller.appspotmail.com \
    --cc=byungchul.park@lge.com \
    --cc=dan.j.williams@intel.com \
    --cc=dh.herrmann@gmail.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=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).