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/
This archive was generated by hypermail 2b29 : Mon Aug 07 2000 - 21:00:09 EST