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

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

Closed
solardiz opened this issue Jul 10, 2023 · 5 comments · Fixed by #282
Closed

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

solardiz opened this issue Jul 10, 2023 · 5 comments · Fixed by #282

Comments

@solardiz
Copy link
Contributor

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
@MartinX3
Copy link

MartinX3 commented Jul 12, 2023

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

@MartinX3
Copy link

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?

@solardiz
Copy link
Contributor Author

@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.

solardiz added a commit to solardiz/lkrg that referenced this issue Jul 13, 2023
This is needed for post-6.4 kernels.

Fixes lkrg-org#280
@solardiz
Copy link
Contributor Author

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.

Adam-pi3 pushed a commit that referenced this issue Jul 16, 2023
This is needed for post-6.4 kernels.

Fixes #280
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants