sysfsgpio: give time to udev to change gpio permission
commit49d71d06d19e1b5006c8be5b35319658654dfe21
authorAntonio Borneo <borneo.antonio@gmail.com>
Thu, 5 Sep 2019 08:48:12 +0000 (5 10:48 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Thu, 19 Dec 2019 20:42:01 +0000 (19 20:42 +0000)
tree2dc6bc3dc9205548bddd358259f50bf68f1764c9
parent964c4db9cec3e619545490ccb525be210e8008d5
sysfsgpio: give time to udev to change gpio permission

When a gpio is exported by writing in /sys/class/gpio/export, the
corresponding gpio control files appear immediately in sysfs but
with default access permission for root user only. The daemon udev
requires some time to get notified of the new files before it can
change the permissions to allow access to unprivileged users.
Due to this race condition, sysfsgpio can fail with EACCES error
if OpenOCD is executed by any unprivileged user.

Give 0.5 seconds to udev to identify the new files and change the
permission.

Tested with udev rules:
SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c 'find -L /sys/class/gpio/ -maxdepth 2 -exec chown root:uucp {} \; -exec chmod g=u {} \; || true'"

Change-Id: I1316c66ff103ffe23e5e4720f33372dc272a3766
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5302
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/jtag/drivers/sysfsgpio.c