Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AUR issues, compilation issues, insmod issues. #10

Open
noche-x opened this issue Apr 9, 2021 · 5 comments
Open

AUR issues, compilation issues, insmod issues. #10

noche-x opened this issue Apr 9, 2021 · 5 comments

Comments

@noche-x
Copy link

noche-x commented Apr 9, 2021

Hello, I wanted to check this out and firstly I tried to install from AUR but it kept failing with [code block 1]

So I tried to compile it myself and the same errors occured. I swapped FTRACE_OPS_FL_RECURSION_SAFE with FTRACE_OPS_FL_RECURSION, changed ftrace_thunk's last parameters type from pt_regs regs to ftrace_regs fregs and added struct pt_regs *regs = ftrace_get_regs(fregs); (solution from) and lastly I changed h33p's kallsyms thing from livepatch to kprobes.
It compiled successfully but when I tried to insmod it, I got invalid module format

I can successfully compile and insmod h33p's kallsyms-mod.

:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring                                                                                                                  [----------------------------------------------------------------------------------------] 100%
(1/1) checking package integrity                                                                                                                [----------------------------------------------------------------------------------------] 100%
(1/1) loading package files                                                                                                                     [----------------------------------------------------------------------------------------] 100%
(1/1) checking for file conflicts                                                                                                               [----------------------------------------------------------------------------------------] 100%
(1/1) checking available disk space                                                                                                             [----------------------------------------------------------------------------------------] 100%
:: Running pre-transaction hooks...
(1/1) Remove upgraded DKMS modules
==> Unable to remove module cartographer-dkms-git/r16.78a704a for kernel 5.11.11-arch1-1: Not found in dkms status output.
:: Processing package changes...
(1/1) reinstalling cartographer-dkms-git                                                                                                        [----------------------------------------------------------------------------------------] 100%
:: Running post-transaction hooks...
(1/3) Triggering wallpaper regeneration...
(2/3) Arming ConditionNeedsUpdate...
(3/3) Install DKMS modules
==> dkms install --no-depmod -m cartographer-dkms-git -v r16.78a704a -k 5.11.11-arch1-1
Error! Bad return status for module build on kernel: 5.11.11-arch1-1 (x86_64)
Consult /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/make.log for more information.
==> Warning, `dkms install --no-depmod -m cartographer-dkms-git -v r16.78a704a -k 5.11.11-arch1-1' returned 10
==> depmod 5.11.11-arch1-1

The build error at /var/lib is:

DKMS make.log for cartographer-dkms-git-r16.78a704a for kernel 5.11.11-arch1-1 (x86_64)
Fri Apr  9 10:42:32 PM +03 2021
make: Entering directory '/usr/lib/modules/5.11.11-arch1-1/build'
  CC [M]  /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.o
  CC [M]  /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.o
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:5:24: error: array type has incomplete element type ‘struct klp_func’
    5 | static struct klp_func funcs[] = {
      |                        ^~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:12:24: error: array type has incomplete element type ‘struct klp_func’
   12 | static struct klp_func failfuncs[] = {
      |                        ^~~~~~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:18:26: error: array type has incomplete element type ‘struct klp_object’
   18 | static struct klp_object objs[] = {
      |                          ^~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:28:15: error: variable ‘patch’ has initializer but incomplete type
   28 | static struct klp_patch patch = {
      |               ^~~~~~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:29:3: error: ‘struct klp_patch’ has no member named ‘mod’
   29 |  .mod = THIS_MODULE,
      |   ^~~
In file included from ./include/linux/linkage.h:7,
                 from ./include/linux/kernel.h:7,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from ./include/linux/livepatch.h:12,
                 from /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:3:
./include/linux/export.h:17:21: warning: excess elements in struct initializer
   17 | #define THIS_MODULE (&__this_module)
      |                     ^
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:29:9: note: in expansion of macro ‘THIS_MODULE’
   29 |  .mod = THIS_MODULE,
      |         ^~~~~~~~~~~
./include/linux/export.h:17:21: note: (near initialization for ‘patch’)
   17 | #define THIS_MODULE (&__this_module)
      |                     ^
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:29:9: note: in expansion of macro ‘THIS_MODULE’
   29 |  .mod = THIS_MODULE,
      |         ^~~~~~~~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:30:3: error: ‘struct klp_patch’ has no member named ‘objs’
   30 |  .objs = objs,
      |   ^~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:30:10: warning: excess elements in struct initializer
   30 |  .objs = objs,
      |          ^~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:30:10: note: (near initialization for ‘patch’)
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.c: In function ‘cart_startup’:
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.c:291:32: error: assignment to ‘ftrace_func_t’ {aka ‘void (*)(long unsigned int,  long unsigned int,  struct ftrace_ops *, struct ftrace_regs *)’} from incompatible pointer type ‘void (*)(long unsigned int,  long unsigned int,  struct ftrace_ops *, struct pt_regs *)’ [-Werror=incompatible-pointer-types]
  291 |     show_map_vma_hook.ops.func = ftrace_thunk;
      |                                ^
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c: In function ‘init_kallsyms’:
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:40:10: error: implicit declaration of function ‘klp_enable_patch’ [-Werror=implicit-function-declaration]
   40 |  int r = klp_enable_patch(&patch);
      |          ^~~~~~~~~~~~~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c: At top level:
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:28:25: error: storage size of ‘patch’ isn’t known
   28 | static struct klp_patch patch = {
      |                         ^~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c: In function ‘kallsyms_lookup_name’:
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:36:1: error: control reaches end of non-void function [-Werror=return-type]
   36 | }
      | ^
At top level:
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:18:26: warning: ‘objs’ defined but not used [-Wunused-variable]
   18 | static struct klp_object objs[] = {
      |                          ^~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:12:24: warning: ‘failfuncs’ defined but not used [-Wunused-variable]
   12 | static struct klp_func failfuncs[] = {
      |                        ^~~~~~~~~
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.c:5:24: warning: ‘funcs’ defined but not used [-Wunused-variable]
    5 | static struct klp_func funcs[] = {
      |                        ^~~~~
cc1: some warnings being treated as errors
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.c:293:37: error: ‘FTRACE_OPS_FL_RECURSION_SAFE’ undeclared (first use in this function); did you mean ‘FTRACE_OPS_FL_RECURSION’?
  293 |                                   | FTRACE_OPS_FL_RECURSION_SAFE
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                     FTRACE_OPS_FL_RECURSION
/var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.c:293:37: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [scripts/Makefile.build:279: /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/kallsyms.o] Error 1
make[1]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:279: /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build/cartographer.o] Error 1
make: *** [Makefile:1809: /var/lib/dkms/cartographer-dkms-git/r16.78a704a/build] Error 2
make: Leaving directory '/usr/lib/modules/5.11.11-arch1-1/build'`
@LWSS
Copy link
Owner

