lkrg-org/lkrg

Build error on post-6.4 kernel: 'struct ctl_table' has no member named 'child'

Closed this issue · 5 comments

make -C /lib/modules/6.5.0-060500rc1daily20230710-generic/build M=/root/src modules
make[1]: Entering directory '/usr/src/linux-headers-6.5.0-060500rc1daily20230710-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-3ubuntu1) 12.3.0
  You are using:           gcc-12 (Ubuntu 12.3.0-3ubuntu1) 12.3.0
  CC [M]  /root/src/src/modules/hashing/p_lkrg_fast_hash.o
  CC [M]  /root/src/src/modules/ksyms/p_resolve_ksym.o
  CC [M]  /root/src/src/modules/comm_channel/p_comm_channel.o
  CC [M]  /root/src/src/modules/integrity_timer/p_integrity_timer.o
/root/src/src/modules/comm_channel/p_comm_channel.c:145:8: error: 'struct ctl_table' has no member named 'child'
  145 |       .child       = p_lkrg_sysctl_table,
      |        ^~~~~
/root/src/src/modules/comm_channel/p_comm_channel.c:145:22: error: positional initialization of field in 'struct' declared with 'designated_init' attribute [-Werror=designated-init]
  145 |       .child       = p_lkrg_sysctl_table,
      |                      ^~~~~~~~~~~~~~~~~~~
/root/src/src/modules/comm_channel/p_comm_channel.c:145:22: note: (near initialization for 'p_lkrg_sysctl_base[0]')
/root/src/src/modules/comm_channel/p_comm_channel.c:145:22: error: incompatible types when initializing type 'enum <anonymous>' using type 'struct ctl_table *'
/root/src/src/modules/comm_channel/p_comm_channel.c: In function 'p_register_comm_channel':
/root/src/src/modules/comm_channel/p_comm_channel.c:1268:28: error: implicit declaration of function 'register_sysctl_table'; did you mean 'unregister_sysctl_table'? [-Werror=implicit-function-declaration]
 1268 |    if ( (p_sysctl_handle = register_sysctl_table(p_lkrg_sysctl_base)) == NULL) {
      |                            ^~~~~~~~~~~~~~~~~~~~~
      |                            unregister_sysctl_table
/root/src/src/modules/comm_channel/p_comm_channel.c:1268:26: warning: assignment to 'struct ctl_table_header *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
 1268 |    if ( (p_sysctl_handle = register_sysctl_table(p_lkrg_sysctl_base)) == NULL) {
      |                          ^
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /root/src/src/modules/comm_channel/p_comm_channel.o] Error 1

You use kernel 6.5 and not 6.4.

I get a different error with kernel 6.4

$ cat /var/lib/dkms/lkrg/0.9.6/build/make.log
DKMS make.log for lkrg-0.9.6 for kernel 6.4.3-zen1-1-zen (x86_64)
Mi 12. Jul 09:29:33 CEST 2023
make -C /lib/modules/6.4.3-zen1-1-zen/build M=/var/lib/dkms/lkrg/0.9.6/build modules
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/p_resolve_ksym.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/p_lkrg_fast_hash.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/p_comm_channel.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/p_integrity_timer.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/p_verify_kprobes.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/p_kmod.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/CPU.o
  CC [M]  /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/p_x86_metadata.o
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/p_lkrg_fast_hash.c:22:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/p_resolve_ksym.c:19:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/p_comm_channel.c:18:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/p_kmod.c:22:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/p_x86_metadata.c:29:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/CPU.c:44:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/../../../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/database/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/p_integrity_timer.c:18:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/hashing/p_lkrg_fast_hash.o] Fehler 1
make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet …
In Datei, eingebunden von /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../p_lkrg_main.h:405,
                 von /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/p_verify_kprobes.c:18:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h:106:16: Fehler: »struct module« hat kein Element namens »core_layout«
  106 |    return p_mod->core_layout.base;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h:110:16: Fehler: »struct module« hat kein Element namens »core_layout«
  110 |    return p_mod->core_layout.size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h:114:16: Fehler: »struct module« hat kein Element namens »core_layout«
  114 |    return p_mod->core_layout.text_size;
      |                ^~
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h: In Funktion »p_init_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/../../../modules/wrap/p_struct_wrap.h:118:16: Fehler: »struct module« hat kein Element namens »init_layout«
  118 |    return p_mod->init_layout.text_size;
      |                ^~
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/ksyms/p_resolve_ksym.o] Fehler 1
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/CPU.o] Fehler 1
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/verify_kprobes/p_verify_kprobes.o] Fehler 1
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/database/arch/x86/p_x86_metadata.o] Fehler 1
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_module_core«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:107:1: Fehler: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Werror=return-type]
  107 | }
      | ^
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h: In Funktion »p_core_text_size«:
/var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/../../modules/wrap/p_struct_wrap.h:115:1: Fehler: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Werror=return-type]
  115 | }
      | ^
cc1: Einige Warnungen werden als Fehler behandelt
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/kmod/p_kmod.o] Fehler 1
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/comm_channel/p_comm_channel.o] Fehler 1
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/lkrg/0.9.6/build/src/modules/integrity_timer/p_integrity_timer.o] Fehler 1
make[1]: *** [Makefile:2024: /var/lib/dkms/lkrg/0.9.6/build] Fehler 2
make: *** [Makefile:100: all] Fehler 2

I see that my error is already fixed in the git history.

Would it be possible to create a new release for us stable kernel 6.4 users?
And maybe a release for every new stable minor release of the linux kernel if we need a compatibility fix?

@MartinX3 Yes, you're running into an older and already fixed issue, #267. And yes, we should ideally be making releases whenever such compatibility issues occur with latest kernel releases. At this time, I think we should fix this new issue first, before making a release, to use our time more optimally.

Here's an example of how a module is supposed to adapt to these changes

That was an overly complicated special case. In most other cases, it's much simpler. Testing a fix now.