]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "gpiolib: Split GPIO flags parsing and GPIO configuration"
authorJohan Hovold <johan@kernel.org>
Sun, 3 Jul 2016 16:32:05 +0000 (18:32 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 4 Jul 2016 14:51:29 +0000 (16:51 +0200)
commit0b7fdbd4701a640676c6c6d73e4ee1aedce2dbc5
tree6903637e3ff3c9d821dd3718d12c2321df9c25bf
parent9e05d0248dec6fdb87e77645d5b2ab3647ceda02
Revert "gpiolib: Split GPIO flags parsing and GPIO configuration"

This reverts commit 565df8a6ceea61a24feceab950d15d7cb7ec4896.

Make sure consumers do not overwrite gpio flags for pins that have
already been claimed.

While adding support for gpio drivers to refuse a request using
unsupported flags, the order of when the requested flag was checked and
the new flags were applied was reversed to that consumers could
overwrite flags for already requested gpios.

This not only affects device-tree setups where two drivers could request
the same gpio using conflicting configurations, but also allowed user
space to clear gpio flags for already claimed pins simply by attempting
to export them through the sysfs interface. By for example clearing the
FLAG_ACTIVE_LOW flag this way, user space could effectively change the
polarity of a signal.

Reverting this change obviously prevents gpio drivers from doing sanity
checks on the flags in their request callbacks. Fortunately only one
recently added driver (gpio-tps65218 in v4.6) appears to do this, and a
follow up patch could restore this functionality through a different
interface.

Cc: stable <stable@vger.kernel.org> # 4.4
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib-legacy.c
drivers/gpio/gpiolib.c