Commit:     c67625a1ecd7caf4c0490fc5278d6bb736a5297f
Parent:     8a856397f1b023b53907d13e742c216d90dd5034
Author:     Pavel Emelyanov <[EMAIL PROTECTED]>
AuthorDate: Wed Nov 14 15:53:16 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Nov 14 15:53:16 2007 -0800

    [NET]: Remove notifier block from chain when register_netdevice_notifier 
    Commit fcc5a03ac42564e9e255c1134dda47442289e466:
        [NET]: Allow netdev REGISTER/CHANGENAME events to fail
    makes the register_netdevice_notifier() handle the error from the
    NETDEV_REGISTER event, sent to the registering block.
    The bad news is that in this case the notifier block is
    not removed from the list, but the error is returned to the
    caller. In case the caller is in module init function and
    handles this error this can abort the module loading. The
    notifier block will be then removed from the kernel, but
    will be left in the list. Oops :(
    I think that the notifier block should be removed from the
    chain in case of error, regardless whether this error is
    handled by the caller or not. In the worst case (the error
    is _not_ handled) module will not receive the events any
    Signed-off-by: Pavel Emelyanov <[EMAIL PROTECTED]>
    Acked-by: Herbert Xu <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
 net/core/dev.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index dd40b35..86d6261 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1171,6 +1171,8 @@ rollback:
                        nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
+       raw_notifier_chain_unregister(&netdev_chain, nb);
        goto unlock;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to