diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2006-06-25 14:46:44 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-25 19:00:54 +0200 |
commit | 09a9a45dc62fef5f46a0dc98a3cefdb464cc4aaa (patch) | |
tree | 6ed1877420d2af9a2ac71cbafe0c515fc257b409 /drivers/ieee1394/nodemgr.c | |
parent | [PATCH] remove for_each_cpu() (diff) | |
download | linux-09a9a45dc62fef5f46a0dc98a3cefdb464cc4aaa.tar.xz linux-09a9a45dc62fef5f46a0dc98a3cefdb464cc4aaa.zip |
[PATCH] ieee1394: nodemgr: do not peek into struct semaphore
Also revert patch "frv: ieee1394 is borken on frv", as it no longer is.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: David Howells <dhowells@redhat.com>
Cc: Jody McIntyre <scjody@modernduck.com>
Cc: Ben Collins <bcollins@ubuntu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to '')
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index 948f1b8c4238..50c71e17de73 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c @@ -8,6 +8,7 @@ * directory of the kernel sources for details. */ +#include <linux/bitmap.h> #include <linux/kernel.h> #include <linux/config.h> #include <linux/list.h> @@ -334,10 +335,12 @@ static ssize_t fw_show_ne_bus_options(struct device *dev, struct device_attribut static DEVICE_ATTR(bus_options,S_IRUGO,fw_show_ne_bus_options,NULL); +/* tlabels_free, tlabels_allocations, tlabels_mask are read non-atomically + * here, therefore displayed values may be occasionally wrong. */ static ssize_t fw_show_ne_tlabels_free(struct device *dev, struct device_attribute *attr, char *buf) { struct node_entry *ne = container_of(dev, struct node_entry, device); - return sprintf(buf, "%d\n", atomic_read(&ne->tpool->count.count) + 1); + return sprintf(buf, "%d\n", 64 - bitmap_weight(ne->tpool->pool, 64)); } static DEVICE_ATTR(tlabels_free,S_IRUGO,fw_show_ne_tlabels_free,NULL); |