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;

Reply via email to