Staging: batman-adv: Only clone skb data for multiple broadcasts
authorSven Eckelmann <sven.eckelmann@gmx.de>
Sat, 4 Sep 2010 23:58:29 +0000 (01:58 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sun, 5 Sep 2010 07:29:46 +0000 (00:29 -0700)
batman-adv tries to resend broadcasts on all interfaces up to three
times. For each round and each interface it must provide a skb which
gets consumed by the sending function.

It is unnecessary to copy the data of each broadcast because the actual
data is either not shared or already copied by add_bcast_packet_to_list.
So it is enough to just copy the skb control data

Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/send.c

index b39c67b3562079e7dc3ea85e438767d47e73cf24..8dd9dd4af47b4198b4a5f8488e9aaf998f81fe6d 100644 (file)
@@ -464,7 +464,7 @@ static void send_outstanding_bcast_packet(struct work_struct *work)
        rcu_read_lock();
        list_for_each_entry_rcu(batman_if, &if_list, list) {
                /* send a copy of the saved skb */
-               skb1 = skb_copy(forw_packet->skb, GFP_ATOMIC);
+               skb1 = skb_clone(forw_packet->skb, GFP_ATOMIC);
                if (skb1)
                        send_skb_packet(skb1,
                                batman_if, broadcast_addr);