h33p / vmread

A library to read/write memory to Windows on KVM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
commented

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.

commented

Untested, but should be fixed in 2a8e64c can you confirm if it works?

Works perfectly! Just tested on Zen, XanMod, and Linux Default 5.6+