kernel: ledtrig-netdev: use netdev_notifier_info
authorLuka Perkov <luka@openwrt.org>
Tue, 8 Jul 2014 23:27:44 +0000 (23:27 +0000)
committerLuka Perkov <luka@openwrt.org>
Tue, 8 Jul 2014 23:27:44 +0000 (23:27 +0000)
Since kernel 3.11, the third parameter passed to notifier_call()
is of type struct netdev_notifier_info. This patch fixes an oops
when setting a netdev LED trigger.

Signed-off-by: Claudio Leite <leitec@staticky.com>
SVN-Revision: 41552

target/linux/generic/patches-3.12/831-ledtrig_netdev.patch
target/linux/generic/patches-3.13/831-ledtrig_netdev.patch
target/linux/generic/patches-3.14/831-ledtrig_netdev.patch

index 837a669..3ad4041 100644 (file)
  #include <linux/netdevice.h>
  #include <linux/timer.h>
  #include <linux/ctype.h>
-@@ -307,8 +306,9 @@ done:
+@@ -254,7 +253,7 @@ static int netdev_trig_notify(struct not
+                             unsigned long evt,
+                             void *dv)
+ {
+-      struct net_device *dev = dv;
++      struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
+       struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
+       if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
+@@ -294,8 +293,9 @@ done:
  static void netdev_trig_timer(unsigned long arg)
  {
        struct led_netdev_data *trigger_data = (struct led_netdev_data *)arg;
@@ -40,7 +49,7 @@
  
        write_lock(&trigger_data->lock);
  
-@@ -318,7 +318,7 @@ static void netdev_trig_timer(unsigned l
+@@ -305,7 +305,7 @@ static void netdev_trig_timer(unsigned l
                goto no_restart;
        }
  
index 6884346..77bc8cc 100644 (file)
  #include <linux/netdevice.h>
  #include <linux/timer.h>
  #include <linux/ctype.h>
-@@ -307,8 +306,9 @@ done:
+@@ -254,7 +253,7 @@ static int netdev_trig_notify(struct not
+                             unsigned long evt,
+                             void *dv)
+ {
+-      struct net_device *dev = dv;
++      struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
+       struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
+       if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
+@@ -294,8 +293,9 @@ done:
  static void netdev_trig_timer(unsigned long arg)
  {
        struct led_netdev_data *trigger_data = (struct led_netdev_data *)arg;
@@ -40,7 +49,7 @@
  
        write_lock(&trigger_data->lock);
  
-@@ -318,7 +318,7 @@ static void netdev_trig_timer(unsigned l
+@@ -305,7 +305,7 @@ static void netdev_trig_timer(unsigned l
                goto no_restart;
        }
  
index 1fdd6e8..77bc8cc 100644 (file)
  #include <linux/netdevice.h>
  #include <linux/timer.h>
  #include <linux/ctype.h>
+@@ -254,7 +253,7 @@ static int netdev_trig_notify(struct not
+                             unsigned long evt,
+                             void *dv)
+ {
+-      struct net_device *dev = dv;
++      struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
+       struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
+       if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
 @@ -294,8 +293,9 @@ done:
  static void netdev_trig_timer(unsigned long arg)
  {