Messages in this thread | | | From | "Ralston, Steve" <> | Subject | RE: mod->init out of bounds? | Date | Wed, 2 Aug 2000 12:51:19 -0500 |
| |
Oh dear. Guess I'll have to solely respond to my own post. The module in question for which I'm getting mod->init out of bounds has only init_module() and module_cleanup() functions.
On intel platforms the out of bounds check in kernel/module.c: --- #define bound(p, n, m) ((unsigned long)(p) >= (unsigned long)(m+1) && \ (unsigned long)((p)+(n)) <= (unsigned long)(m) + (m)->size) ... if (mod->init && !bound(mod->init, 0, mod)) { printk(KERN_ERR "init_module: mod->init out of bounds.\n"); goto err2; } --- fails because: (given sizeof(struct module) is 0x54 bytes) (m) mod == 0xc8828000 (p) mod->init == 0xc8828050 therefore, mod->init >= (mod + 1) is FALSE (0xc8828050 >= 0xc8828054)
As for a proper fix; I'm not sure as I don't exactly understand the logic behind the "mod->init >= (mod + 1)" check.
BTW: Difference in sizeof(struct module) on sparc64 (plus other factors?) results in same module loading fine there.
Thanks, -SteveR
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |