From: Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com>
Date: Wed, 25 Sep 2019 14:47:11 +0000 (+0300)
Subject: trelay: handle netdevice events correctly
X-Git-Tag: v1.5.0-rc3~17
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f7a087029e8d20d442ccccfd44b8098f41e22609;p=librecmc%2Flibrecmc.git

trelay: handle netdevice events correctly

Since v3.11, netdevice notification data are of type
"struct netdev_notifier_info". Handle it as such!

This should fix a critical bug in which devices are unable get released
because trelay does not release resources in response to UNREGISTER
event spamming the log with something like:

unregister_netdevice: waiting for eth0.1 to become free. Usage count = 1

Signed-off-by: Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com>
(cherry picked from commit 77cfc0739d30c1282f7de24d2ec086d244e34bb7)
---

diff --git a/package/kernel/trelay/src/trelay.c b/package/kernel/trelay/src/trelay.c
index 581a5cfd2f..d09dc07246 100644
--- a/package/kernel/trelay/src/trelay.c
+++ b/package/kernel/trelay/src/trelay.c
@@ -86,7 +86,7 @@ static struct trelay *trelay_find(struct net_device *dev)
 static int tr_device_event(struct notifier_block *unused, unsigned long event,
 			   void *ptr)
 {
-	struct net_device *dev = ptr;
+	struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 	struct trelay *tr;
 
 	if (event != NETDEV_UNREGISTER)