As of 3.14.9 unregister_netdevice_many() in net/core/dev.c includes a
 list_del().  This means that any code that calls ieee80211_remove_interfaces()
 will oops when using 3.14 kernels newer than 3.14.9.  Check that kernel 
 version is not a 3.14.x newer than 3.14.8 before adding list_del() in
 ieee80211_remove_interfaces().  Fixes rmmod for mwl8k.

Mark Milburn (1):
  Protect 3.14.9 and higher 3.14 kernels from extra list_del

 package/kernel/mac80211/patches/008-fix_netdev_unregister.patch | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
Signed-off-by: Mark Milburn <mark.a.milb...@gmail.com>
-- 
 package/kernel/mac80211/patches/008-fix_netdev_unregister.patch | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/kernel/mac80211/patches/008-fix_netdev_unregister.patch 
b/package/kernel/mac80211/patches/008-fix_netdev_unregister.patch
index bd36215..18019d2 100644
--- a/package/kernel/mac80211/patches/008-fix_netdev_unregister.patch
+++ b/package/kernel/mac80211/patches/008-fix_netdev_unregister.patch
@@ -1,11 +1,13 @@
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
-@@ -1825,6 +1825,11 @@ void ieee80211_remove_interfaces(struct
+@@ -1825,6 +1825,13 @@ void ieee80211_remove_interfaces(struct
        }
        mutex_unlock(&local->iflist_mtx);
        unregister_netdevice_many(&unreg_list);
 +#if (!(LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,45) && \
 +       LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)) && \
++       !(LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,9) && \
++       LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)) && \
 +     (LINUX_VERSION_CODE < KERNEL_VERSION(3,16,0)))
 +      list_del(&unreg_list);
 +#endif
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to