2019-03-09 05:20:18

by Kangjie Lu

[permalink] [raw]
Subject: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

get_skb may fail and return NULL. The fix returns "ENOMEM"
when it fails to avoid NULL dereference.

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

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 8221813219e5..502a54d57e2c 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
int win;

skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
req = __skb_put_zero(skb, sizeof(*req));
req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
--
2.17.1



2019-03-23 02:39:59

by Kangjie Lu

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference



> On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
>
> get_skb may fail and return NULL. The fix returns "ENOMEM"
> when it fails to avoid NULL dereference.
>
> Signed-off-by: Kangjie Lu <[email protected]>
> ---
> drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> index 8221813219e5..502a54d57e2c 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> int win;
>
> skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> + if (!skb)
> + return -ENOMEM;
> +

Can someone review this patch? Thanks.

> req = __skb_put_zero(skb, sizeof(*req));
> req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
> req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
> --
> 2.17.1
>


2019-03-23 23:27:36

by Bart Van Assche

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

On 3/22/19 7:37 PM, Kangjie Lu wrote:
>> On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
>> get_skb may fail and return NULL. The fix returns "ENOMEM"
>> when it fails to avoid NULL dereference.
>>
>> Signed-off-by: Kangjie Lu <[email protected]>
>> ---
>> drivers/infiniband/hw/cxgb4/cm.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
>> index 8221813219e5..502a54d57e2c 100644
>> --- a/drivers/infiniband/hw/cxgb4/cm.c
>> +++ b/drivers/infiniband/hw/cxgb4/cm.c
>> @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
>> int win;
>>
>> skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
>> + if (!skb)
>> + return -ENOMEM;
>> +
>
> Can someone review this patch? Thanks.

Hi Kangjie,

Please change the patch description to the imperative mood (see also
https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/SubmittingPatches).
A good way to invite feedback is to add a relevant Cc-list to a patch.
The output of scripts/get_maintainer.pl can be a good start.

Bart.

2019-03-27 12:14:37

by Mukesh Ojha

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference


On 3/9/2019 10:49 AM, Kangjie Lu wrote:
> get_skb may fail and return NULL. The fix returns "ENOMEM"
> when it fails to avoid NULL dereference.
>
> Signed-off-by: Kangjie Lu <[email protected]>

Reviewed-by: Mukesh Ojha <[email protected]>


> ---
> drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> index 8221813219e5..502a54d57e2c 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> int win;
>
> skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> + if (!skb)
> + return -ENOMEM;
> +
> req = __skb_put_zero(skb, sizeof(*req));
> req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
> req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));

2019-03-27 12:17:09

by Mukesh Ojha

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference


On 3/9/2019 10:49 AM, Kangjie Lu wrote:
> get_skb may fail and return NULL. The fix returns "ENOMEM"
> when it fails to avoid NULL dereference.
>
> Signed-off-by: Kangjie Lu <[email protected]>

Reviewed-by: Mukesh OJha <[email protected]>


> ---
> drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> index 8221813219e5..502a54d57e2c 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> int win;
>
> skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> + if (!skb)
> + return -ENOMEM;
> +
> req = __skb_put_zero(skb, sizeof(*req));
> req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
> req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));

2019-03-27 13:42:15

by Potnuri Bharat Teja

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

On Saturday, March 03/23/19, 2019 at 08:07:46 +0530, Kangjie Lu wrote:
>
>
> > On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
> >
> > get_skb may fail and return NULL. The fix returns "ENOMEM"
> > when it fails to avoid NULL dereference.
> >
> > Signed-off-by: Kangjie Lu <[email protected]>
> > ---
> > drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> > index 8221813219e5..502a54d57e2c 100644
> > --- a/drivers/infiniband/hw/cxgb4/cm.c
> > +++ b/drivers/infiniband/hw/cxgb4/cm.c
> > @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> > int win;
> >
> > skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> > + if (!skb)
> > + return -ENOMEM;
> > +
>
> Can someone review this patch? Thanks.

Sorry for the late response.
I recommend an error print before the return.
---
if (!skb) {
pr_err("%s - failed to alloc skb\n", __func__);
return -ENOMEM;
}
---
Thanks for the patch!
- Bharat.
>
> > req = __skb_put_zero(skb, sizeof(*req));
> > req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
> > req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
> > --
> > 2.17.1
> >
>

2019-03-28 12:43:45

by Jason Gunthorpe

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

