Michal Hocko wrote:
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c 
> b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> index ccf3436024bc..f351920fc293 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> @@ -1220,6 +1220,10 @@ static int set_filter_wr(struct adapter *adapter, int 
> fidx)
>       struct fw_filter_wr *fwr;
>       unsigned int ftid;
>  
> +     skb = alloc_skb(sizeof(*fwr), GFP_KERNEL);
> +     if (!skb)
> +             return -ENOMEM;
> +
>       /* If the new filter requires loopback Destination MAC and/or VLAN
>        * rewriting then we need to allocate a Layer 2 Table (L2T) entry for
>        * the filter.
> @@ -1227,19 +1231,21 @@ static int set_filter_wr(struct adapter *adapter, int 
> fidx)
>       if (f->fs.newdmac || f->fs.newvlan) {
>               /* allocate L2T entry for new filter */
>               f->l2t = t4_l2t_alloc_switching(adapter->l2t);
> -             if (f->l2t == NULL)
> +             if (f->l2t == NULL) {
> +                     kfree(skb);

I think we need to use kfree_skb() than kfree() for memory allocated by 
alloc_skb().

>                       return -EAGAIN;
> +             }
>               if (t4_l2t_set_switching(adapter, f->l2t, f->fs.vlan,
>                                       f->fs.eport, f->fs.dmac)) {
>                       cxgb4_l2t_release(f->l2t);
>                       f->l2t = NULL;
> +                     kfree(skb);

Ditto.

>                       return -ENOMEM;
>               }
>       }
>  
>       ftid = adapter->tids.ftid_base + fidx;
>  
> -     skb = alloc_skb(sizeof(*fwr), GFP_KERNEL | __GFP_NOFAIL);
>       fwr = (struct fw_filter_wr *)__skb_put(skb, sizeof(*fwr));
>       memset(fwr, 0, sizeof(*fwr));
>  
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to