I have developed a Loadable Kernel Module (LKM) for android.
I use kzalloc:
device = kzalloc(ndevices * sizeof (*device), GFP_KERNEL);
and it worked for a while, but after an update of my android (since 4.1 it’s no more working), I got following error on insmod:
insmod module.ko
insmod: init_module 'module.ko' failed (No such file or directory)
DMESG says:
Unknown symbol malloc_sizes (err 0)
This has something to do with inux/slab.h, that’s what I know.
I googled for days over days and I’m very frustrated not finding the solution to fix this problem and get the LKM working again.
Can maybe anyone help me out?
CONCLUSION:
The accepted answer is correct: Try to remove the slab.h and define the missing methods as “extern”. Or in your kernel-source, use “make menuconfig” and change SLAB to SLUB (see first comment in answer for more details).
The remaining problems are handled in a new, more specific topic:
So you need to tell us the kernel versions. But looking up linux kernel versions and memory allocators, it looks like the default mainline kernel switched from SLAB to SLUB.
Unless you’re writing a module or something that depends on SLAB (which is very highly unlikely), then you probably don’t want to be including
linux/slab.hheaders.