2014-06-17 15:24:40

by Nicholas Krause

[permalink] [raw]
Subject: [PATCH] Checks for Null return of skb_alloc in send_flowc

Signed-off-by: Nicholas Krause <[email protected]>
---
drivers/infiniband/hw/cxgb4/cm.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 5e153f6..7e3d663 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -457,6 +457,10 @@ static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
int i;

skb = get_skb(skb, flowclen, GFP_KERNEL);
+ if (!skb) {
+ kfree_skb(skb);
+ pr_warn(MOD "%s failed to allocate skb.\n", __func__);
+ }
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


2014-06-17 15:30:20

by Steve Wise

[permalink] [raw]
Subject: RE: [PATCH] Checks for Null return of skb_alloc in send_flowc



> -----Original Message-----
> From: Nicholas Krause [mailto:[email protected]]
> Sent: Tuesday, June 17, 2014 10:25 AM
> To: [email protected]
> Cc: [email protected]; [email protected]; [email protected]; linux-
> [email protected]; [email protected]
> Subject: [PATCH] Checks for Null return of skb_alloc in send_flowc
>
> Signed-off-by: Nicholas Krause <[email protected]>
> ---
> drivers/infiniband/hw/cxgb4/cm.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> index 5e153f6..7e3d663 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -457,6 +457,10 @@ static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
> int i;
>
> skb = get_skb(skb, flowclen, GFP_KERNEL);
> + if (!skb) {
> + kfree_skb(skb);
> + pr_warn(MOD "%s failed to allocate skb.\n", __func__);
> + }

You still don't have this right. :(

Like this:

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 5e153f6..3c55e88 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -457,6 +457,8 @@ static void send_flowc(struct c4iw_ep *ep, struct sk_buff *skb)
int i;

skb = get_skb(skb, flowclen, GFP_KERNEL);
+ if (!skb)
+ return;
flowc = (struct fw_flowc_wr *)__skb_put(skb, flowclen);

flowc->op_to_nparams = cpu_to_be32(FW_WR_OP(FW_FLOWC_WR) |