summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Polyakov <johnpol@2ka.mipt.ru>2008-01-14 08:55:08 (GMT)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-01-14 16:52:22 (GMT)
commita2a6c74d34c3ae9de6825767a30ab17f709b59ce (patch)
tree573b0117cbb90c87ee6fa0355870949b66159866
parentcb2a52052cebe4716e83b9d2e53682ba00f67de6 (diff)
downloadlinux-fsl-qoriq-a2a6c74d34c3ae9de6825767a30ab17f709b59ce.tar.xz
w1: decrement slave counter only in ->release() callback
Decrement the slave counter only in ->release() callback instead of both in ->release() and w1 control. Patch is based on debug work and preliminary patch made by Henri Laakso. Henri noticed in debug that this counter becomes negative after w1 slave device is physically removed. Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru> Cc: Henri Laakso <henri.laakso@wapice.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/w1/w1.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
index 0702173..33e5031 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
@@ -869,11 +869,9 @@ void w1_search_process(struct w1_master *dev, u8 search_type)
w1_search_devices(dev, search_type, w1_slave_found);
list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) {
- if (!test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl) {
+ if (!test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl)
w1_slave_detach(sl);
-
- dev->slave_count--;
- } else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))
+ else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))
sl->ttl = dev->slave_ttl;
}