From: Paolo Abeni <pabeni@xxxxxxxxxx> Date: Thu, 27 Apr 2017 19:29:34 +0200 > On slave list updates, the bonding driver computes its hard_header_len > as the maximum of all enslaved devices's hard_header_len. > If the slave list is empty, e.g. on last enslaved device removal, > ETH_HLEN is used. > > Since the bonding header_ops are set only when the first enslaved > device is attached, the above can lead to header_ops->create() > being called with the wrong skb headroom in place. > > If bond0 is configured on top of ipoib devices, with the > following commands: > > ifup bond0 > for slave in $BOND_SLAVES_LIST; do > ip link set dev $slave nomaster > done > ping -c 1 <ip on bond0 subnet> > > we will obtain a skb_under_panic() with a similar call trace: ... > This change addresses the issue avoiding updating the bonding device > hard_header_len when the slaves list become empty, forbidding to > shrink it below the value used by header_ops->create(). > > The bug is there since commit 54ef31371407 ("[PATCH] bonding: Handle large > hard_header_len") but the panic can be triggered only since > commit fc791b633515 ("IB/ipoib: move back IB LL address into the hard > header"). > > Reported-by: Norbert P <noe@xxxxxxxxxxxxx> > Fixes: 54ef31371407 ("[PATCH] bonding: Handle large hard_header_len") > Fixes: fc791b633515 ("IB/ipoib: move back IB LL address into the hard header") > Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> > Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx> Applied, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html