Messages in this thread | | | Date | Fri, 20 Jul 2012 22:14:27 -0700 | Subject | Re: sysfs permissions on dynamic attributes (led delay_on and delay_off) | From | Colin Cross <> |
| |
On Fri, Jul 20, 2012 at 9:08 PM, Greg KH <gregkh@linuxfoundation.org> wrote: > On Fri, Jul 20, 2012 at 05:46:14PM -0700, Colin Cross wrote: >> I'm trying to use the standard ledtrig-timer.c code to handle led >> blinking for notifications on an Android device, and I'm hitting some >> issues with setting permissions on the dynamically created delay_on >> and delay_off attributes. For most sysfs files, we have userspace >> uevent parser that watches for device add notifications and >> chowns/chmods attributes. This doesn't work for delay_on and >> delay_off, because they are created later, when "timer" is written to >> the trigger attribute. There is no uevent when the new files are >> created, and sysfs doesn't support inotify, so I don't see any way to >> receive an event to set the permissions. This issue exists any time >> that device_create_file is called after device_add. >> >> What is the appropriate way to get an event to set the permissions? >> Add inotify support for sysfs file creation? Send a KOBJ_CHANGE >> uevent in device_create_file? > > No. > >> Send a KOBJ_CHANGE uevent from the driver after calling >> device_create_file? > > Yes. > >> Dynamically create a timer device under /sys/class/leds/<led> so a new >> add uevent gets sent? > > Ick. > >> Promote blinking to be a core led feature instead of a trigger, so the >> files are always present? > > That's the best thing, why not just do that?
It doesn't solve the general case. For example, any driver that is loaded as a module and then calls device_create_file will suffer the same problem. But since it solves the one I care about, I'll look into it.
| |