From: Oleg Nesterov <oleg@tv-sign.ru>
To: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org, akpm@linux-foundation.org
Subject: Re: 2.6.26-rc4: RIP find_pid_ns+0x6b/0xa0
Date: Tue, 27 May 2008 13:06:05 +0400 [thread overview]
Message-ID: <20080527090605.GA146@tv-sign.ru> (raw)
In-Reply-To: <20080527052318.GA28301@martell.zuzino.mipt.ru>
On 05/27, Alexey Dobriyan wrote:
>
> PREEMPT_RCU is in use, again. And die counter is 2 because of CFQ oops
> I haven't noticed earlier.
>
> 0xffffffff802447cb is in find_pid_ns (kernel/pid.c:297).
> 292 struct hlist_node *elem;
> 293 struct upid *pnr;
> 294
> 295 hlist_for_each_entry_rcu(pnr, elem,
> 296 &pid_hash[pid_hashfn(nr, ns)], pid_chain)
> 297 if (pnr->nr == nr && pnr->ns == ns)
> 298 return container_of(pnr, struct pid,
> 299 numbers[ns->level]);
> 300
> 301 return NULL;
>
>
> general protection fault: 0000 [2] PREEMPT SMP DEBUG_PAGEALLOC
> CPU 0
> Modules linked in: ext2 nf_conntrack_irc xt_state iptable_filter ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack ip_tables x_tables usblp ehci_hcd uhci_hcd usbcore sr_mod cdrom
> Pid: 15599, comm: profil01 Tainted: G D 2.6.26-rc4 #1
> RIP: 0010:[<ffffffff802447cb>] [<ffffffff802447cb>] find_pid_ns+0x6b/0xa0
> RSP: 0018:ffff810129021ea8 EFLAGS: 00010202
> RAX: ffff810130580948 RBX: 0000000000003cef RCX: ffff81017d865278
> RDX: 6b6b6b6b6b6b6b6b RSI: ffffffff80566760 RDI: 0000000000003cef
> RBP: ffff810129021ea8 R08: 0000000000000000 R09: 00007f9a93987b70
> R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000
> R13: 0000000000000011 R14: 0000000000000000 R15: 0000000000000000
> FS: 00007f9a9397c6f0(0000) GS:ffffffff805c6000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 000000000257f2e8 CR3: 0000000102479000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process profil01 (pid: 15599, threadinfo ffff810129020000, task ffff81004bc24500)
> Stack: ffff810129021eb8 ffffffff8024487d ffff810129021f78 ffffffff8023f275
> 0000000000000011 0000000000000000 0000000000003cef ffff810129020000
> ffffffff8061b140 00007f9a93989bc0 00007fff9b98a410 ffffffff8045fd63
> Call Trace:
> [<ffffffff8024487d>] find_vpid+0x1d/0x20
> [<ffffffff8023f275>] sys_kill+0x85/0x1b0
Is this reproducible?
In theory find_pid() is not safe without rcu_read_lock() if CONFIG_PREEMPT_RCU.
But we have a lot of "read_lock(tasklist_lock) + find_pid()", this was legal
and documented. It was actually broken, but happened to work because read_lock()
implied rcu_read_lock().
Could you look at
[PATCH] fix tasklist + find_pid() with CONFIG_PREEMPT_RCU
http://marc.info/?t=120162615300012
?
I am not sure this is the actual reason though, the race is very unlikely.
Oleg.
next prev parent reply other threads:[~2008-05-27 10:06 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-26 18:41 Linux 2.6.26-rc4 Linus Torvalds
2008-05-26 21:24 ` Jesper Krogh
2008-05-26 21:42 ` Linus Torvalds
2008-05-27 0:25 ` Arjan van de Ven
2008-05-27 0:31 ` Arjan van de Ven
2008-05-27 5:43 ` David Woodhouse
2008-05-27 6:00 ` Arjan van de Ven
2008-05-27 6:24 ` David Woodhouse
2008-05-27 1:16 ` Carl-Daniel Hailfinger
2008-05-27 1:23 ` Carl-Daniel Hailfinger
2008-05-27 1:52 ` Abhijit Menon-Sen
2008-05-27 5:19 ` Jesper Krogh
2008-05-27 5:31 ` [MTD] [MAPS] ck804rom: fix driver_data in probe table David Woodhouse
2008-05-27 5:31 ` Linux 2.6.26-rc4 David Woodhouse
2008-05-27 10:35 ` Jeff Garzik
2008-05-27 10:53 ` Carl-Daniel Hailfinger
2008-05-27 10:54 ` Jeff Garzik
2008-05-27 10:58 ` Carl-Daniel Hailfinger
2008-05-27 5:23 ` 2.6.26-rc4: RIP find_pid_ns+0x6b/0xa0 Alexey Dobriyan
2008-05-27 9:06 ` Oleg Nesterov [this message]
2008-05-27 15:03 ` Linus Torvalds
2008-05-27 15:40 ` Paul E. McKenney
2008-05-27 16:11 ` Linus Torvalds
2008-05-27 17:06 ` Paul E. McKenney
2008-05-28 5:01 ` Paul E. McKenney
2008-05-28 7:26 ` Paul E. McKenney
2008-05-27 16:45 ` Oleg Nesterov
2008-05-27 17:37 ` Oleg Nesterov
2008-05-27 21:26 ` Alexey Dobriyan
2008-05-27 10:01 ` Linux 2.6.26-rc4 J.A. Magallón
2008-05-28 23:59 ` Bill Davidsen
[not found] ` <20080527124315.131b1343@Varda>
2008-05-28 20:10 ` Linus Torvalds
2008-05-28 20:17 ` Johannes Berg
2008-05-28 21:48 ` John W. Linville
2008-06-03 9:49 ` Jesper Krogh
2008-06-03 9:57 ` Al Viro
2008-06-03 10:04 ` Jesper Krogh
2008-06-03 10:13 ` Miklos Szeredi
2008-06-03 10:37 ` Miklos Szeredi
2008-06-03 10:48 ` Al Viro
2008-06-03 13:31 ` Ian Kent
2008-06-03 13:32 ` Ian Kent
2008-06-03 10:40 ` Al Viro
2008-06-03 10:45 ` Miklos Szeredi
2008-06-03 10:52 ` Al Viro
2008-06-03 13:27 ` Ian Kent
2008-06-03 15:01 ` Linus Torvalds
2008-06-03 16:07 ` Ian Kent
2008-06-03 16:35 ` Linus Torvalds
2008-06-03 16:41 ` Al Viro
2008-06-03 16:50 ` Al Viro
2008-06-03 17:28 ` Ian Kent
2008-06-03 17:41 ` Al Viro
2008-06-03 17:41 ` Ian Kent
2008-06-03 17:50 ` Al Viro
2008-06-03 17:49 ` Ian Kent
2008-06-03 16:59 ` Linus Torvalds
2008-06-03 17:30 ` Ian Kent
2008-06-03 17:13 ` Ian Kent
2008-06-03 17:30 ` Al Viro
2008-06-03 17:38 ` Ian Kent
2008-06-03 17:46 ` Jeff Moyer
2008-06-03 19:18 ` Al Viro
2008-06-03 19:53 ` Jeff Moyer
2008-06-03 23:00 ` Al Viro
2008-06-04 2:42 ` Ian Kent
2008-06-04 5:34 ` Miklos Szeredi
2008-06-04 5:41 ` Ian Kent
2008-06-10 4:57 ` Ian Kent
2008-06-10 6:28 ` Jesper Krogh
2008-06-10 6:40 ` Ian Kent
2008-06-10 9:09 ` Ian Kent
2008-06-12 3:03 ` Ian Kent
2008-06-12 7:02 ` Jesper Krogh
2008-06-12 11:21 ` Ian Kent
2008-06-12 11:19 ` Ian Kent
2008-06-04 1:36 ` Ian Kent
2008-06-05 7:31 ` Ian Kent
2008-06-05 21:29 ` Linus Torvalds
2008-06-05 21:34 ` Jesper Krogh
2008-06-06 2:39 ` Ian Kent
2008-06-05 22:30 ` Andrew Morton
2008-06-06 2:47 ` Ian Kent
2008-06-27 4:18 ` Ian Kent
2008-06-06 6:23 ` Jesper Krogh
2008-06-06 8:21 ` Ian Kent
2008-06-06 8:25 ` Ian Kent
2008-06-03 10:35 ` Al Viro
2008-06-04 17:51 ` Jesper Krogh
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=20080527090605.GA146@tv-sign.ru \
--to=oleg@tv-sign.ru \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®