X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=lib%2Fkobject_uevent.c;h=97a777ad4f592993bb58b0098ceee85d1b6977eb;hb=972dd435fb2c5da173a4c8dea44ccb8748e36d35;hp=318328ddbd1cf57b89cc84dc63b2818b480231d9;hpb=c0106d72b8d71696dbe9dc80e2c77d4ac63f7531;p=linux-2.6-omap-h63xx.git diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 318328ddbd1..97a777ad4f5 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -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)) { @@ -227,6 +234,9 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, NETLINK_CB(skb).dst_group = 1; retval = netlink_broadcast(uevent_sock, skb, 0, 1, GFP_KERNEL); + /* ENOBUFS should be handled in userspace */ + if (retval == -ENOBUFS) + retval = 0; } else retval = -ENOMEM; } @@ -248,7 +258,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, goto exit; retval = call_usermodehelper(argv[0], argv, - env->envp, UMH_WAIT_EXEC); + env->envp, UMH_NO_WAIT); } exit: