Changeset 1572

Show
Ignore:
Timestamp:
02/14/10 17:30:15 (7 months ago)
Author:
marek
Message:

batman-adv: avoid crash on memory allocation error

skb_share_check() returns NULL if it can't allocate more memory but
it still frees the skbuff.

Signed-off-by: Marek Lindner <lindner_marek@…>

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/batman-adv-kernelland/hard-interface.c

    r1551 r1572  
    428428        int ret; 
    429429 
    430     skb = skb_share_check(skb, GFP_ATOMIC); 
    431  
    432     if (skb == NULL) 
    433                 goto err_free; 
     430        skb = skb_share_check(skb, GFP_ATOMIC); 
     431 
     432        /* skb was released by skb_share_check() */ 
     433        if (!skb) 
     434                goto err_out; 
    434435 
    435436        /* packet should hold at least type and version */ 
     
    446447                goto err_free; 
    447448 
    448     stats = (struct net_device_stats *) dev_get_stats(skb->dev); 
     449        stats = (struct net_device_stats *)dev_get_stats(skb->dev); 
    449450        if (stats) { 
    450451                stats->rx_packets++; 
     
    492493                ret = NET_RX_DROP; 
    493494        } 
     495 
    494496        if (ret == NET_RX_DROP) 
    495497                kfree_skb(skb); 
     
    502504 
    503505err_free: 
    504     kfree_skb(skb); 
    505     return NET_RX_DROP; 
    506  
     506        kfree_skb(skb); 
     507err_out: 
     508        return NET_RX_DROP; 
    507509} 
    508510