[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1493192794.2409.3.camel@redhat.com>
Date: Wed, 26 Apr 2017 09:46:34 +0200
From: Paolo Abeni <pabeni@...hat.com>
To: Or Gerlitz <gerlitz.or@...il.com>,
Doug Ledford <dledford@...hat.com>
Cc: Erez Shitrit <erezsh@....mellanox.co.il>,
Honggang LI <honli@...hat.com>,
Erez Shitrit <erezsh@...lanox.com>,
"linux-rdma@...r.kernel.org" <linux-rdma@...r.kernel.org>,
Linux Netdev List <netdev@...r.kernel.org>,
David Miller <davem@...emloft.net>
Subject: Re: [PATCH] IB/IPoIB: Check the headroom size
On Wed, 2017-04-26 at 00:50 +0300, Or Gerlitz wrote:
> so maybe @ least for the time being, we should be picking Hong's patch
> with proper change log and without the giant stack dump till we have
> something better. If you agree, can you do the re-write of the change
> log?
I think that Hong's patch is following the correct way to fix the
issue: ipoib_hard_header() can't assume that the skb headroom is at
least IPOIB_HARD_LEN bytes, as wrongly implied by commit fc791b633515
(my fault, I'm sorry).
Perhaps we can make the code a little more robust with something
alongside the following (only compile tested):
---
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index d1d3fb7..d53d2e1 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1160,6 +1160,11 @@ static int ipoib_hard_header(struct sk_buff *skb,
const void *daddr, const void *saddr, unsigned len)
{
struct ipoib_header *header;
+ int ret;
+
+ ret = skb_cow_head(skb, IPOIB_HARD_LEN);
+ if (ret)
+ return ret;
header = (struct ipoib_header *) skb_push(skb, sizeof *header);
---
Paolo
Powered by blists - more mailing lists