--- x/net/bluetooth/bnep/core.c +++ y/net/bluetooth/bnep/core.c @@ -535,6 +535,7 @@ static int bnep_session(void *arg) __bnep_unlink_session(s); up_write(&bnep_session_sem); + put_device(dev->dev.parent); free_netdev(dev); module_put_and_kthread_exit(0); return 0; @@ -618,7 +619,7 @@ int bnep_add_connection(struct bnep_conn bnep_set_default_proto_filter(s); #endif - SET_NETDEV_DEV(dev, bnep_get_device(s)); + SET_NETDEV_DEV(dev, get_device(bnep_get_device(s))); SET_NETDEV_DEVTYPE(dev, &bnep_type); err = register_netdev(dev);