public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] infiniband: Fixes memory leak in send_flowc
@ 2014-06-16 17:49 Nicholas Krause
  2014-06-16 18:18 ` Steve Wise
  0 siblings, 1 reply; 6+ messages in thread
From: Nicholas Krause @ 2014-06-16 17:49 UTC (permalink / raw)
  To: swise-ut6Up61K2wZBDgjK7y7TUQ
  Cc: roland-DgEjT+Ai2ygdnm+yROfE0A, sean.hefty-ral2JQCrhuEAvxtiuMwx3w,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

Signed-off-by: Nicholas Krause <xerofoify-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 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;
-
 	skb = get_skb(skb, flowclen, GFP_KERNEL);
+	if (!skb) {
+		kfree_skb(skb);
+		return;
+	}
 	flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
 
 	flowc->op_to_nparams = cpu_to_be32(FW_WR_OP(FW_FLOWC_WR) |
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] infiniband: Fixes memory leak in send_flowc
  2014-06-16 17:49 [PATCH] infiniband: Fixes memory leak in send_flowc Nicholas Krause
@ 2014-06-16 18:18 ` Steve Wise
       [not found]   ` <539F34E8.3000501-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Steve Wise @ 2014-06-16 18:18 UTC (permalink / raw)
  To: Nicholas Krause, swise
  Cc: roland, sean.hefty, hal.rosenstock, linux-rdma, linux-kernel

On 6/16/2014 12:49 PM, Nicholas Krause wrote:
> Signed-off-by: Nicholas Krause <xerofoify@gmail.com>
> ---
>   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__);


> +		return;
> +	}
>   	flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
>   
>   	flowc->op_to_nparams = cpu_to_be32(FW_WR_OP(FW_FLOWC_WR) |

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] infiniband: Fixes memory leak in send_flowc
       [not found]   ` <539F34E8.3000501-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
@ 2014-06-16 23:44     ` David Rientjes
       [not found]       ` <CAPDOMVg8hT95Wcmy4VHdfsumEvc=w3dz8V8xP1QScsLK3buSxw@mail.gmail.com>
  0 siblings, 1 reply; 6+ messages in thread
From: David Rientjes @ 2014-06-16 23:44 UTC (permalink / raw)
  To: Steve Wise
  Cc: Nicholas Krause, swise-ut6Up61K2wZBDgjK7y7TUQ,
	roland-DgEjT+Ai2ygdnm+yROfE0A, sean.hefty-ral2JQCrhuEAvxtiuMwx3w,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

On Mon, 16 Jun 2014, Steve Wise wrote:

> On 6/16/2014 12:49 PM, Nicholas Krause wrote:
> > Signed-off-by: Nicholas Krause <xerofoify-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > ---
> >   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-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] infiniband: Fixes memory leak in send_flowc
       [not found]         ` <CAPDOMVg8hT95Wcmy4VHdfsumEvc=w3dz8V8xP1QScsLK3buSxw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-06-17  0:09           ` David Rientjes
       [not found]             ` <CAPDOMVjjwywH36guWC2q-Y26m-DEoHHJtk5Vasvk2kfsDpCuiA@mail.gmail.com>
  0 siblings, 1 reply; 6+ messages in thread
From: David Rientjes @ 2014-06-17  0:09 UTC (permalink / raw)
  To: Nick Krause
  Cc: Steve Wise, swise-ut6Up61K2wZBDgjK7y7TUQ,
	roland-DgEjT+Ai2ygdnm+yROfE0A, sean.hefty-ral2JQCrhuEAvxtiuMwx3w,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

On Mon, 16 Jun 2014, Nick Krause wrote:

> If that is the case ,David I would mark bug id 44631 as closed due to no
> need for my if statement.

You don't want to depend on the implementation of the page allocator to 
never return NULL for orders < PAGE_ALLOC_COSTLY_ORDER with GFP_KERNEL, it 
could possibly change in the future and we wouldn't catch your dependency 
in send_flowc().  The size object size of the skbuff_head_cache slab cache 
could also change.  You don't need the suggested pr_warn(), though, since 
the page allocation failure warning would also be noisy enough.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] infiniband: Fixes memory leak in send_flowc
       [not found]             ` <CAPDOMVjjwywH36guWC2q-Y26m-DEoHHJtk5Vasvk2kfsDpCuiA@mail.gmail.com>
