defer releasing the l3 dev so that the generic code can take care of cleaning system...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 18 Oct 2011 17:17:05 +0000 (19:17 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 18 Oct 2011 17:17:05 +0000 (19:17 +0200)
interface.c
proto-shell.c

index 0a2afd01702e9a659fa5fdb8ebecdc32fe20bf51..5bbc0c3f77639d9d275a245ae538fc6248be9266 100644 (file)
@@ -280,6 +280,8 @@ interface_proto_cb(struct interface_proto_state *state, enum interface_proto_eve
                interface_handle_config_change(iface);
                if (iface->autostart)
                        __interface_set_up(iface);
+               if (iface->l3_dev->dev)
+                       device_release(iface->l3_dev);
                break;
        case IFPEV_LINK_LOST:
                if (iface->state != IFS_UP)
index 68af69ba23a2cf6e4a9e9ac85b7d19e9dd38a626..f197c62a89d1dafdd7670b7209ff515adece59e5 100644 (file)
@@ -125,10 +125,6 @@ proto_shell_teardown_cb(struct netifd_process *p, int ret)
                return;
 
        netifd_kill_process(&state->proto_task);
-
-       if (state->l3_dev.dev)
-               device_remove_user(&state->l3_dev);
-
        state->proto.proto_event(&state->proto, IFPEV_DOWN);
 }