All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan.kim@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rik van Riel <riel@redhat.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Borislav Petkov <bp@alien8.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
	Nick Piggin <npiggin@suse.de>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Hugh Dickins <hugh.dickins@tiscali.co.uk>
Subject: Re: Ugly rmap NULL ptr deref oopsie on hibernate (was Linux 2.6.34-rc3)
Date: Wed, 07 Apr 2010 01:23:39 +0900	[thread overview]
Message-ID: <1270571019.1814.163.camel@barrios-desktop> (raw)
In-Reply-To: <alpine.LFD.2.00.1004060841460.3487@i5.linux-foundation.org>

Hi, Linus. 

On Tue, 2010-04-06 at 08:55 -0700, Linus Torvalds wrote:
> 
> On Wed, 7 Apr 2010, Minchan Kim wrote:
> > 
> > Let's see the unlink_anon_vmas. 
> > 
> > 1. list_for_each_entry_safe(avc,next, vma->anon_vma_chain, same_vma)
> > 2. 	anon_vma_unlink
> > 3. 		spin_lock(anon_vma->lock) <-- HERE LOCK.
> > 4.		list_del(anon_vma_chain->same_anon_vma);
> > 
> > What if anon_vma is destroyed and reuse by SLAB_XXX_RCU for another
> > anon_vma object between 2 and 3?
> > I mean how to make sure 3) does lock valid anon_vma? 
> > 
> > I hope it is culprit.
> 
> I don't think so. That isn't the racy case. We're working with a 
> anon_vma_chain, so the anonvma is all there.
> 

