lkrg-org/lkrg

build error: Error! Bad return status for module build on kernel

Closed this issue · 4 comments

kmille commented

Hey,
on my Arch Linux lkrg fails to build right now:

kmille@linbox:modules uname -r
6.1.31-hardened1-1-hardened

kmille@linbox:modules dkms status
lkrg/r489.ff18ec6: added

kmille@linbox:modules sudo dkms build -m lkrg/r489.ff18ec6
Sign command: /usr/lib/modules/6.1.31-hardened1-1-hardened/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Building module:
Cleaning build area...
make -j4 KERNELRELEASE=6.1.31-hardened1-1-hardened P_KVER=6.1.31-hardened1-1-hardened......(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.1.31-hardened1-1-hardened (x86_64)
Consult /var/lib/dkms/lkrg/r489.ff18ec6/build/make.log for more information.
kmille@linbox:modules 

kmille@linbox:modules cat /var/lib/dkms/lkrg/r489.ff18ec6/build/make.log
DKMS make.log for lkrg-r489.ff18ec6 for kernel 6.1.31-hardened1-1-hardened (x86_64)
Sun Jun  4 06:43:04 PM CEST 2023
make -C /lib/modules/6.1.31-hardened1-1-hardened/build M=/var/lib/dkms/lkrg/r489.ff18ec6/build modules
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/ksyms/p_resolve_ksym.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/hashing/p_lkrg_fast_hash.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/comm_channel/p_comm_channel.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/integrity_timer/p_integrity_timer.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/kmod/p_kmod.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/CPU.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/arch/x86/p_x86_metadata.o
In file included from ./include/linux/srcu.h:21,
                 from ./include/linux/notifier.h:16,
                 from ./arch/x86/include/asm/uprobes.h:13,
                 from ./include/linux/uprobes.h:49,
                 from ./include/linux/mm_types.h:16,
                 from ./include/linux/buildid.h:5,
                 from ./include/linux/module.h:14,
                 from /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/integrity_timer/../../p_lkrg_main.h:26,
                 from /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/integrity_timer/p_integrity_timer.c:18:
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/integrity_timer/p_integrity_timer.c: In function ‘p_offload_cache_delete’:
./include/linux/workqueue.h:640:17: warning: call to ‘__warn_flushing_systemwide_wq’ declared with attribute warning: Please avoid flushing system-wide workqueues. [-Wattribute-warning]
  640 |                 __warn_flushing_systemwide_wq();                        \
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/integrity_timer/p_integrity_timer.c:54:4: note: in expansion of macro ‘flush_workqueue’
   54 |    flush_workqueue(system_unbound_wq);
      |    ^~~~~~~~~~~~~~~
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/arch/x86/p_switch_idt/p_switch_idt.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/arch/arm64/p_arm64_metadata.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/arch/arm/p_arm_metadata.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/arch/p_arch_metadata.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/JUMP_LABEL/p_arch_jump_label_transform/p_arch_jump_label_transform.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/JUMP_LABEL/p_arch_jump_label_transform_apply/p_arch_jump_label_transform_apply.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/FTRACE/p_ftrace_modify_all_code/p_ftrace_modify_all_code.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/FTRACE/p_ftrace_enable_sysctl/p_ftrace_enable_sysctl.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/TRACEPOINT/p_arch_static_call_transform/p_arch_static_call_transform.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/database/p_database.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/p_notifiers.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/self-defense/hiding/p_hiding.o
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/exploit_detection/p_rb_ed_trees/p_rb_ed_pids/p_rb_ed_pids_tree.o
In file included from /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/../../p_lkrg_main.h:400,
                 from /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/p_notifiers.c:22:
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/p_notifiers.c: In function ‘p_freq_transition_notifier’:
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/../../modules/notifiers/p_notifiers.h:39:28: error: implicit declaration of function ‘get_random_int’; did you mean ‘get_random_long’? [-Werror=implicit-function-declaration]
   39 | #define P_CHECK_RANDOM(x) (get_random_int() <= x)
      |                            ^~~~~~~~~~~~~~
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/../../modules/notifiers/p_notifiers.h:43:33: note: in expansion of macro ‘P_CHECK_RANDOM’
   43 |    if (rate == P_ALWAYS_RATE || P_CHECK_RANDOM(rate)) {                    \
      |                                 ^~~~~~~~~~~~~~
/var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/p_notifiers.c:153:4: note: in expansion of macro ‘P_TRY_OFFLOAD_NOTIFIER’
  153 |    P_TRY_OFFLOAD_NOTIFIER(P_OFTEN_RATE, "p_freq_transition_notifier");
      |    ^~~~~~~~~~~~~~~~~~~~~~
  CC [M]  /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/exploit_detection/syscalls/p_install.o
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:250: /var/lib/dkms/lkrg/r489.ff18ec6/build/src/modules/notifiers/p_notifiers.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:2012: /var/lib/dkms/lkrg/r489.ff18ec6/build] Error 2
make: *** [Makefile:99: all] Error 2
kmille commented

I could fix it in /usr/src/lkrg-r489.ff18ec6/src/modules/notifiers/p_notifiers.h line 39

replace #define P_CHECK_RANDOM(x) (get_random_int() <= x) with #define P_CHECK_RANDOM(x) (get_random_long() <= x). Can you fix this upstream?

Thanks @kmille for reporting the issue. Sorry for late reply but I was in the middle of the move and I'm just setting my computers up (still waiting for some of them to arrive). I will try top take a look at it as soon as I have a free cycles to find out if changing _int to _long won't break other (and older) distros.

@kmille It looks like you're building an outdated version of LKRG, and we had already fixed this issue in 2241a32 before releasing LKRG 0.9.6. Arch's package at https://aur.archlinux.org/packages/lkrg-dkms is already of version 0.9.6. So why/how do you end up building an older version?

Since this doesn't look like a current issue that we'd need to track, I'm closing it now, but please feel free to add comments.

kmille commented

I have lkrg-dkms-git installed.

kmille@linbox:bin pacman -Qi lkrg-dkms-git             
Name            : lkrg-dkms-git
Version         : r489.ff18ec6-1
Description     : Linux Kernel Runtime Guard (DKMS)
Architecture    : any
URL             : https://www.openwall.com/lkrg/
Licenses        : GPL2
Groups          : None
Provides        : lkrg-dkms
Depends On      : dkms
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : lkrg-dkms
Replaces        : None
Installed Size  : 657.56 KiB
Packager        : Unknown Packager
Build Date      : Fri 05 Aug 2022 10:10:21 AM CEST
Install Date    : Fri 05 Aug 2022 10:11:53 AM CEST
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : None

It uses https://github.com/openwall/lkrg/ as upstream url. I don't know how up-to-date it is. But it "should" work. Maybe I just missed the last update. Thanks for updating it upstream!