On Wed, Mar 27, 2019 at 07:08:54PM +0530, Potnuri Bharat Teja wrote:
> On Saturday, March 03/23/19, 2019 at 08:07:46 +0530, Kangjie Lu wrote:
> >
> >
> > > On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
> > >
> > > get_skb may fail and return NULL. The fix returns "ENOMEM"
> > > when it fails to avoid NULL dereference.
> > >
> > > Signed-off-by: Kangjie Lu <[email protected]>
> > > drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> > > 1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> > > index 8221813219e5..502a54d57e2c 100644
> > > +++ b/drivers/infiniband/hw/cxgb4/cm.c
> > > @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> > > int win;
> > >
> > > skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> > > + if (!skb)
> > > + return -ENOMEM;
> > > +
> >
> > Can someone review this patch? Thanks.
>
> Sorry for the late response.
> I recommend an error print before the return.
> if (!skb) {
> pr_err("%s - failed to alloc skb\n", __func__);
> return -ENOMEM;
> }

no error prints on memory allocation failure, the kernel already
prints enough on this

Jason

2019-03-28 14:22:46

by Potnuri Bharat Teja

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

On Thursday, March 03/28/19, 2019 at 18:10:37 +0530, Jason Gunthorpe wrote:
> On Wed, Mar 27, 2019 at 07:08:54PM +0530, Potnuri Bharat Teja wrote:
> > On Saturday, March 03/23/19, 2019 at 08:07:46 +0530, Kangjie Lu wrote:
> > >
> > >
> > > > On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
> > > >
> > > > get_skb may fail and return NULL. The fix returns "ENOMEM"
> > > > when it fails to avoid NULL dereference.
> > > >
> > > > Signed-off-by: Kangjie Lu <[email protected]>
> > > > drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> > > > index 8221813219e5..502a54d57e2c 100644
> > > > +++ b/drivers/infiniband/hw/cxgb4/cm.c
> > > > @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> > > > int win;
> > > >
> > > > skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> > > > + if (!skb)
> > > > + return -ENOMEM;
> > > > +
> > >
> > > Can someone review this patch? Thanks.
> >
> > Sorry for the late response.
> > I recommend an error print before the return.
> > if (!skb) {
> > pr_err("%s - failed to alloc skb\n", __func__);
> > return -ENOMEM;
> > }
>
> no error prints on memory allocation failure, the kernel already
> prints enough on this
Ok.

Acked-by: Potnuri Bharat Teja <[email protected]>

2019-03-28 14:28:20

by Jason Gunthorpe

[permalink] [raw]
Subject: Re: [PATCH] infiniband: cxgb4: fix a potential NULL pointer dereference

On Thu, Mar 28, 2019 at 07:50:23PM +0530, Potnuri Bharat Teja wrote:
> On Thursday, March 03/28/19, 2019 at 18:10:37 +0530, Jason Gunthorpe wrote:
> > On Wed, Mar 27, 2019 at 07:08:54PM +0530, Potnuri Bharat Teja wrote:
> > > On Saturday, March 03/23/19, 2019 at 08:07:46 +0530, Kangjie Lu wrote:
> > > >
> > > >
> > > > > On Mar 8, 2019, at 11:19 PM, Kangjie Lu <[email protected]> wrote:
> > > > >
> > > > > get_skb may fail and return NULL. The fix returns "ENOMEM"
> > > > > when it fails to avoid NULL dereference.
> > > > >
> > > > > Signed-off-by: Kangjie Lu <[email protected]>
> > > > > drivers/infiniband/hw/cxgb4/cm.c | 3 +++
> > > > > 1 file changed, 3 insertions(+)
> > > > >
> > > > > diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
> > > > > index 8221813219e5..502a54d57e2c 100644
> > > > > +++ b/drivers/infiniband/hw/cxgb4/cm.c
> > > > > @@ -1919,6 +1919,9 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
> > > > > int win;
> > > > >
> > > > > skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
> > > > > + if (!skb)
> > > > > + return -ENOMEM;
> > > > > +
> > > >
> > > > Can someone review this patch? Thanks.
> > >
> > > Sorry for the late response.
> > > I recommend an error print before the return.
> > > if (!skb) {
> > > pr_err("%s - failed to alloc skb\n", __func__);
> > > return -ENOMEM;
> > > }
> >
> > no error prints on memory allocation failure, the kernel already
> > prints enough on this
> Ok.
>
> Acked-by: Potnuri Bharat Teja <[email protected]>

It needs to be resent with Bart's comment addressed, and all the tags collected.

Jason