LWSS commented Apr 10, 2021

tell me ur kernel versionnnnnnnnn

@noche-x
Copy link
Author

noche-x commented Apr 10, 2021

5.11.11-arch1-1

@noche-x
Copy link
Author

noche-x commented Apr 10, 2021

The "patch" that I did resulted in this message in dmesg:
[51429.873131] cartographer_module: module is marked as livepatch module, but livepatch support is disabled

@noche-x
Copy link
Author

noche-x commented Apr 10, 2021

After disabling the livepatch of the source file:
[51500.274637] cartographer_module: Cartographer Loading complete.

So I tried a command but:

Cartographer : master ✘ :✹ ᐅ  sudo echo "settarget libtestsfaa.so" > /proc/cartographer
zsh: permission denied: /proc/cartographer

But when I used sudo su to do the command it succeeded and the example command works!

I could open a pull request but my knowledge about linux driver development is limited, if I knew the cause of this I would've made a pull request.

Anyways my patch is:
in cartographer.c change FTRACE_OPS_FL_RECURSION_SAFE to FTRACE_OPS_FL_RECURSION,
add struct pt_regs *regs = ftrace_get_regs(fregs); to the function ftrace_thunk and change the parameter from pt_regs* regs to ftrace_regs* fregs

in kallsyms.c change it to kprobes instead of livepatch aka copy and paste the kallsyms_kp.c from h33p's repo.

@LWSS
Copy link
Owner

LWSS commented Apr 11, 2021

Yeah i'm on 5.10 and it still works, something probably changed but it looks like you figured it out.

But when I used sudo su to do the command it succeeded and the example command works!
yeah ur supposed to use | sudo tee or something like that to redirect it.

I'll probably get around to it when I update distro, thanks for the info. Also I didn't even know this was on the AUR lol.

remove module cartographer-dkms-git/r16.78a704a for kernel 5.11.11-arch1-1:
oops brainlet moment, was up for like 24 hours lol

@elitepleb elitepleb mentioned this issue Dec 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants