Re: Linux 2.6.9-rc2 : oops

Andrew Morton
2004-09-13T21:03:08Z

Linus Torvalds <torvalds@osdl.org> wrote:
>
> Looks like somebody is trying to free an invalid address. Sadly, your
> traceback doesn't show _who_, because it's hidden in the buffering.

yes, I doubt if we get synchronous notification of a double-free without
CONFIG_DEBUG_SLAB.

There's a known double-free in the isofs filesystem. Christian, were you
using CDROMs at the time?

> The only changes to slab itself have been by Christoph lately, I don't
> think that matters. Can you enable slab debugging? That should catch it
> much earlier..

Yup. Enable CONFIG_DEBUG_SLAB.

Invalidate this pointer so it doesn't get freed twice.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

25-akpm/fs/isofs/rock.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN fs/isofs/rock.c~rock-fix fs/isofs/rock.c
--- 25/fs/isofs/rock.c~rock-fix 2004-09-10 01:47:00.135392480 -0700
+++ 25-akpm/fs/isofs/rock.c 2004-09-10 01:47:00.139391872 -0700
@@ -62,7 +62,7 @@
}

#define MAYBE_CONTINUE(LABEL,DEV) \
- {if (buffer) kfree(buffer); \
+ {if (buffer) { kfree(buffer); buffer = NULL; } \
if (cont_extent){ \
int block, offset, offset1; \
struct buffer_head * pbh; \
_