Re: [regression] nf_iterate(), BUG: unable to handle kernel NULL pointer dereference

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Patrick McHardy <kaber@...>
Cc: Pekka Enberg <penberg@...>, Ingo Molnar <mingo@...>, David Miller <davem@...>, <herbert@...>, <w@...>, <davidn@...>, <akpm@...>, <netdev@...>, <linux-kernel@...>, <stefanr@...>, <rjw@...>, <ilpo.jarvinen@...>, Dave Jones <davej@...>
Date: Thursday, July 24, 2008 - 5:13 pm

On Thu, 24 Jul 2008, Patrick McHardy wrote:

Hmm. Don't you need to fix some of the ordering of the initialization too?

If there are possible readers that happen in parallel with changing this 
thing, don't you need to protect the update of "ext->len" against the 
actual changes? And the readers should probably have a read barrier 
between checking "len" and actually looking at the values? Finally, why do 
the "ct->ext" dereference thing, when we know it has to be equal to "new"?

ie something like this on the writing side (in _addition_ to both the 
patches already seen), but I didn't do the reading side (ie there are no 
"smp_rmb()"'s on the reading side)

And no, I don't know the code, so I don't know who/what can read those 
things with RCU, so maybe there is some reason why the actual data doesn't 
need protecting. But I somehow doubt it.

		Linus

---
 net/netfilter/nf_conntrack_extend.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
index 3469bc7..135e095 100644
--- a/net/netfilter/nf_conntrack_extend.c
+++ b/net/netfilter/nf_conntrack_extend.c
@@ -115,10 +115,11 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
 		ct->ext = new;
 	}
 
-	ct->ext->offset[id] = newoff;
-	ct->ext->len = newlen;
-	memset((void *)ct->ext + newoff, 0, newlen - newoff);
-	return (void *)ct->ext + newoff;
+	new->offset[id] = newoff;
+	memset((void *)new + newoff, 0, newlen - newoff);
+	smp_wmb();
+	new->len = newlen;
+	return (void *)new + newoff;
 }
 EXPORT_SYMBOL(__nf_ct_ext_add);
 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[GIT]: Networking, David Miller, (Sun Jul 20, 1:44 pm)
Re: [GIT]: Networking, Ingo Molnar, (Mon Jul 21, 9:50 am)
Re: [GIT]: Networking, Stefan Richter, (Mon Jul 21, 10:15 am)
[crash] kernel BUG at net/core/dev.c:1328!, Ingo Molnar, (Mon Jul 21, 2:23 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Linus Torvalds, (Mon Jul 21, 2:35 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, David Miller, (Mon Jul 21, 3:00 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Ingo Molnar, (Mon Jul 21, 3:44 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, David Miller, (Mon Jul 21, 4:20 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Stefan Richter, (Mon Jul 21, 3:20 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, David Miller, (Mon Jul 21, 4:11 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Stefan Richter, (Mon Jul 21, 5:26 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Ingo Molnar, (Mon Jul 21, 2:46 pm)
[TCP bug] stuck distcc connections in latest -git, Ingo Molnar, (Tue Jul 22, 7:21 am)
Re: [TCP bug] stuck distcc connections in latest -git, David Newall, (Tue Jul 22, 9:45 am)
Re: [TCP bug] stuck distcc connections in latest -git, Ingo Molnar, (Tue Jul 22, 9:57 am)
Re: [TCP bug] stuck distcc connections in latest -git, David Newall, (Tue Jul 22, 10:54 am)
Re: [TCP bug] stuck distcc connections in latest -git, Ingo Molnar, (Tue Jul 22, 11:34 am)
Re: [TCP bug] stuck distcc connections in latest -git, Willy Tarreau, (Tue Jul 22, 5:12 pm)
Re: [TCP bug] stuck distcc connections in latest -git, Ingo Molnar, (Wed Jul 23, 4:26 am)
Re: [regression] nf_iterate(), BUG: unable to handle kernel ..., Krzysztof Oledzki, (Thu Jul 24, 2:00 pm)
Re: [regression] nf_iterate(), BUG: unable to handle kernel ..., Linus Torvalds, (Thu Jul 24, 5:13 pm)
Re: [crash] kernel BUG at net/core/dev.c:1328!, Ingo Molnar, (Mon Jul 21, 3:30 pm)
iwlwifi: fix build bug in "iwlwifi: fix LED stall", Ingo Molnar, (Mon Jul 21, 4:36 am)
RE: iwlwifi: fix build bug in "iwlwifi: fix LED stall", Winkler, Tomas, (Mon Jul 21, 6:02 am)
Re: iwlwifi: fix build bug in "iwlwifi: fix LED stall", Ingo Molnar, (Mon Jul 21, 6:53 am)
Re: [GIT]: Networking, Linus Torvalds, (Sun Jul 20, 8:54 pm)
Re: [GIT]: Networking, Linus Torvalds, (Sun Jul 20, 9:07 pm)
Re: [GIT]: Networking, David Miller, (Sun Jul 20, 9:17 pm)
Re: [GIT]: Networking, David Miller, (Sun Jul 20, 9:03 pm)
Re: [GIT]: Networking, Patrick McHardy, (Sun Jul 20, 9:20 pm)
Re: [GIT]: Networking, James Morris, (Mon Jul 21, 7:45 am)
Re: [GIT]: Networking, Patrick McHardy, (Mon Jul 21, 8:05 am)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 1:28 pm)
Re: [GIT]: Networking, Linus Torvalds, (Mon Jul 21, 1:40 pm)
Re: [GIT]: Networking, Patrick McHardy, (Mon Jul 21, 4:33 pm)
Re: [GIT]: Networking, David Miller, (Wed Jul 23, 7:42 pm)
Re: [GIT]: Networking, Stefan Richter, (Mon Jul 21, 7:28 am)
Re: [GIT]: Networking, Alexey Dobriyan, (Sun Jul 20, 9:09 pm)
Re: [GIT]: Networking, David Miller, (Sun Jul 20, 9:14 pm)
Re: [GIT]: Networking, Alexey Dobriyan, (Sun Jul 20, 10:40 pm)
Re: [GIT]: Networking, David Miller, (Sun Jul 20, 10:48 pm)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 1:11 am)
Re: [GIT]: Networking, Linus Torvalds, (Mon Jul 21, 12:49 pm)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 12:53 pm)
Re: [GIT]: Networking, Alexey Dobriyan, (Mon Jul 21, 7:57 am)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 11:27 am)
Re: [GIT]: Networking, Alexander Beregalov, (Mon Jul 21, 5:48 am)
Re: [GIT]: Networking, Ben Hutchings, (Mon Jul 21, 6:16 am)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 11:35 am)
Re: [GIT]: Networking, Alexander Beregalov, (Mon Jul 21, 12:04 pm)
Re: [GIT]: Networking, Alexey Dobriyan, (Sun Jul 20, 9:22 pm)
Re: [GIT]: Networking, Arjan van de Ven, (Sun Jul 20, 1:59 pm)
Re: [GIT]: Networking, David Miller, (Mon Jul 21, 4:32 pm)
Re: [GIT]: Networking, David Miller, (Sun Jul 20, 7:52 pm)