[PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller - Kernel

This is a discussion on [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller - Kernel ; The error signal shouldn't be dropped. Signed-off-by: Wang Chen --- diff --git a/lib/kobject.c b/lib/kobject.c index 718e510..e5de71e 100644 --- a/lib/kobject.c +++ b/lib/kobject.c @@ -430,7 +430,7 @@ int kobject_rename(struct kobject *kobj, const char *new_name) * Some hotplug package track interfaces by their ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

  1. [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

    The error signal shouldn't be dropped.

    Signed-off-by: Wang Chen
    ---
    diff --git a/lib/kobject.c b/lib/kobject.c
    index 718e510..e5de71e 100644
    --- a/lib/kobject.c
    +++ b/lib/kobject.c
    @@ -430,7 +430,7 @@ int kobject_rename(struct kobject *kobj, const char *new_name)
    * Some hotplug package track interfaces by their name and
    * therefore want to know when the name is changed by the user. */
    if (!error)
    - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);

    out:
    kfree(devpath_string);
    @@ -482,7 +482,7 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
    kobj->parent = new_parent;
    new_parent = NULL;
    kobject_put(old_parent);
    - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    out:
    kobject_put(new_parent);
    kobject_put(kobj);



    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

    On Tue, 24 Jun 2008 16:59:06 +0800,
    Wang Chen wrote:

    > The error signal shouldn't be dropped.
    >
    > Signed-off-by: Wang Chen
    > ---
    > diff --git a/lib/kobject.c b/lib/kobject.c
    > index 718e510..e5de71e 100644
    > --- a/lib/kobject.c
    > +++ b/lib/kobject.c
    > @@ -430,7 +430,7 @@ int kobject_rename(struct kobject *kobj, const char *new_name)
    > * Some hotplug package track interfaces by their name and
    > * therefore want to know when the name is changed by the user. */
    > if (!error)
    > - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    > + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    >
    > out:
    > kfree(devpath_string);
    > @@ -482,7 +482,7 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
    > kobj->parent = new_parent;
    > new_parent = NULL;
    > kobject_put(old_parent);
    > - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    > + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    > out:
    > kobject_put(new_parent);
    > kobject_put(kobj);
    >
    >
    >


    This looks wrong. If everything went right except sending the uevent,
    you'll make the caller believe that the whole operation failed, while
    in reality the sysfs operation succeeded. Either just drop the error
    again (or print a warning), or undo the previous operations on error
    (which may fail).
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

    Cornelia Huck said the following on 2008-6-24 22:24:
    > > On Tue, 24 Jun 2008 16:59:06 +0800,
    > > Wang Chen wrote:
    > >
    >> >> The error signal shouldn't be dropped.
    >> >>
    >> >> Signed-off-by: Wang Chen
    >> >> ---
    >> >> diff --git a/lib/kobject.c b/lib/kobject.c
    >> >> index 718e510..e5de71e 100644
    >> >> --- a/lib/kobject.c
    >> >> +++ b/lib/kobject.c
    >> >> @@ -430,7 +430,7 @@ int kobject_rename(struct kobject *kobj, const char *new_name)
    >> >> * Some hotplug package track interfaces by their name and
    >> >> * therefore want to know when the name is changed by the user. */
    >> >> if (!error)
    >> >> - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    >> >> + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    >> >>
    >> >> out:
    >> >> kfree(devpath_string);
    >> >> @@ -482,7 +482,7 @@ int kobject_move(struct kobject *kobj, struct kobject *new_parent)
    >> >> kobj->parent = new_parent;
    >> >> new_parent = NULL;
    >> >> kobject_put(old_parent);
    >> >> - kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    >> >> + error = kobject_uevent_env(kobj, KOBJ_MOVE, envp);
    >> >> out:
    >> >> kobject_put(new_parent);
    >> >> kobject_put(kobj);
    >> >>
    >> >>
    >> >>

    > >
    > > This looks wrong. If everything went right except sending the uevent,
    > > you'll make the caller believe that the whole operation failed, while
    > > in reality the sysfs operation succeeded. Either just drop the error
    > > again (or print a warning), or undo the previous operations on error
    > > (which may fail).
    > >


    It's depended on how important sending uevent is.
    If the sysfs operation succeeds, but user-space don't
    get the notification. Is it ok?


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

    On Wed, 25 Jun 2008 17:08:37 +0800,
    Wang Chen wrote:

    > It's depended on how important sending uevent is.
    > If the sysfs operation succeeds, but user-space don't
    > get the notification. Is it ok?


    Given that (a) there may be no listener, (b) sending via netlink may
    succeed but calling uevent_helper may fail (highly unlikely the way
    modern distros are set up, though), and (c) you would have to audit a
    myriad places that don't check for the return code of kobject_uevent()
    today as well, it looks like the best way is to simply add some
    pr_debug()s to kobject_uevent_env() where something fails.
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [PATCH 2/2] kobjects: Transmit return value of kobject_uevent_env() to caller

    Cornelia Huck said the following on 2008-7-1 18:51:
    > On Wed, 25 Jun 2008 17:08:37 +0800,
    > Wang Chen wrote:
    >
    >> It's depended on how important sending uevent is.
    >> If the sysfs operation succeeds, but user-space don't
    >> get the notification. Is it ok?

    >
    > Given that (a) there may be no listener, (b) sending via netlink may
    > succeed but calling uevent_helper may fail (highly unlikely the way
    > modern distros are set up, though), and (c) you would have to audit a
    > myriad places that don't check for the return code of kobject_uevent()
    > today as well, it looks like the best way is to simply add some
    > pr_debug()s to kobject_uevent_env() where something fails.
    >


    Fair enough. Thanks Cornelia.
    Greg, please ignore this patch.
    But please take a look at "[PATCH 1/2] kobjects: Transmit return value of call_usermodehelper() to caller".

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread