Source: broadcom-sta Version: 6.30.223.271-7 Severity: serious Tags: patch Justification: fails to build from source
linux 4.14 changed the kernel_read function prototype. linux 4.15 deprecated the init_timer function. Both functions are used by this package. I am currectly using linux 4.15-rc5 with the attached patches applied (my NIC is a Broadcom BCM4352). Not sure the patches are correct, though. Best regards, Gerardo Malazdrewicz -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.15.0-rc5-amd64 (SMP w/8 CPU cores) Locale: LANG=es_AR.UTF-8, LC_CTYPE=es_AR.UTF-8 (charmap=UTF-8), LANGUAGE=es_AR:es (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
--- a/amd64/src/shared/linux_osl.c 2017-12-29 22:59:17.000000000 -0400 +++ b/amd64/src/shared/linux_osl.c 2017-12-29 23:44:24.786247269 -0400 @@ -1076,11 +1076,21 @@ { struct file *fp = (struct file *)image; int rdlen; + loff_t pos; if (!image) return 0; - rdlen = kernel_read(fp, fp->f_pos, buf, len); + pos = fp->f_pos; + rdlen = kernel_read(fp, +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + pos, +#endif + buf, len +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) + ,&pos +#endif + ); if (rdlen > 0) fp->f_pos += rdlen;
--- a/amd64/src/wl/sys/wl_linux.c 2017-12-29 23:57:29.000000000 -0400 +++ b/amd64/src/wl/sys/wl_linux.c 2017-12-30 12:32:29.518324068 -0400 @@ -93,7 +93,13 @@ #include <wlc_wowl.h> -static void wl_timer(ulong data); +static void wl_timer( +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct timer_list *tl +#else + ulong data +#endif + ); static void _wl_timer(wl_timer_t *t); static struct net_device *wl_alloc_linux_if(wl_if_t *wlif); @@ -2295,9 +2301,19 @@ } static void -wl_timer(ulong data) -{ - wl_timer_t *t = (wl_timer_t *)data; +wl_timer( +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + struct timer_list *tl +#else + ulong data +#endif +) { + wl_timer_t *t = +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + from_timer(t, tl, timer); +#else + (wl_timer_t *)data; +#endif if (!WL_ALL_PASSIVE_ENAB(t->wl)) _wl_timer(t); @@ -2349,9 +2365,13 @@ bzero(t, sizeof(wl_timer_t)); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0) + timer_setup(&t->timer, wl_timer, 0); +#else init_timer(&t->timer); t->timer.data = (ulong) t; t->timer.function = wl_timer; +#endif t->wl = wl; t->fn = fn; t->arg = arg;