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