Re: [PATCH] IB/IPoIB: Check the headroom size
From: Honggang LI <hidden>
Date: 2017-04-26 12:52:30
Also in:
linux-rdma
On Wed, Apr 26, 2017 at 09:46:34AM +0200, Paolo Abeni wrote:
quoted hunk
On Wed, 2017-04-26 at 00:50 +0300, Or Gerlitz wrote:quoted
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);
I don't think so. When this skb_under_panic arise, all slaves had been removed from a busy bonding interface, so it is better to immediately give up and return error.
+ if (ret) + return ret; header = (struct ipoib_header *) skb_push(skb, sizeof *header); --- Paolo -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.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-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html