]> Pileus Git - ~andy/linux/commitdiff
pinctrl: protect pinctrl_list add
authorStanislaw Gruszka <sgruszka@redhat.com>
Tue, 4 Feb 2014 08:07:09 +0000 (09:07 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 4 Feb 2014 20:59:45 +0000 (21:59 +0100)
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

index 5ee61a470016fa8f2753cf21fc2e6ff0966d8d78..cab020a58bf5131380e4a83a035e5cf947e006a9 100644 (file)
@@ -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;
 }