Thread (182 messages) 182 messages, 27 authors, 2008-08-01

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

From: Patrick McHardy <hidden>
Date: 2008-07-24 12:50:14
Also in: lkml

Pekka Enberg wrote:
On Thu, Jul 24, 2008 at 3:03 PM, Patrick McHardy [off-list ref] wrote:
quoted
Ingo Molnar wrote:
quoted
* Ingo Molnar [off-list ref] wrote:
quoted
here's a new type of crash a -tip testbox triggered today:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<0000000000000000>] 0x0
...
Call Trace:
 [<ffffffff80777f25>] ? ipv4_confirm+0x8d/0x122
 [<ffffffff80733107>] nf_iterate+0x43/0xa5
Does reverting 31d8519c fix this?
Hmm, why do you think it's related? It looks like elem->hook() is a
NULL pointer but my patch shouldn't make any difference here...
No, its already in ipv4_confirm, so its most likely helper->help()
thats NULL, which is contained in an extension.

The reason why I think its this patch is (quoting from an old
email that I never got a response to):

---
Your patch introduced a use-after-free and double-free.
krealloc() frees the old pointer, but it is still used
for the ->move operations, then freed again.

To fix this I think we need a __krealloc() that doesn't
free the old memory, especially since it must not be
freed immediately because it may still be used in a RCU
read side (see the last part in the patch attached to
this mail (based on a kernel without your patch)).
---

I've attached that patch again.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help