But the anon_vma is using for another anon_vma. 
Nonetheless, anon_vma_unlink does list_del(anon_vma's same_anon_vma).
I doubt it. 

> The racy case is when we look up an anonvma by the page, and the page gets 
> unmapped at the same time because somebody else is travelling over the LRU 
> list of the page itself, isn't it?

Yes. but I thought page might travel with anon_vmas which have
same_anon_vma deleted by race.

> 
> I do wonder if "page_lock_anon_vma()" should check the whole 
> "page_mapped()" case _after_ taking the anon_vma lock. Because if the race 
> happens, we're following a anon_vma list that has nothing to do with that 
> page (it's stilla _valid_ list, since we locked the anon_vma, but will it 
> be ok?)

So we always use it with (vma_address and page_check_address) to make
sure validation of anon_vma.
But I think it's not good design. I want to hold lock ahead checking of
page_mapped but maybe performance issue? I am not sure. 

> 
> IOW, what is it that really keeps the anon_vma list reliable _and_ 
> relevant wrt the page? We know we may get a stale anon_vma, are we ok if 
> that anon_vma list doesn't actually have anything to do with the page any 
> more?
> I think the first check in "page_address_in_vma()" protects us, but 
> whatever.
> 
> However, that made me look at the PAGE_MIGRATION case. That seems to be 
> just broken. It's doing that page_anon_vma() + spin_lock without holding 
> any RCU locks, so there is no guarantee that anon_vma there is at all 
> valid.

FYI, recently there is a patch about migration case. 
http://lkml.org/lkml/2010/4/2/145


> 
> Is that function always called with rcu_read_lock()? 
> 
> 			Linus


-- 
Kind regards,
Minchan Kim



  reply	other threads:[~2010-04-06 16:24 UTC|newest]

Thread overview: 242+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-30 17:50 Linux 2.6.34-rc3 Linus Torvalds
2010-03-30 21:16 ` [Regression, post-rc2] Commit a5ee4eb7541 breaks OpenGL on RS780 (was: Re: Linux 2.6.34-rc3) Rafael J. Wysocki
2010-03-31 20:34   ` [stable] " Greg KH
2010-04-01  1:13   ` Rafael J. Wysocki
2010-04-01  2:19     ` Alex Deucher
2010-04-01  2:19       ` Alex Deucher
2010-04-01  6:36       ` Clemens Ladisch
2010-04-01 15:01         ` Alex Deucher
2010-04-01 15:01           ` Alex Deucher
2010-04-01 20:28           ` Rafael J. Wysocki
2010-04-01 20:28             ` Rafael J. Wysocki
2010-04-01 20:39             ` Alex Deucher
2010-04-01 20:39               ` Alex Deucher
2010-04-01 20:48               ` Rafael J. Wysocki
2010-04-01 21:00                 ` Alex Deucher
2010-04-01 21:00                   ` Alex Deucher
2010-04-01 21:01                 ` Alex Deucher
2010-04-01 21:01                   ` Alex Deucher
2010-04-01 21:08                   ` Rafael J. Wysocki
2010-04-01 21:13                     ` Alex Deucher
2010-04-01 21:13                       ` Alex Deucher
2010-04-01 21:46                       ` Rafael J. Wysocki
2010-04-01 22:07                         ` Alex Deucher
2010-04-01 22:07                           ` Alex Deucher
2010-04-01 23:20                           ` Rafael J. Wysocki
2010-04-02  0:23                             ` Linus Torvalds
2010-04-02 16:46                               ` Rafael J. Wysocki
2010-04-03 18:08                                 ` Clemens Ladisch
2010-04-03 19:33                                   ` Rafael J. Wysocki
2010-04-01 16:29     ` Linus Torvalds
2010-04-01 17:07       ` Alex Deucher
2010-04-01 17:07         ` Alex Deucher
2010-04-01 17:24         ` Linus Torvalds
2010-04-01 17:50           ` [Regression, post-rc2] Commit a5ee4eb7541 breaks OpenGL on RS780 Clemens Ladisch
2010-04-01 17:53           ` [Regression, post-rc2] Commit a5ee4eb7541 breaks OpenGL on RS780 (was: Re: Linux 2.6.34-rc3) Alex Deucher
2010-04-01 17:53             ` Alex Deucher
2010-04-01 20:17             ` Linus Torvalds
2010-04-01 20:23               ` Alex Deucher
2010-04-01 20:23                 ` Alex Deucher
2010-04-01 19:46       ` Rafael J. Wysocki
2010-04-01 22:48       ` Jesse Barnes
2010-04-01 23:23         ` Rafael J. Wysocki
2010-04-02 17:59 ` Ugly rmap NULL ptr deref oopsie on hibernate (was " Borislav Petkov
2010-04-02 18:09   ` Linus Torvalds
2010-04-02 15:24     ` Andrew Morton
2010-04-02 18:37       ` Linus Torvalds
2010-04-02 22:01         ` Rik van Riel
2010-04-03  0:19           ` Linus Torvalds
2010-04-04 16:12           ` Minchan Kim
2010-04-04 17:24             ` Rik van Riel
2010-04-04 23:09             ` [PATCH] rmap: fix anon_vma_fork() memory leak Rik van Riel
2010-04-04 23:56               ` Minchan Kim
2010-04-05 15:37               ` Linus Torvalds
2010-04-05 15:48                 ` Minchan Kim
2010-04-05 16:04                 ` Rik van Riel
2010-04-05 16:13                 ` [PATCH -v2] " Rik van Riel
2010-04-06  8:53     ` Ugly rmap NULL ptr deref oopsie on hibernate (was Linux 2.6.34-rc3) KOSAKI Motohiro
2010-04-06 10:09       ` KOSAKI Motohiro
2010-04-06 14:34         ` Rik van Riel
2010-04-06 14:38       ` Rik van Riel
2010-04-06 15:34         ` Minchan Kim
2010-04-06 15:40           ` Rik van Riel
2010-04-06 15:58             ` Minchan Kim
2010-04-06 15:55           ` Linus Torvalds
2010-04-06 16:23             ` Minchan Kim [this message]
2010-04-06 16:28               ` Linus Torvalds
2010-04-06 16:45                 ` Minchan Kim
2010-04-06 16:53                   ` Linus Torvalds
2010-04-06 17:04                     ` Rik van Riel
2010-04-06 18:28                       ` Linus Torvalds
2010-04-06 19:03                         ` Andrew Morton
2010-04-06 19:10                           ` Linus Torvalds
2010-04-06 19:35                             ` Linus Torvalds
2010-04-06 19:10                           ` Steinar H. Gunderson
2010-04-06 19:42                           ` Borislav Petkov
2010-04-06 20:02                             ` Linus Torvalds
2010-04-06 20:46                               ` Steinar H. Gunderson
2010-04-06 20:56                                 ` Linus Torvalds
2010-04-06 21:05                                   ` Steinar H. Gunderson
2010-04-06 20:51                               ` Borislav Petkov
2010-04-06 21:27                                 ` Linus Torvalds
2010-04-06 22:59                                   ` Borislav Petkov
2010-04-06 23:27                                     ` Linus Torvalds
2010-04-06 23:54                                       ` [PATCH] rmap: make anon_vma_prepare link in all the anon_vmas of a mergeable VMA Rik van Riel
2010-04-07  7:00                                         ` KOSAKI Motohiro
2010-04-07 14:48                                           ` Rik van Riel
2010-04-07 14:54                                           ` [PATCH -v2] " Rik van Riel
2010-04-07 15:30                                             ` Linus Torvalds
2010-04-07 15:52                                               ` Rik van Riel
2010-04-07 16:56                                                 ` Linus Torvalds
2010-04-07 21:19                                                   ` Linus Torvalds
2010-04-07 21:52                                                     ` Rik van Riel
2010-04-07 22:09                                                       ` Linus Torvalds
2010-04-07 22:15                                                         ` Linus Torvalds
2010-04-08  0:38                                                           ` Rik van Riel
2010-04-07 23:37                                                         ` Linus Torvalds
2010-04-08  2:03                                                           ` KOSAKI Motohiro
2010-04-08  2:33                                                             ` Linus Torvalds
2010-04-08  5:47                                                               ` Borislav Petkov
2010-04-08 14:11                                                                 ` Linus Torvalds
2010-04-08 18:25                                                                   ` Rik van Riel
2010-04-08 18:32                                                                     ` Linus Torvalds
2010-04-08 20:31                                                                       ` Borislav Petkov
2010-04-08 21:00                                                                   ` Borislav Petkov
2010-04-08 23:16                                                                     ` Linus Torvalds
2010-04-08 23:47                                                                       ` Borislav Petkov
2010-04-09  0:50                                                                         ` Linus Torvalds
2010-04-09  1:30                                                                           ` Borislav Petkov
2010-04-09  9:21                                                                             ` Borislav Petkov
2010-04-09 16:35                                                                               ` Linus Torvalds
2010-04-09 17:40                                                                                 ` Borislav Petkov
2010-04-09 17:50                                                                                   ` Linus Torvalds
2010-04-09 19:14                                                                                     ` Borislav Petkov
2010-04-09 19:32                                                                                       ` Linus Torvalds
2010-04-09 20:03                                                                                         ` Rik van Riel
2010-04-09 20:43                                                                                         ` Johannes Weiner
2010-04-09 20:57                                                                                           ` Rik van Riel
2010-04-09 21:33                                                                                           ` Borislav Petkov
2010-04-09 23:22                                                                                           ` Linus Torvalds
2010-04-09 23:45                                                                                             ` Rik van Riel
2010-04-10  0:03                                                                                               ` Linus Torvalds
2010-04-10  0:11                                                                                                 ` Rik van Riel
2010-04-09 23:54                                                                                             ` Johannes Weiner
2010-04-09 23:56                                                                                             ` Linus Torvalds
2010-04-10  0:19                                                                                               ` Rik van Riel
2010-04-10  0:31                                                                                               ` Johannes Weiner
2010-04-10  0:32                                                                                                 ` Linus Torvalds
2010-04-10  7:27                                                                                                   ` Borislav Petkov
2010-04-10 11:26                                                                                                     ` Borislav Petkov
2010-04-10 14:45                                                                                                       ` Rik van Riel
2010-04-10 15:24                                                                                                       ` Linus Torvalds
2010-04-10 16:38                                                                                                         ` Borislav Petkov
2010-04-10 17:05                                                                                                           ` Linus Torvalds
2010-04-10 18:21                                                                                                             ` Linus Torvalds
2010-04-10 18:26                                                                                                               ` Linus Torvalds
2010-04-10 18:51                                                                                                               ` Borislav Petkov
2010-04-10 18:58                                                                                                                 ` Borislav Petkov
2010-04-10 20:05                                                                                                                   ` Linus Torvalds
2010-04-10 20:12                                                                                                                     ` Linus Torvalds
2010-04-10 20:36                                                                                                                       ` Borislav Petkov
2010-04-10 20:40                                                                                                                         ` Linus Torvalds
2010-04-10 21:25                                                                                                                           ` Borislav Petkov
2010-04-10 21:30                                                                                                                             ` Linus Torvalds
2010-04-10 21:51                                                                                                                               ` Borislav Petkov
2010-04-11 13:08                                                                                                                                 ` Borislav Petkov
2010-04-11 13:19                                                                                                                                   ` [PATCH 1/3] mm: make page freeing path RCU-safe Borislav Petkov
2010-04-11 13:19                                                                                                                                   ` [PATCH 2/3] mm: cleanup find_mergeable_anon_vma complexity Borislav Petkov
2010-04-11 13:19                                                                                                                                   ` [PATCH 3/3] mm: fixup vma_adjust Borislav Petkov
2010-04-11 13:25                                                                                                                                   ` [PATCH 2/3] mm: cleanup find_mergeable_anon_vma complexity Borislav Petkov
2010-04-11 17:07                                                                                                                                   ` [PATCH -v2] rmap: make anon_vma_prepare link in all the anon_vmas of a mergeable VMA Linus Torvalds
2010-04-11 17:16                                                                                                                                     ` Linus Torvalds
2010-04-11 18:55                                                                                                                                       ` Borislav Petkov
2010-04-12  0:13                                                                                                                                         ` Linus Torvalds
2010-04-12  1:04                                                                                                                                           ` Linus Torvalds
2010-04-12  7:20                                                                                                                                             ` Borislav Petkov
2010-04-12 16:02                                                                                                                                               ` Linus Torvalds
2010-04-12 16:26                                                                                                                                                 ` Linus Torvalds
2010-04-12 18:40                                                                                                                                                   ` Rik van Riel
2010-04-12 19:00                                                                                                                                                     ` Borislav Petkov
2010-04-12 19:17                                                                                                                                                       ` Linus Torvalds
2010-04-12 20:22                                                                                                                                                         ` [PATCH 1/4] Simplify and comment on anon_vma re-use for anon_vma_prepare() Linus Torvalds
2010-04-12 20:23                                                                                                                                                           ` [PATCH 2/4] vma_adjust: fix the copying of anon_vma chains Linus Torvalds
2010-04-12 20:23                                                                                                                                                             ` [PATCH 3/4] anon_vma: clone the anon_vma chain in the right order Linus Torvalds
2010-04-12 20:23                                                                                                                                                               ` [PATCH 4/4] anonvma: when setting up page->mapping, we need to pick the _oldest_ anonvma Linus Torvalds
2010-04-12 21:03                                                                                                                                                                 ` Rik van Riel
2010-04-13  0:41                                                                                                                                                                 ` Johannes Weiner
2010-04-13  1:08                                                                                                                                                                   ` Linus Torvalds
2010-04-13  4:23                                                                                                                                                                     ` Minchan Kim
2010-04-13  4:26                                                                                                                                                                       ` Minchan Kim
2010-04-12 20:57                                                                                                                                                               ` [PATCH 3/4] anon_vma: clone the anon_vma chain in the right order Rik van Riel
2010-04-13  0:18                                                                                                                                                               ` Johannes Weiner
2010-04-13  4:16                                                                                                                                                               ` Minchan Kim
2010-04-12 20:54                                                                                                                                                             ` [PATCH 2/4] vma_adjust: fix the copying of anon_vma chains Rik van Riel
2010-04-12 23:59                                                                                                                                                             ` Johannes Weiner
2010-04-13  4:15                                                                                                                                                             ` Minchan Kim
2010-04-12 20:54                                                                                                                                                           ` [PATCH 1/4] Simplify and comment on anon_vma re-use for anon_vma_prepare() Rik van Riel
2010-04-12 23:54                                                                                                                                                           ` Johannes Weiner
2010-04-13  4:04                                                                                                                                                           ` Minchan Kim
2010-04-13  9:51                                                                                                                                                           ` Peter Zijlstra
2010-04-12 21:50                                                                                                                                                   ` [PATCH -v2] rmap: make anon_vma_prepare link in all the anon_vmas of a mergeable VMA Borislav Petkov
2010-04-12 22:11                                                                                                                                                     ` Linus Torvalds
2010-04-12 22:18                                                                                                                                                       ` Linus Torvalds
2010-04-12 22:29                                                                                                                                                         ` Borislav Petkov
2010-04-13  9:38                                                                                                                                                       ` Borislav Petkov
2010-04-14 21:59                                                                                                                                                         ` [PATCH] rmap: add exclusively owned pages to the newest anon_vma Rik van Riel
2010-04-14 23:20                                                                                                                                                           ` Johannes Weiner
2010-04-15  8:34                                                                                                                                                           ` Borislav Petkov
2010-04-15 16:02                                                                                                                                                           ` Minchan Kim
2010-04-15 20:01                                                                                                                                                           ` Linus Torvalds
2010-04-16  6:09                                                                                                                                                             ` Felipe Balbi
2010-04-16 14:48                                                                                                                                                               ` Linus Torvalds
2010-04-11 19:49                                                                                                                                       ` [PATCH -v2] rmap: make anon_vma_prepare link in all the anon_vmas of a mergeable VMA Rik van Riel
2010-04-12 15:44                                                                                                                                         ` Linus Torvalds
2010-04-12 15:51                                                                                                                                           ` Rik van Riel
2010-04-11 21:45                                                                                                                                       ` Rik van Riel
2010-04-12 15:51                                                                                                                                         ` Linus Torvalds
2010-04-13 10:36                                                                                                                                           ` KOSAKI Motohiro
2010-04-10 20:24                                                                                                                     ` Rik van Riel
2010-04-10 20:34                                                                                                                       ` Linus Torvalds
2010-04-10 20:43                                                                                                                         ` Rik van Riel
2010-04-10 20:32                                                                                                                     ` Rik van Riel
2010-04-10 19:36                                                                                                               ` Rik van Riel
2010-04-12 14:40                                                                                                               ` Peter Zijlstra
2010-04-12 15:17                                                                                                                 ` Minchan Kim
2010-04-12 15:33                                                                                                                   ` Peter Zijlstra
2010-04-12 15:19                                                                                                                 ` Rik van Riel
2010-04-12 16:01                                                                                                                   ` Peter Zijlstra
2010-04-12 16:06                                                                                                                     ` Rik van Riel
2010-04-12 16:46                                                                                                                       ` Linus Torvalds
2010-04-12 18:40                                                                                                                         ` Peter Zijlstra
2010-04-12 19:30                                                                                                                           ` Peter Zijlstra
2010-04-12 19:44                                                                                                                             ` Peter Zijlstra
2010-04-13 10:53                                                                                                                     ` KOSAKI Motohiro
2010-04-13 11:30                                                                                                                       ` Peter Zijlstra
2010-04-13 12:00                                                                                                                         ` KOSAKI Motohiro
2010-04-14 14:27                                                                                                                           ` Peter Zijlstra
2010-04-10 17:07                                                                                                           ` Borislav Petkov
2010-04-10 16:41                                                                                                         ` Linus Torvalds
2010-04-10 22:49                                                                                                           ` Johannes Weiner
2010-04-10 23:31                                                                                                             ` Linus Torvalds
2010-04-09  1:45                                                                           ` KOSAKI Motohiro
2010-04-07 15:55                                             ` Minchan Kim
2010-04-07  7:29                                       ` Ugly rmap NULL ptr deref oopsie on hibernate (was Linux 2.6.34-rc3) Borislav Petkov
2010-04-07 14:05                                       ` Paulo Marques
2010-04-07 14:13                                         ` Borislav Petkov
2010-04-06 23:37                                     ` Linus Torvalds
2010-04-06 23:22                                   ` Rik van Riel
2010-04-07  0:10                                     ` Linus Torvalds
2010-04-07  1:18                                       ` Rik van Riel
2010-04-07  7:22                                         ` Borislav Petkov
2010-04-07 10:09                                       ` Pekka Enberg
2010-04-07 10:12                                         ` KOSAKI Motohiro
2010-04-07  8:41                               ` Peter Zijlstra
2010-04-07  8:36                         ` Peter Zijlstra
2010-04-07  9:16                           ` Johannes Weiner
2010-04-07  9:37                             ` Peter Zijlstra
2010-04-07 14:12                           ` Rik van Riel
2010-04-07 15:46                           ` Linus Torvalds
2010-04-06 16:32               ` Linus Torvalds
2010-04-06 16:54                 ` Minchan Kim
2010-04-07  8:37             ` Peter Zijlstra
2010-04-06 17:05         ` Borislav Petkov

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=1270571019.1814.163.camel@barrios-desktop \
    --to=minchan.kim@gmail.com \
    --cc=Lee.Schermerhorn@hp.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=hugh.dickins@tiscali.co.uk \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=npiggin@suse.de \
    --cc=riel@redhat.com \
    --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 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.