From: Chris Wright Date: Fri, 13 Jan 2006 02:04:29 +0000 (-0800) Subject: Add the wireless sys/class/net/if fix, fwd from akpm X-Git-Tag: v2.6.14.7~24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3d8455ef10bb689316139c1b7982041657b7167f;p=thirdparty%2Fkernel%2Fstable-queue.git Add the wireless sys/class/net/if fix, fwd from akpm --- 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 index 00000000000..c73007e74c8 --- /dev/null +++ b/queue/fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch @@ -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//wireless without dev->get_wireless_stats + +From: Andrey Borzenkov + +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 +Cc: "David S. Miller" +Cc: Jeff Garzik +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Chris Wright +--- + 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 + #include + #include ++#include + + #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) diff --git a/queue/series b/queue/series index 362c483b70d..60dda58d38b 100644 --- a/queue/series +++ b/queue/series @@ -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