Re: [PATCH] infiniband: Fixes memory leak in send_flowc

From: David Rientjes
Date: Mon Jun 16 2014 - 19:44:14 EST


On Mon, 16 Jun 2014, Steve Wise wrote:

> On 6/16/2014 12:49 PM, Nicholas Krause wrote:
> > Signed-off-by: Nicholas Krause <xerofoify@xxxxxxxxx>
> > ---
> > drivers/infiniband/hw/cxgb4/cm.c | 5 ++++-
> > 1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/infiniband/hw/cxgb4/cm.c
> > b/drivers/infiniband/hw/cxgb4/cm.c
> > index 5e153f6..867e664 100644
> > --- a/drivers/infiniband/hw/cxgb4/cm.c
> > +++ b/drivers/infiniband/hw/cxgb4/cm.c
> > @@ -455,8 +455,11 @@ static void send_flowc(struct c4iw_ep *ep, struct
> > sk_buff *skb)
> > unsigned int flowclen = 80;
> > struct fw_flowc_wr *flowc;
> > int i;
> > -
>
> Please add back the above blank line.
>
> > skb = get_skb(skb, flowclen, GFP_KERNEL);
> > + if (!skb) {
> > + kfree_skb(skb);
>
> Let's do a pr_warn() here;
>
> pr_warn(MOD "%s failed to allocate skb.\n", __func__);
>

No need, if the allocation from skbuff_head_cache fails in the slab
allocator, the page allocator will loop forever for orders less than
PAGE_ALLOC_COSTLY_ORDER or spew a page allocation failure warning with a
stack trace that indicated the high order page allocation failed in this
path.

>
> > + return;
> > + }
> > flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
> > flowc->op_to_nparams = cpu_to_be32(FW_WR_OP(FW_FLOWC_WR) |
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/