| From e6af96a28f99056ad1e6da7ad4ad36ed7b03fc77 Mon Sep 17 00:00:00 2001 |
| From: "Maciej S. Szmigiero" <mail@maciej.szmigiero.name> |
| Date: Sat, 21 Jan 2017 23:50:18 +0100 |
| Subject: [PATCH] w1: don't leak refcount on slave attach failure in |
| w1_attach_slave_device() |
| |
| commit d2ce4ea1a0b0162e5d2d7e7942ab6f5cc2063d5a upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c |
| index bb34362e930a..e1d72d4d8099 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; |
| } |
| -- |
| 2.12.0 |
| |