diff options
Diffstat (limited to 'drivers/ieee1394/nodemgr.c')
-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 @@ | |||
8 | * directory of the kernel sources for details. | 8 | * directory of the kernel sources for details. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/bitmap.h> | ||
11 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
12 | #include <linux/config.h> | 13 | #include <linux/config.h> |
13 | #include <linux/list.h> | 14 | #include <linux/list.h> |
@@ -334,10 +335,12 @@ static ssize_t fw_show_ne_bus_options(struct device *dev, struct device_attribut | |||
334 | static DEVICE_ATTR(bus_options,S_IRUGO,fw_show_ne_bus_options,NULL); | 335 | static DEVICE_ATTR(bus_options,S_IRUGO,fw_show_ne_bus_options,NULL); |
335 | 336 | ||
336 | 337 | ||
338 | /* tlabels_free, tlabels_allocations, tlabels_mask are read non-atomically | ||
339 | * here, therefore displayed values may be occasionally wrong. */ | ||
337 | static ssize_t fw_show_ne_tlabels_free(struct device *dev, struct device_attribute *attr, char *buf) | 340 | static ssize_t fw_show_ne_tlabels_free(struct device *dev, struct device_attribute *attr, char *buf) |
338 | { | 341 | { |
339 | struct node_entry *ne = container_of(dev, struct node_entry, device); | 342 | struct node_entry *ne = container_of(dev, struct node_entry, device); |
340 | return sprintf(buf, "%d\n", atomic_read(&ne->tpool->count.count) + 1); | 343 | return sprintf(buf, "%d\n", 64 - bitmap_weight(ne->tpool->pool, 64)); |
341 | } | 344 | } |
342 | static DEVICE_ATTR(tlabels_free,S_IRUGO,fw_show_ne_tlabels_free,NULL); | 345 | static DEVICE_ATTR(tlabels_free,S_IRUGO,fw_show_ne_tlabels_free,NULL); |
343 | 346 | ||