aosc-os-abbs icon indicating copy to clipboard operation
aosc-os-abbs copied to clipboard

broadcom-wl: kernel module cannot be compiled under Linux 5.13.0

Open taoky opened this issue 2 years ago • 0 comments

Package & system version

  • broadcom-wl 6.30.223.271-4
  • dkms 1:2.8.3
  • linux-kernel-5.13.0 1:5.13.0
  • gcc 10.3.1+git20210510
$ uname -a
Linux AOSCVLAB 5.13.0-aosc-main #1 SMP PREEMPT Thu Jul 8 21:34:00 CST 2021 x86_64 GNU/Linux

Bug description

Broadcom wl kernel modules cannot be built successfully when installing broadcom-wl package.

The contents of /var/lib/dkms/broadcom-wl/6.30.223.271/build/make.log:

DKMS make.log for broadcom-wl-6.30.223.271 for kernel 5.13.0-aosc-main (x86_64)
Thu Jul 22 00:00:59 CST 2021
make: Entering directory '/usr/src/linux-headers-5.13.0'
CFG80211 API is prefered for this kernel version
Using CFG80211 API
  CC [M]  /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.o
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c: In function ‘osl_reg_map’:
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:949:10: error: implicit declaration of function ‘ioremap_nocache’; did you mean ‘ioremap_cache’? [-Werror=implicit-function-declaration]
  949 |  return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
      |          ^~~~~~~~~~~~~~~
      |          ioremap_cache
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:949:10: warning: returning ‘int’ from a function with return type ‘void *’ makes pointer from integer without a cast [-Wint-conversion]
  949 |  return (ioremap_nocache((unsigned long)pa, (unsigned long)size));
      |         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c: In function ‘osl_os_get_image_block’:
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:1083:28: warning: passing argument 2 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion]
 1083 |  rdlen = kernel_read(fp, fp->f_pos, buf, len);
      |                          ~~^~~~~~~
      |                            |
      |                            loff_t {aka long long int}
In file included from ./include/linux/huge_mm.h:8,
                 from ./include/linux/mm.h:726,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/include/linuxver.h:65,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:3113:43: note: expected ‘void *’ but argument is of type ‘loff_t’ {aka ‘long long int’}
 3113 | extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
      |                                           ^~~~~~
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:1083:37: warning: passing argument 3 of ‘kernel_read’ makes integer from pointer without a cast [-Wint-conversion]
 1083 |  rdlen = kernel_read(fp, fp->f_pos, buf, len);
      |                                     ^~~
      |                                     |
      |                                     char *
In file included from ./include/linux/huge_mm.h:8,
                 from ./include/linux/mm.h:726,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/include/linuxver.h:65,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:3113:51: note: expected ‘size_t’ {aka ‘long unsigned int’} but argument is of type ‘char *’
 3113 | extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
      |                                                   ^~~~~~
/var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:1083:42: warning: passing argument 4 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion]
 1083 |  rdlen = kernel_read(fp, fp->f_pos, buf, len);
      |                                          ^~~
      |                                          |
      |                                          int
In file included from ./include/linux/huge_mm.h:8,
                 from ./include/linux/mm.h:726,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/include/linuxver.h:65,
                 from /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:3113:59: note: expected ‘loff_t *’ {aka ‘long long int *’} but argument is of type ‘int’
 3113 | extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
      |                                                           ^~~~~~~~
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:272: /var/lib/dkms/broadcom-wl/6.30.223.271/build/src/shared/linux_osl.o] Error 1
make: *** [Makefile:1847: /var/lib/dkms/broadcom-wl/6.30.223.271/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.13.0'

Steps to reproduce

sudo apt install broadcom-wl

It seems that the source code in the package is only tested under Linux 4.x. I tried with https://github.com/antoineco/broadcom-wl, and it can be compiled under Linux 5.13 (with CONFIG_MODULE_SIG=n added to Makefile to bypass the error module verification failed: signature and/or required key missing - tainting kernel)

taoky avatar Jul 21 '21 16:07 taoky