CC [M] /var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.o
/var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.c: In function ‘gasket_register_device’:
/var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.c:1846:47: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
1846 | internal->class = class_create(driver_desc->module, driver_desc->name);
| ~~~~~~~~~~~^~~~~~~~
| |
| struct module *
In file included from ./include/linux/device.h:31,
from ./include/linux/cdev.h:8,
from /var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.h:11,
from /var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.c:12:
./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/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.c:1846:23: error: too many arguments to function ‘class_create’
1846 | internal->class = class_create(driver_desc->module, driver_desc->name);
| ^~~~~~~~~~~~
In file included from ./include/linux/device.h:31,
from ./include/linux/cdev.h:8,
from /var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.h:11,
from /var/lib/dkms/gasket/0.0.git.256.b6a7c6d8/build/gasket_core.c:12:
./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
Is there any way to rewrite this to be more flexible (i.e. not depend on a kernel version check)?
/* Function signature for `class_create()` is changed in kernel >= 6.4.x
* to only accept a single argument.
* */
#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)
internal->class = class_create(driver_desc->module, driver_desc->name);
#else
internal->class = class_create(driver_desc->name);
#endif