Skip to content

driver: Linuxカーネルv6.4の関数シグニチャの変更に対応 - #26

Closed
kznrluk wants to merge 1 commit into
nns779:developfrom
kznrluk:patch_kernel_v6.4
Closed

driver: Linuxカーネルv6.4の関数シグニチャの変更に対応#26
kznrluk wants to merge 1 commit into
nns779:developfrom
kznrluk:patch_kernel_v6.4

Conversation

@kznrluk

@kznrluk kznrluk commented Jul 5, 2023

Copy link
Copy Markdown

Arch Linuxにて、カーネルを 6.4.1 に更新したところDKMSのビルドが失敗するようになりました。

DKMS make.log for px4_drv-0.2.1 for kernel 6.4.1-arch2-1 (x86_64)
Wed Jul  5 15:26:58 JST 2023
'revision.h' was updated.
  CC [M]  /var/lib/dkms/px4_drv/0.2.1/build/driver/driver_module.o
  CC [M]  /var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.o
In file included from ./include/linux/linkage.h:7,
                 from ./include/linux/preempt.h:10,
                 from ./include/linux/spinlock.h:56,
                 from ./include/linux/kref.h:16,
                 from /var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.h:13,
                 from /var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.c:9:
/var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.c: In function ‘ptx_chrdev_context_create’:
./include/linux/export.h:27:22: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
   27 | #define THIS_MODULE (&__this_module)
      |                     ~^~~~~~~~~~~~~~~
      |                      |
      |                      struct module *
/var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.c:573:35: note: in expansion of macro ‘THIS_MODULE’
  573 |         ctx->class = class_create(THIS_MODULE, name);
      |                                   ^~~~~~~~~~~
In file included from ./include/linux/device.h:31,
                 from ./include/linux/cdev.h:8,
                 from /var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.h:16:
./include/linux/device/class.h:230:54: note: expected ‘const char *’ but argument is of type ‘struct module *’
  230 | struct class * __must_check class_create(const char *name);
      |                                          ~~~~~~~~~~~~^~~~
/var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.c:573:22: error: too many arguments to function ‘class_create’
  573 |         ctx->class = class_create(THIS_MODULE, name);
      |                      ^~~~~~~~~~~~
./include/linux/device/class.h:230:29: note: declared here
  230 | struct class * __must_check class_create(const char *name);
      |                             ^~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:252: /var/lib/dkms/px4_drv/0.2.1/build/driver/ptx_chrdev.o] Error 1
make[1]: *** [Makefile:2026: /var/lib/dkms/px4_drv/0.2.1/build/driver] Error 2
make: *** [Makefile:19: px4_drv.ko] Error 2

下記コミットでの変更に対応し class_create の引数を削除しました。

torvalds/linux@6e30a66
torvalds/linux@dcfbb67

@tsukumijima

Copy link
Copy Markdown

横から失礼します。
このプルリクエストでは単純に THIS_MODULE の引数が削除されていますが、それでは現状大半を占める Linux カーネル 6.3 系以前を使っているシステムでビルドできなくなってしまうのではないでしょうか。

6.3 系以前から ctx->class = class_create(name); と呼び出しても正常動作するようになっていたのだとしても、より古いカーネルを使っているシステムのサポートを鑑みると、(手前味噌にはなりますが) tsukumijima@76408ca のように 6.4 系以降と 6.3 系以前で処理を分岐させるのが適当だと考えます。

@tsukumijima

Copy link
Copy Markdown

px4_drv の開発者の @nns779 さんは残念ながら2021年9月から2年半以上ネット上から失踪されており、今後の更新は望み薄と言わざるを得ません。
私の方で引き続き px4_drv を使い続けるためのフォークを維持していますので、このページをご覧になった方はぜひ乗り換えをお勧めします (Ubuntu / Debian でしたら Debian パッケージで簡単にインストールできます) 。
https://github.com/tsukumijima/px4_drv

@kznrluk

kznrluk commented Jul 29, 2024

Copy link
Copy Markdown
Author

このプルリクエストでは単純に THIS_MODULE の引数が削除されていますが、それでは現状大半を占める Linux カーネル 6.3 系以前を使っているシステムでビルドできなくなってしまうのではないでしょうか。

ご指摘ありがとうございます。全くもってその通りです。こちらはCloseさせていただきます。

@kznrluk kznrluk closed this Jul 29, 2024
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

Successfully merging this pull request may close these issues.

2 participants