Patch "Revert "gpiolib: Split GPIO flags parsing and GPIO configuration"" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
Revert "gpiolib: Split GPIO flags parsing and GPIO configuration"
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
revert-gpiolib-split-gpio-flags-parsing-and-gpio-configuration.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
85b03b3033fd4eba82665b3b9902c095a08cc52fMon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Sun, 3 Jul 2016 18:32:05 +0200
Subject: Revert "gpiolib: Split GPIO flags parsing and GPIO configuration"
From: Johan Hovold <[email protected]>
commit 85b03b3033fd4eba82665b3b9902c095a08cc52f upstream.
This reverts commit 923b93e451db876d1479d3e4458fce14fec31d1c.
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.
--- drivers/gpio/gpiolib-legacy.c | 8 +++--- drivers/gpio/gpiolib.c | 52 ++++++++++++------------------------------ 2 files changed, 20 insertions(+), 40 deletions(-)
drivers/gpio/gpiolib-legacy.c +4 -4
@@ -28,6 +28,10 @@ int gpio_request_one(unsigned gpio, unsiif (!desc &&gpio_is_valid (gpio))return -EPROBE_DEFER ; + err =gpiod_request (desc, label); +if (err) +return err; +if (flags &GPIOF_OPEN_DRAIN )set_bit (FLAG_OPEN_DRAIN , &desc->flags);
@@ -37,10 +41,6 @@ int gpio_request_one(unsigned gpio, unsiif (flags &GPIOF_ACTIVE_LOW )set_bit (FLAG_ACTIVE_LOW , &desc->flags); - err =gpiod_request (desc, label); -if (err) -return err; -if (flags &GPIOF_DIR_IN ) err =gpiod_direction_input (desc);else
drivers/gpio/gpiolib.c +16 -36
112 lines not on this page · raw message
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/revert-gpiolib-split-gpio-flags-parsing-and-gpio-configuration.patch