Re: [PATCH] pinctrl: Don't just pretend to protect pinctrl_maps, do it for real

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 1, 2015 at 6:01 PM, Doug Anderson <dianders@xxxxxxxxxxxx> wrote:

> Way back, when the world was a simpler place and there was no war, no
> evil, and no kernel bugs, there was just a single pinctrl lock.  That
> was how the world was when (57291ce pinctrl: core device tree mapping
> table parsing support) was written.  In that case, there were
> instances where the pinctrl mutex was already held when
> pinctrl_register_map() was called, hence a "locked" parameter was
> passed to the function to indicate that the mutex was already locked
> (so we shouldn't lock it again).
>
> A few years ago in (42fed7b pinctrl: move subsystem mutex to
> pinctrl_dev struct), we switched to a separate pinctrl_maps_mutex.
> ...but (oops) we forgot to re-think about the whole "locked" parameter
> for pinctrl_register_map().  Basically the "locked" parameter appears
> to still refer to whether the bigger pinctrl_dev mutex is locked, but
> we're using it to skip locks of our (now separate) pinctrl_maps_mutex.
>
> That's kind of a bad thing(TM).  Probably nobody noticed because most
> of the calls to pinctrl_register_map happen at boot time and we've got
> synchronous device probing.  ...and even cases where we're
> asynchronous don't end up actually hitting the race too often.  ...but
> after banging my head against the wall for a bug that reproduced 1 out
> of 1000 reboots and lots of looking through kgdb, I finally noticed
> this.
>
> Anyway, we can now safely remove the "locked" parameter and go back to
> a war-free, evil-free, and kernel-bug-free world.
>
> Fixes: 42fed7ba44e4 ("pinctrl: move subsystem mutex to pinctrl_dev struct")
> Signed-off-by: Doug Anderson <dianders@xxxxxxxxxxxx>

GOOD CATCH.

Patch applied for fixes.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux