X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=lib%2Fkobject_uevent.c;h=c9d3a3e8405d884c80eeb6e15a7379f48fd333f6;hb=fb4b698fc78347419aa9ae7114e1375f92107500;hp=38131028d16f87c9eb2685c08ce9a7af45fa2daa;hpb=ff491a7334acfd74e515c896632e37e401f52676;p=safe%2Fjmp%2Flinux-2.6 diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 3813102..c9d3a3e 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -95,7 +95,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, const char *subsystem; struct kobject *top_kobj; struct kset *kset; - struct kset_uevent_ops *uevent_ops; + const struct kset_uevent_ops *uevent_ops; u64 seq; int i = 0; int retval = 0; @@ -118,6 +118,13 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, kset = top_kobj->kset; uevent_ops = kset->uevent_ops; + /* skip the event, if uevent_suppress is set*/ + if (kobj->uevent_suppress) { + pr_debug("kobject: '%s' (%p): %s: uevent_suppress " + "caused the event to drop!\n", + kobject_name(kobj), kobj, __func__); + return 0; + } /* skip the event, if the filter returns zero. */ if (uevent_ops && uevent_ops->filter) if (!uevent_ops->filter(kset, kobj)) { @@ -321,7 +328,7 @@ static int __init kobject_uevent_init(void) "kobject_uevent: unable to create netlink socket!\n"); return -ENODEV; } - + netlink_set_nonroot(NETLINK_KOBJECT_UEVENT, NL_NONROOT_RECV); return 0; }