--- /dev/null
+From: Hugo Osvaldo Barrera <hugo@barrera.io>
+
+Downloaded from https://gist.github.com/hobarrera/ac0e6225210ac5bb13f6#file-broadcom-sta-6-30-223-248-linux-3-18-null-pointer-crash-patch
+
+--
+Index: broadcom-sta/amd64/src/wl/sys/wl_linux.c
+===================================================================
+--- broadcom-sta.orig/src/wl/sys/wl_linux.c
++++ broadcom-sta/src/wl/sys/wl_linux.c
+@@ -2162,8 +2162,8 @@ wl_start(struct sk_buff *skb, struct net
+ wlif = WL_DEV_IF(dev);
+ wl = WL_INFO(dev);
+
++ skb->prev = NULL;
+ if (WL_ALL_PASSIVE_ENAB(wl) || (WL_RTR() && WL_CONFIG_SMP())) {
+- skb->prev = NULL;
+
+ TXQ_LOCK(wl);
+
--- /dev/null
+
+Package: broadcom-sta-source
+Version: 6.30.223.271-3
+
+Looking at the patch for kernel 4.8, I came up with the attached patch
+(and I send this mail while running it :)
+
+Thanks,
+Koos Vriezen
+
+
+--- broadcom-sta.orig/src/wl/sys/wl_cfg80211_hybrid.c.orig 2016-10-03 10:53:55.588036464 +0200
++++ broadcom-sta.orig/src/wl/sys/wl_cfg80211_hybrid.c 2016-10-03 10:54:11.911695944 +0200
+@@ -2386,8 +2386,15 @@
+ s32 err = 0;
+
+ if (wl->scan_request) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
++ struct cfg80211_scan_info info = {
++ .aborted = true
++ };
+ WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
+- cfg80211_scan_done(wl->scan_request, true);
++ cfg80211_scan_done(wl->scan_request, &info);
++#else
++ cfg80211_scan_done(wl->scan_request, true);
++#endif
+ wl->scan_request = NULL;
+ }
+
+@@ -2488,7 +2495,14 @@
+
+ scan_done_out:
+ if (wl->scan_request) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
++ struct cfg80211_scan_info info = {
++ .aborted = false
++ };
++ cfg80211_scan_done(wl->scan_request, &info);
++#else
+ cfg80211_scan_done(wl->scan_request, false);
++#endif
+ wl->scan_request = NULL;
+ }
+ rtnl_unlock();
+@@ -2913,7 +2927,14 @@
+ s32 err = 0;
+
+ if (wl->scan_request) {
+- cfg80211_scan_done(wl->scan_request, true);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
++ struct cfg80211_scan_info info = {
++ .aborted = true
++ };
++ cfg80211_scan_done(wl->scan_request, &info);
++#else
++ cfg80211_scan_done(wl->scan_request, true);
++#endif
+ wl->scan_request = NULL;
+ }
+
%define _duplicate_files_terminate_build 0
-%define rel 2
+%define rel 3
%define pname wl
%define file_ver %(echo %{version} | tr . _)
Summary: Broadcom 802.11 a/b/g/n hybrid Linux networking device driver
# Source2-md5: 8a6e8708a5e00ab6d841cde51d70eb1b
Source3: dkms.conf
Source4: modprobe.conf
+Patch0: 13-broadcom-sta-6.30.223.248-linux-3.18-null-pointer-crash.patch
Patch1: gcc-4.9.patch
Patch2: no-dead-code.patch
Patch3: linux-4.7.patch
+Patch4: linux-4.8.patch
URL: http://www.broadcom.com/support/802.11/linux_sta.php
BuildRequires: rpmbuild(macros) >= 1.701
%{?with_kernel:%{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}}
%define src 0
%endif
%setup -c -T -q -n %{pname}-%{version} -b%{src}
+%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
mkdir wl
mv lib src Makefile wl/