summaryrefslogtreecommitdiffstats
path: root/drivers/w1/w1.c
diff options
context:
space:
mode:
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>2017-01-21 23:50:18 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-25 11:46:42 +0100
commitd2ce4ea1a0b0162e5d2d7e7942ab6f5cc2063d5a (patch)
treee0473fe2c0aefd9191655f18f52217ec5fd09428 /drivers/w1/w1.c
parentw1: add DS2405 addressable switch driver (diff)
downloadlinux-d2ce4ea1a0b0162e5d2d7e7942ab6f5cc2063d5a.tar.xz
linux-d2ce4ea1a0b0162e5d2d7e7942ab6f5cc2063d5a.zip
w1: don't leak refcount on slave attach failure in w1_attach_slave_device()
Near the beginning of w1_attach_slave_device() we increment a w1 master reference count. Later, when we are going to exit this function without actually attaching a slave device (due to failure of __w1_attach_slave_device()) we need to decrement this reference count back. Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name> Cc: stable@vger.kernel.org Fixes: 9fcbbac5ded489 ("w1: process w1 netlink commands in w1_process thread") Cc: Evgeniy Polyakov <zbr@ioremap.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/w1/w1.c')
-rw-r--r--drivers/w1/w1.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
index e213c678bbfe..ab0931e7a9bb 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
@@ -763,6 +763,7 @@ int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn)
dev_err(&dev->dev, "%s: Attaching %s failed.\n", __func__,
sl->name);
w1_family_put(sl->family);
+ atomic_dec(&sl->master->refcnt);
kfree(sl);
return err;
}