diff options
Diffstat (limited to 'net/bluetooth/6lowpan.c')
| -rw-r--r-- | net/bluetooth/6lowpan.c | 15 | 
1 files changed, 6 insertions, 9 deletions
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c index 1742b849fcff..2fb7b3064904 100644 --- a/net/bluetooth/6lowpan.c +++ b/net/bluetooth/6lowpan.c @@ -192,7 +192,7 @@ static inline struct lowpan_peer *peer_lookup_dst(struct lowpan_dev *dev,  		if (ipv6_addr_any(nexthop))  			return NULL;  	} else { -		nexthop = rt6_nexthop(rt); +		nexthop = rt6_nexthop(rt, daddr);  		/* We need to remember the address because it is needed  		 * by bt_xmit() when sending the packet. In bt_xmit(), the @@ -856,7 +856,7 @@ static int setup_netdev(struct l2cap_chan *chan, struct lowpan_dev **dev)  	set_dev_addr(netdev, &chan->src, chan->src_type);  	netdev->netdev_ops = &netdev_ops; -	SET_NETDEV_DEV(netdev, &chan->conn->hcon->dev); +	SET_NETDEV_DEV(netdev, &chan->conn->hcon->hdev->dev);  	SET_NETDEV_DEVTYPE(netdev, &bt_type);  	err = register_netdev(netdev); @@ -928,7 +928,7 @@ static void delete_netdev(struct work_struct *work)  	unregister_netdev(entry->netdev); -	/* The entry pointer is deleted in device_event() */ +	/* The entry pointer is deleted by the netdev destructor. */  }  static void chan_close_cb(struct l2cap_chan *chan) @@ -937,7 +937,7 @@ static void chan_close_cb(struct l2cap_chan *chan)  	struct lowpan_dev *dev = NULL;  	struct lowpan_peer *peer;  	int err = -ENOENT; -	bool last = false, removed = true; +	bool last = false, remove = true;  	BT_DBG("chan %p conn %p", chan, chan->conn); @@ -948,7 +948,7 @@ static void chan_close_cb(struct l2cap_chan *chan)  		/* If conn is set, then the netdev is also there and we should  		 * not remove it.  		 */ -		removed = false; +		remove = false;  	}  	spin_lock(&devices_lock); @@ -977,7 +977,7 @@ static void chan_close_cb(struct l2cap_chan *chan)  		ifdown(dev->netdev); -		if (!removed) { +		if (remove) {  			INIT_WORK(&entry->delete_netdev, delete_netdev);  			schedule_work(&entry->delete_netdev);  		} @@ -1208,8 +1208,6 @@ static void disconnect_all_peers(void)  		list_del_rcu(&peer->list);  		kfree_rcu(peer, rcu); - -		module_put(THIS_MODULE);  	}  	spin_unlock(&devices_lock);  } @@ -1418,7 +1416,6 @@ static int device_event(struct notifier_block *unused,  				BT_DBG("Unregistered netdev %s %p",  				       netdev->name, netdev);  				list_del(&entry->list); -				kfree(entry);  				break;  			}  		}  |