diff mbox

[Resend] infiniband:memory leak in get_skb function in file cm.c

Message ID 1402938381-5882-1-git-send-email-xerofoify@gmail.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Nick June 16, 2014, 5:06 p.m. UTC
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Steve Wise June 16, 2014, 5:08 p.m. UTC | #1
On 6/16/2014 12:06 PM, Nicholas Krause wrote:
> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> index f9477e2..2d56983 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -340,15 +340,13 @@ static int status2errno(int status)
>    */
>   static struct sk_buff *get_skb(struct sk_buff *skb, int len, gfp_t gfp)
>   {
>   if (skb && !skb_is_nonlinear(skb) && !skb_cloned(skb)) {
>                  skb_trim(skb, 0);
>                  skb_get(skb);
>                  skb_reset_transport_header(skb);
>          } else {
> +if (!skb)
> +	skb_kfree(skb);
> +	/*NULL is ignored */
>                  skb = alloc_skb(len, gfp);

This is still incorrect and the formatting is screwy.

As we discussed, you can call skb_kfree() with a NULL skb and it will 
silently ignore it.  So you don't need th 'if (!skb)'...

Perhaps you should read up more on submitting patches to get the 
formatting correct, and how to use the various tools, etc.

steve.
>          }
>          t4_set_arp_err_handler(skb, NULL, NULL);
>
> --
> 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

--
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 f9477e2..2d56983 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -340,15 +340,13 @@  static int status2errno(int status)
  */
 static struct sk_buff *get_skb(struct sk_buff *skb, int len, gfp_t gfp)
 {
 if (skb && !skb_is_nonlinear(skb) && !skb_cloned(skb)) {
                skb_trim(skb, 0);
                skb_get(skb);
                skb_reset_transport_header(skb);
        } else {
+if (!skb)
+	skb_kfree(skb);
+	/*NULL is ignored */
                skb = alloc_skb(len, gfp);
        }
        t4_set_arp_err_handler(skb, NULL, NULL);

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org