Messages in this thread Patch in this message | | | From | Richard Genoud <> | Subject | [PATCH] BUG: pinmux: forbid mux_usecount to be set at UINT_MAX | Date | Thu, 21 Mar 2013 12:21:47 +0100 |
| |
If pin_free is called on a pin already freed, mux_usecount is set to UINT_MAX which is really a bad idea. This will issue a warning, so that we can correct the code responsible for the double free.
Signed-off-by: Richard Genoud <richard.genoud@gmail.com> --- Ok Stephen, your idea (and code) seems better. I signed-off it, but it's really yours... Feel free to transform my Signed-off-by in a Tested-by
drivers/pinctrl/pinmux.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index 1a00658..bd83c8b 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c @@ -194,6 +194,11 @@ static const char *pin_free(struct pinctrl_dev *pctldev, int pin, } if (!gpio_range) { + /* + * A pin should not be freed more times than allocated. + */ + if (WARN_ON(!desc->mux_usecount)) + return NULL; desc->mux_usecount--; if (desc->mux_usecount) return NULL; -- 1.7.2.5
| |