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;