]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Add the wireless sys/class/net/if fix, fwd from akpm
authorChris Wright <chrisw@sous-sol.org>
Fri, 13 Jan 2006 02:04:29 +0000 (18:04 -0800)
committerChris Wright <chrisw@sous-sol.org>
Fri, 13 Jan 2006 02:04:29 +0000 (18:04 -0800)
queue/fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch [new file with mode: 0644]
queue/series

diff --git a/queue/fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch b/queue/fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch
new file mode 100644 (file)
index 0000000..c73007e
--- /dev/null
@@ -0,0 +1,87 @@
+From stable-bounces@linux.kernel.org  Mon Jan  9 20:55:50 2006
+Message-Id: <200601100451.k0A4peCq010247@shell0.pdx.osdl.net>
+To: torvalds@osdl.org
+From: akpm@osdl.org
+Date: Mon, 09 Jan 2006 20:51:28 -0800
+Cc: arvidjaar@mail.ru, jgarzik@pobox.com, davem@davemloft.net, stable@kernel.org
+Subject: [PATCH] fix /sys/class/net/<if>/wireless without dev->get_wireless_stats
+
+From: Andrey Borzenkov <arvidjaar@mail.ru>
+
+dev->get_wireless_stats is deprecated but removing it also removes wireless
+subdirectory in sysfs. This patch puts it back.
+
+akpm: I don't know what's happening here.  This might be appropriate as a
+2.6.15.x compatibility backport.  Waiting to hear from Jeff.
+
+Signed-off-by: Andrey Borzenkov <arvidjaar@mail.ru>
+Cc: "David S. Miller" <davem@davemloft.net>
+Cc: Jeff Garzik <jgarzik@pobox.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ net/core/net-sysfs.c |   28 +++++++++++++++++++---------
+ 1 file changed, 19 insertions(+), 9 deletions(-)
+
+--- linux-2.6.15.y.orig/net/core/net-sysfs.c
++++ linux-2.6.15.y/net/core/net-sysfs.c
+@@ -16,6 +16,7 @@
+ #include <net/sock.h>
+ #include <linux/rtnetlink.h>
+ #include <linux/wireless.h>
++#include <net/iw_handler.h>
+ #define to_class_dev(obj) container_of(obj,struct class_device,kobj)
+ #define to_net_dev(class) container_of(class, struct net_device, class_dev)
+@@ -313,13 +314,19 @@ static ssize_t wireless_show(struct clas
+                                              char *))
+ {
+       struct net_device *dev = to_net_dev(cd);
+-      const struct iw_statistics *iw;
++      const struct iw_statistics *iw = NULL;
+       ssize_t ret = -EINVAL;
+       
+       read_lock(&dev_base_lock);
+-      if (dev_isalive(dev) && dev->get_wireless_stats 
+-          && (iw = dev->get_wireless_stats(dev)) != NULL) 
+-              ret = (*format)(iw, buf);
++      if (dev_isalive(dev)) {
++              if(dev->wireless_handlers &&
++                 dev->wireless_handlers->get_wireless_stats)
++                      iw = dev->wireless_handlers->get_wireless_stats(dev);
++              else if (dev->get_wireless_stats)
++                      iw = dev->get_wireless_stats(dev);
++              if (iw != NULL)
++                      ret = (*format)(iw, buf);
++      }
+       read_unlock(&dev_base_lock);
+       return ret;
+@@ -420,7 +427,8 @@ void netdev_unregister_sysfs(struct net_
+               sysfs_remove_group(&class_dev->kobj, &netstat_group);
+ #ifdef WIRELESS_EXT
+-      if (net->get_wireless_stats)
++      if (net->get_wireless_stats || (net->wireless_handlers &&
++                      net->wireless_handlers->get_wireless_stats))
+               sysfs_remove_group(&class_dev->kobj, &wireless_group);
+ #endif
+       class_device_del(class_dev);
+@@ -453,10 +461,12 @@ int netdev_register_sysfs(struct net_dev
+               goto out_unreg; 
+ #ifdef WIRELESS_EXT
+-      if (net->get_wireless_stats &&
+-          (ret = sysfs_create_group(&class_dev->kobj, &wireless_group)))
+-              goto out_cleanup; 
+-
++      if (net->get_wireless_stats || (net->wireless_handlers &&
++                      net->wireless_handlers->get_wireless_stats)) {
++              ret = sysfs_create_group(&class_dev->kobj, &wireless_group);
++              if (ret)
++                      goto out_cleanup;
++      }
+       return 0;
+ out_cleanup:
+       if (net->get_stats)
index 362c483b70d85b4152276b018276ac2ada90f2ad..60dda58d38b44b27748794fea81a6497c428c5ea 100644 (file)
@@ -13,3 +13,4 @@ sparc64-fix-ptrace.patch
 sparc64-fix-sys_fstat64-entry-in-64-bit-syscall-table.patch
 fix-DoS-in-netlink_rcv_skb.patch
 moxa-serial-add-proper-capability-check.patch
+fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch