diff mbox

infinibad: fix memory leak in function send_flowc

Message ID 1402943456-7532-1-git-send-email-xerofoify@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Nick June 16, 2014, 6:30 p.m. UTC
Signed-off-by: Nicholas Krause <xerofoify@gmail.com>
---
 drivers/infiniband/hw/cxgb4/cm.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Steve Wise June 16, 2014, 6:34 p.m. UTC | #1
On 6/16/2014 1:30 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..c518411 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -455,7 +455,10 @@ static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
>   	unsigned int flowclen = 80;
>   	struct fw_flowc_wr *flowc;
>   	int i;
>
> +	if (!skb) {
> +		kfree_skb();
> +		pr_warn(MOD "%s failed to allocate skb.\n", __func__);
> +	}
>   	skb = get_skb(skb, flowclen, GFP_KERNEL);

Oops, shouldn't the if statement be after the call to get_skb()?  :) 
(you're having a bad day ;))

>   	flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
>   

One more nit:  The comment is no longer correct.  It should be something 
like:

iw_cxgb4: in send_flowc(), handle a null skb return from get_skb()


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Wise June 16, 2014, 6:46 p.m. UTC | #2
On 6/16/2014 1:34 PM, Steve Wise wrote:
> On 6/16/2014 1:30 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..c518411 100644
>> --- a/drivers/infiniband/hw/cxgb4/cm.c
>> +++ b/drivers/infiniband/hw/cxgb4/cm.c
>> @@ -455,7 +455,10 @@ static void send_flowc(struct c4iw_ep *ep, 
>> struct sk_buff *skb)
>>       unsigned int flowclen = 80;
>>       struct fw_flowc_wr *flowc;
>>       int i;
>>
>> +    if (!skb) {
>> +        kfree_skb();
>> +        pr_warn(MOD "%s failed to allocate skb.\n", __func__);
>> +    }
>>       skb = get_skb(skb, flowclen, GFP_KERNEL);
>
> Oops, shouldn't the if statement be after the call to get_skb()? :) 
> (you're having a bad day ;))
>

And you don't free anything.  If get_skb() returns NULL, then log the 
warning and return.


>>       flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);
>
> One more nit:  The comment is no longer correct.  It should be 
> something like:
>
> iw_cxgb4: in send_flowc(), handle a null skb return from get_skb()
>
>
> -- 
> To unsubscribe from this list: send the line "unsubscribe 
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

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

Patch

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 5e153f6..c518411 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -455,7 +455,10 @@  static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
 	unsigned int flowclen = 80;
 	struct fw_flowc_wr *flowc;
 	int i;

+	if (!skb) {
+		kfree_skb();
+		pr_warn(MOD "%s failed to allocate skb.\n", __func__);
+	}
 	skb = get_skb(skb, flowclen, GFP_KERNEL);
 	flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);