Add patch to fix list corruption from pinctrl (rhbz 1051918)

This commit is contained in:
Josh Boyer 2014-02-12 13:46:50 -05:00
parent 451ae94d0c
commit aa5810928e
2 changed files with 45 additions and 0 deletions

View File

@ -763,6 +763,9 @@ Patch25195: cgroup-fixes.patch
Patch25196: ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
Patch25197: ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
#rhbz 1051918
Patch25198: pinctrl-protect-pinctrl_list-add.patch
# END OF PATCH DEFINITIONS
%endif
@ -1482,6 +1485,9 @@ ApplyPatch cgroup-fixes.patch
ApplyPatch ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
ApplyPatch ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
#rhbz 1051918
ApplyPatch pinctrl-protect-pinctrl_list-add.patch
# END OF PATCH APPLICATIONS
@ -2295,6 +2301,7 @@ fi
# || ||
%changelog
* Wed Feb 12 2014 Josh Boyer <jwboyer@fedoraproject.org>
- Add patch to fix list corruption from pinctrl (rhbz 1051918)
- Add IFA_FLAGS for IPv6 temporary addresses back (rhbz 1064430)
- Fix cgroup destroy oops (rhbz 1045755)
- Fix backtrace in amd_e400_idle (rhbz 1031296)

View File

@ -0,0 +1,38 @@
From 7b320cb1ed2dbd2c5f2a778197baf76fd6bf545a Mon Sep 17 00:00:00 2001
From: Stanislaw Gruszka <sgruszka@redhat.com>
Date: Tue, 4 Feb 2014 09:07:09 +0100
Subject: [PATCH] pinctrl: protect pinctrl_list add
We have few fedora bug reports about list corruption on pinctrl,
for example:
https://bugzilla.redhat.com/show_bug.cgi?id=1051918
Most likely corruption happen due lack of protection of pinctrl_list
when adding new nodes to it. Patch corrects that.
Fixes: 42fed7ba44e ("pinctrl: move subsystem mutex to pinctrl_dev struct")
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/pinctrl/core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 5ee61a4..cab020a 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -851,7 +851,9 @@ static struct pinctrl *create_pinctrl(struct device *dev)
kref_init(&p->users);
/* Add the pinctrl handle to the global list */
+ mutex_lock(&pinctrl_list_mutex);
list_add_tail(&p->node, &pinctrl_list);
+ mutex_unlock(&pinctrl_list_mutex);
return p;
}
--
1.8.5.3