}
}
+ /*
+ * Mark "add" and "remove" events in the object to ensure proper
+ * events to userspace during automatic cleanup. If the object did
+ * send an "add" event, "remove" will automatically generated by
+ * the core, if not already done by the caller.
+ */
+ if (action == KOBJ_ADD)
+ kobj->state_add_uevent_sent = 1;
+ else if (action == KOBJ_REMOVE)
+ kobj->state_remove_uevent_sent = 1;
+
/* we will send an event, so request a new sequence number */
spin_lock(&sequence_lock);
seq = ++uevent_seqnum;
retval = add_uevent_var(env, "HOME=/");
if (retval)
goto exit;
- retval = add_uevent_var(env, "PATH=/sbin:/bin:/usr/sbin:/usr/bin");
+ retval = add_uevent_var(env,
+ "PATH=/sbin:/bin:/usr/sbin:/usr/bin");
if (retval)
goto exit;
- call_usermodehelper (argv[0], argv, env->envp, UMH_WAIT_EXEC);
+ call_usermodehelper(argv[0], argv, env->envp, UMH_WAIT_EXEC);
}
exit:
kfree(env);
return retval;
}
-
EXPORT_SYMBOL_GPL(kobject_uevent_env);
/**
{
return kobject_uevent_env(kobj, action, NULL);
}
-
EXPORT_SYMBOL_GPL(kobject_uevent);
/**