diff options
Diffstat (limited to 'lib/kobject_uevent.c')
-rw-r--r-- | lib/kobject_uevent.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 318328ddbd1c..97a777ad4f59 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, | |||
118 | kset = top_kobj->kset; | 118 | kset = top_kobj->kset; |
119 | uevent_ops = kset->uevent_ops; | 119 | uevent_ops = kset->uevent_ops; |
120 | 120 | ||
121 | /* skip the event, if uevent_suppress is set*/ | ||
122 | if (kobj->uevent_suppress) { | ||
123 | pr_debug("kobject: '%s' (%p): %s: uevent_suppress " | ||
124 | "caused the event to drop!\n", | ||
125 | kobject_name(kobj), kobj, __func__); | ||
126 | return 0; | ||
127 | } | ||
121 | /* skip the event, if the filter returns zero. */ | 128 | /* skip the event, if the filter returns zero. */ |
122 | if (uevent_ops && uevent_ops->filter) | 129 | if (uevent_ops && uevent_ops->filter) |
123 | if (!uevent_ops->filter(kset, kobj)) { | 130 | if (!uevent_ops->filter(kset, kobj)) { |
@@ -227,6 +234,9 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | |||
227 | NETLINK_CB(skb).dst_group = 1; | 234 | NETLINK_CB(skb).dst_group = 1; |
228 | retval = netlink_broadcast(uevent_sock, skb, 0, 1, | 235 | retval = netlink_broadcast(uevent_sock, skb, 0, 1, |
229 | GFP_KERNEL); | 236 | GFP_KERNEL); |
237 | /* ENOBUFS should be handled in userspace */ | ||
238 | if (retval == -ENOBUFS) | ||
239 | retval = 0; | ||
230 | } else | 240 | } else |
231 | retval = -ENOMEM; | 241 | retval = -ENOMEM; |
232 | } | 242 | } |
@@ -248,7 +258,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | |||
248 | goto exit; | 258 | goto exit; |
249 | 259 | ||
250 | retval = call_usermodehelper(argv[0], argv, | 260 | retval = call_usermodehelper(argv[0], argv, |
251 | env->envp, UMH_WAIT_EXEC); | 261 | env->envp, UMH_NO_WAIT); |
252 | } | 262 | } |
253 | 263 | ||
254 | exit: | 264 | exit: |