w1: don't leak refcount on slave attach failure in w1_attach_slave_device()
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>
Sat, 21 Jan 2017 22:50:18 +0000 (23:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Jan 2017 10:46:42 +0000 (11:46 +0100)
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>
drivers/w1/w1.c

index e213c678bbfe0cee97afe47a6f082ca4b7ed9f2f..ab0931e7a9bb1ded5d9d3d9d019ff4a2e76b5042 100644 (file)
@@ -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;
        }