Kernel 5.6.2+
unfriendly opened this issue · comments
In kernel 5.6.2+ and above I get the following compilation error
make
touch "/home/compute/vmread/build/vmread_kmod/Makefile"
make -C /lib/modules/5.6.3-zen1-1-zen/build M=/home/compute/vmread/build/vmread_kmod src=/home/compute/vmread modules
make[1]: Entering directory '/usr/lib/modules/5.6.3-zen1-1-zen/build'
CC [M] /home/compute/vmread/build/vmread_kmod/kmem.o
/home/compute/vmread/kmem.c: In function ‘vmreadinit’:
/home/compute/vmread/kmem.c:37:30: error: passing argument 4 of ‘proc_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
37 | proc_create("vmread", 0, 0, &fops);
| ^~~~~
| |
| const struct file_operations *
In file included from /home/compute/vmread/kmem.c:3:
./include/linux/proc_fs.h:64:24: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’
64 | struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops);
| ^~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:268: /home/compute/vmread/build/vmread_kmod/kmem.o] Error 1
make[1]: *** [Makefile:1683: /home/compute/vmread/build/vmread_kmod] Error 2
make[1]: Leaving directory '/usr/lib/modules/5.6.3-zen1-1-zen/build'
make: *** [Makefile:11: all] Error 2
After changing line 37 to file_create I get the following
make
touch "/home/compute/vmread/build/vmread_kmod/Makefile"
make -C /lib/modules/5.6.3-zen1-1-zen/build M=/home/compute/vmread/build/vmread_kmod src=/home/compute/vmread modules
make[1]: Entering directory '/usr/lib/modules/5.6.3-zen1-1-zen/build'
CC [M] /home/compute/vmread/build/vmread_kmod/kmem.o
/home/compute/vmread/kmem.c: In function ‘vmreadinit’:
/home/compute/vmread/kmem.c:37:2: error: implicit declaration of function ‘file_create’ [-Werror=implicit-function-declaration]
37 | file_create("vmread", 0, 0, &fops);
| ^~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:268: /home/compute/vmread/build/vmread_kmod/kmem.o] Error 1
make[1]: *** [Makefile:1683: /home/compute/vmread/build/vmread_kmod] Error 2
make[1]: Leaving directory '/usr/lib/modules/5.6.3-zen1-1-zen/build'
make: *** [Makefile:11: all] Error 2
Linux 5.6 changed the proc_create function to accept proc_ops structure instead of file_operations inside proc_create. An update should be made to reflect that.
Works perfectly! Just tested on Zen, XanMod, and Linux Default 5.6+