From f83c3d758e024e717c77c03b6f2f8ceccff0f004 Mon Sep 17 00:00:00 2001 From: Pavel Roskin Date: Fri, 8 Nov 2013 16:42:54 -0500 Subject: [PATCH] Use netdev_notifier_info_to_dev(), needed for Linux 3.11+ Not using netdev_notifier_info_to_dev() gives no compile warnings but crashes the kernel, so this patch is intentionally applied before Linux 3.10 procfs support is enabled to avoid a revision that compiles and crashes on new kernels. --- ath/if_ath.c | 2 +- include/compat.h | 4 ++++ net80211/ieee80211_linux.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ath/if_ath.c b/ath/if_ath.c index a0d7eb8..1c87bba 100644 --- a/ath/if_ath.c +++ b/ath/if_ath.c @@ -12359,7 +12359,7 @@ static int ath_rcv_dev_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct net_device *dev = (struct net_device *)ptr; + struct net_device *dev = netdev_notifier_info_to_dev(ptr); struct ath_softc *sc = (struct ath_softc *)netdev_priv(dev); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) diff --git a/include/compat.h b/include/compat.h index c29f57a..700229b 100644 --- a/include/compat.h +++ b/include/compat.h @@ -242,6 +242,10 @@ typedef unsigned long resource_size_t; #endif #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) +#define netdev_notifier_info_to_dev(ptr) ((struct net_device *)(ptr)) +#endif + #endif /* __KERNEL__ */ #endif /* _ATH_COMPAT_H_ */ diff --git a/net80211/ieee80211_linux.c b/net80211/ieee80211_linux.c index c954aeb..a97bedb 100644 --- a/net80211/ieee80211_linux.c +++ b/net80211/ieee80211_linux.c @@ -1186,7 +1186,7 @@ static int ieee80211_rcv_dev_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct net_device *dev = (struct net_device *)ptr; + struct net_device *dev = netdev_notifier_info_to_dev(ptr); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) if (!dev || dev->open != &ieee80211_open) -- 2.35.1