diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index f237a09a5862..3916cf0e2f0a 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -340,6 +340,13 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, struct uevent_sock *ue_sk; #endif + /* + * Mark "remove" event done regardless of result, for some subsystems + * do not want to re-trigger "remove" event via automatic cleanup. + */ + if (action == KOBJ_REMOVE) + kobj->state_remove_uevent_sent = 1; + pr_debug("kobject: '%s' (%p): %s\n", kobject_name(kobj), kobj, __func__); @@ -441,10 +448,6 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, kobj->state_add_uevent_sent = 1; break; - case KOBJ_REMOVE: - kobj->state_remove_uevent_sent = 1; - break; - case KOBJ_UNBIND: zap_modalias_env(env); break;