[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20101122174516.E24A.A69D9226@jp.fujitsu.com>
Date: Tue, 23 Nov 2010 16:16:56 +0900 (JST)
From: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
To: "Ted Ts'o" <tytso@....edu>, Minchan Kim <minchan.kim@...il.com>,
linux-ext4@...r.kernel.org, linux-mm@...ck.org,
linux-kernel@...r.kernel.org,
Andreas Dilger <adilger.kernel@...ger.ca>,
Paul McKenney <paulmck@...ux.vnet.ibm.com>,
Eric Sandeen <sandeen@...hat.com>
Cc: kosaki.motohiro@...fujitsu.com
Subject: Re: [BUG?] [Ext4] INFO: suspicious rcu_dereference_check() usage
> On Mon, Nov 22, 2010 at 12:39:49AM +0900, Minchan Kim wrote:
> >
> > I think it's no problem.
> >
> > That's because migration always holds lock_page on the file page.
> > So the page couldn't remove from radix.
>
> It may be "ok" in that it won't cause a race, but it still leaves an
> unsightly warning if LOCKDEP is enabled, and LOCKDEP warnings will
> cause /proc_lock_stat to be disabled. So I think it still needs to be
> fixed by adding rcu_read_lock()/rcu_read_unlock() to
> migrate_page_move_mapping().
Hi Ted,
Current mmotm has following patch and I think it should be fixed your
issue.
Thanks.
From: Zeng Zhaoming <zengzm.kernel@...il.com>
find_task_by_vpid() should be protected by rcu_read_lock(), to prevent
free_pid() reclaiming pid.
Signed-off-by: Zeng Zhaoming <zengzm.kernel@...il.com>
Cc: "Paul E. McKenney" <paulmck@...ibm.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>
Cc: Christoph Lameter <cl@...ux-foundation.org>
Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
---
mm/mempolicy.c | 3 +++
1 file changed, 3 insertions(+)
diff -puN mm/mempolicy.c~mm-mempolicyc-add-rcu-read-lock-to-protect-pid-structure mm/mempolicy.c
--- a/mm/mempolicy.c~mm-mempolicyc-add-rcu-read-lock-to-protect-pid-structure
+++ a/mm/mempolicy.c
@@ -1307,15 +1307,18 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pi
goto out;
/* Find the mm_struct */
+ rcu_read_lock();
read_lock(&tasklist_lock);
task = pid ? find_task_by_vpid(pid) : current;
if (!task) {
read_unlock(&tasklist_lock);
+ rcu_read_unlock();
err = -ESRCH;
goto out;
}
mm = get_task_mm(task);
read_unlock(&tasklist_lock);
+ rcu_read_unlock();
--
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