Messages in this thread Patch in this message | | | From | Bryan Wu <> | Date | Thu, 26 Jul 2012 13:03:11 +0800 | Subject | Re: [PATCH] leds: triggers: send uevent when changing triggers |
| |
On Thu, Jul 26, 2012 at 11:59 AM, Greg KH <gregkh@linuxfoundation.org> wrote: > On Thu, Jul 26, 2012 at 11:29:48AM +0800, Bryan Wu wrote: >> On Thu, Jul 26, 2012 at 2:54 AM, Colin Cross <ccross@android.com> wrote: >> > On Tue, Jul 24, 2012 at 11:11 PM, Bryan Wu <bryan.wu@canonical.com> wrote: >> >> On Wed, Jul 25, 2012 at 8:32 AM, Colin Cross <ccross@android.com> wrote: >> >>> Some triggers create sysfs files when they are enabled. Send a uevent >> >>> "change" notification whenever the trigger is changed to allow userspace >> >>> processes such as udev to modify permissions on the new files. >> >>> >> >> >> >> This looks like an workaround only for led trigger, can we fix this in >> >> sysfs level? >> > >> > See the previous discussion here: https://lkml.org/lkml/2012/7/20/458 >> >> Thanks, I went through this thread here. Actually it was archived in >> my email account, so I missed that during a trip. >> >> Basically, I think this issue is a kind of general issue related to >> sysfs, not just only for led trigger system. And adding this uevent >> notification to a upper level LED driver is not good to me, if we got >> similar issue in other subsystem, we should add similar fix there. Why >> not we add this in sysfs when we call device_create_file(). And this >> will be benefit for other drivers. >> >> Please point out me why we can't do that in sysfs level. Thanks. > > Please point out to me how you _can_ do this at a sysfs level :) > > greg k-h
Just one quick patch for my idea: emitting a uevent in sysfs_create_file().
-- diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index 00012e3..04da869 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -570,10 +570,14 @@ int sysfs_add_file(struct sysfs_dirent *dir_sd, const struct attribute *attr,
int sysfs_create_file(struct kobject * kobj, const struct attribute * attr) { + int err = 0; + BUG_ON(!kobj || !kobj->sd || !attr);
- return sysfs_add_file(kobj->sd, attr, SYSFS_KOBJ_ATTR); + err = sysfs_add_file(kobj->sd, attr, SYSFS_KOBJ_ATTR); + kobject_uevent(kobj, KOBJ_CHANGE);
+ return err; }
int sysfs_create_files(struct kobject *kobj, const struct attribute **ptr) --
-- Bryan Wu <bryan.wu@canonical.com> Kernel Developer +86.186-168-78255 Mobile Canonical Ltd. www.canonical.com Ubuntu - Linux for human beings | www.ubuntu.com
| |