Re: Invalid operand with 2.4.11

From: Linus Torvalds (
Date: Wed Oct 10 2001 - 15:00:29 EST

In article <> you write:
>I am using a SuSE 7.2 distro. When I'm starting their yast2, it crashes
>reliably and leaves this message in the log (run through ksymoops):

I'd absolutely _love_ it if you can pinpoint this to a particular
pre-release. Something like "it doesn't happen with pre5, but it does
happen with pre6". Or "pre6 was fine, but the final 2.4.11 breaks".

Mind doing that? Together with a full config file, and I'll have a much
better idea of what broke..

The oops itself _seems_ to because the slab debugging (which you had
enabled: good for you!) catches on CHECK_PAGE() when freeing the name
slab at the end of open_namei():

    # define CHECK_PAGE(page) \
        do { \
                CHECK_NR(page); \
                if (!PageSlab(page)) { \
                        printk(KERN_ERR "kfree: bad ptr %lxh.\n", \
                                (unsigned long)objp); \
                        BUG(); \
                } \
        } while (0)

but it's a bit hard sometimes to debug these things remotely. Did you
see that "kfree: bad ptr" message?

Anyway, I do have one (possibly bad) suspicion: one thing you can try
with plain 2.4.11 is to remove the "FASTCALL()" macro in <linux/fs.h>
around the __user_walk/path_init/path_walk/link_path_walk declarations.
Those FASTCALL's are new, and I wonder if gcc has register pressure
problems with them, which could cause corruption, which in turn would
explain how "open_namei()" would to try to free a bad pointer.

[ Yeah, that's it, blame it on the compiler.. ]

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Mon Oct 15 2001 - 21:00:34 EST