Bluetooth: 6lowpan: Remove unnecessary RCU callback
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 11 Nov 2014 12:16:29 +0000 (14:16 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 11 Nov 2014 13:26:02 +0000 (14:26 +0100)
When kfree() is all that's needed to free an object protected by RCU
there's a kfree_rcu() convenience function that can be used. This patch
updates the 6lowpan code to use this, thereby eliminating the need for
the separate peer_free() function.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/6lowpan.c

index 3f20dce..3d8ceb2 100644 (file)
@@ -87,13 +87,6 @@ struct lowpan_dev {
        struct delayed_work notify_peers;
 };
 
-static inline void peer_free(struct rcu_head *head)
-{
-       struct lowpan_peer *e = container_of(head, struct lowpan_peer, rcu);
-
-       kfree(e);
-}
-
 static inline struct lowpan_dev *lowpan_dev(const struct net_device *netdev)
 {
        return netdev_priv(netdev);
@@ -108,7 +101,7 @@ static inline void peer_add(struct lowpan_dev *dev, struct lowpan_peer *peer)
 static inline bool peer_del(struct lowpan_dev *dev, struct lowpan_peer *peer)
 {
        list_del_rcu(&peer->list);
-       call_rcu(&peer->rcu, peer_free);
+       kfree_rcu(peer, rcu);
 
        module_put(THIS_MODULE);
 
@@ -1219,7 +1212,7 @@ static void disconnect_all_peers(void)
                l2cap_chan_close(peer->chan, ENOENT);
 
                list_del_rcu(&peer->list);
-               call_rcu(&peer->rcu, peer_free);
+               kfree_rcu(peer, rcu);
 
                module_put(THIS_MODULE);
        }