@ 2014-06-17  0:36               ` David Rientjes
       [not found]                 ` <alpine.DEB.2.02.1406161735490.21018-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: David Rientjes @ 2014-06-17  0:36 UTC (permalink / raw)
  To: Nick Krause
  Cc: Steve Wise, swise, roland, sean.hefty, hal.rosenstock, linux-rdma,
	linux-kernel

On Mon, 16 Jun 2014, Nick Krause wrote:

> That's true David,
> I will resend this parch without the use of the pr_warn.

There's no patch to resend if you don't use pr_warn().  kfree_skb(skb) is 
unnecessary if !skb, look at the first thing it checks:

void kfree_skb(struct sk_buff *skb)
{
        if (unlikely(!skb))
                return;
	...
}

Thus, I don't see the memory leak you're referring to.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [PATCH] infiniband: Fixes memory leak in send_flowc
       [not found]                 ` <alpine.DEB.2.02.1406161735490.21018-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
@ 2014-06-17 13:53                   ` Steve Wise
  0 siblings, 0 replies; 6+ messages in thread
From: Steve Wise @ 2014-06-17 13:53 UTC (permalink / raw)
  To: 'David Rientjes', 'Nick Krause'
  Cc: swise-ut6Up61K2wZBDgjK7y7TUQ, roland-DgEjT+Ai2ygdnm+yROfE0A,
	sean.hefty-ral2JQCrhuEAvxtiuMwx3w,
	hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA



> -----Original Message-----
> From: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org [mailto:linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org] On
> Behalf Of David Rientjes
> Sent: Monday, June 16, 2014 7:37 PM
> To: Nick Krause
> Cc: Steve Wise; swise-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org; roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org; sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org;
> hal.rosenstock-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Subject: Re: [PATCH] infiniband: Fixes memory leak in send_flowc
> 
> On Mon, 16 Jun 2014, Nick Krause wrote:
> 
> > That's true David,
> > I will resend this parch without the use of the pr_warn.
> 
> There's no patch to resend if you don't use pr_warn().  kfree_skb(skb) is
> unnecessary if !skb, look at the first thing it checks:
> 
> void kfree_skb(struct sk_buff *skb)
> {
>         if (unlikely(!skb))
>                 return;
> 	...
> }
> 
> Thus, I don't see the memory leak you're referring to.

send_flowc() still needs to handle a NULL return from get_skb().  That is what the bug
report is addressing...

Steve.


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-06-17 13:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-16 17:49 [PATCH] infiniband: Fixes memory leak in send_flowc Nicholas Krause
2014-06-16 18:18 ` Steve Wise
     [not found]   ` <539F34E8.3000501-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2014-06-16 23:44     ` David Rientjes
     [not found]       ` <CAPDOMVg8hT95Wcmy4VHdfsumEvc=w3dz8V8xP1QScsLK3buSxw@mail.gmail.com>
     [not found]         ` <CAPDOMVg8hT95Wcmy4VHdfsumEvc=w3dz8V8xP1QScsLK3buSxw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-17  0:09           ` David Rientjes
     [not found]             ` <CAPDOMVjjwywH36guWC2q-Y26m-DEoHHJtk5Vasvk2kfsDpCuiA@mail.gmail.com>
2014-06-17  0:36               ` David Rientjes
     [not found]                 ` <alpine.DEB.2.02.1406161735490.21018-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2014-06-17 13:53                   ` Steve Wise

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox