yes it would but the problem in qeth is not only bonding related. We just have found it in a bonding scenario . But this kernel panic could also occur without bonding.
But thanks for reviewing it On Fri, Sep 15, 2006 at 08:51:25AM -0700, Jay Vosburgh wrote: > Frank Pavlic <[EMAIL PROTECTED]> wrote: > > >[PATCH 6/9] s390: qeth driver fixes [3/6] > > > >From: Frank Pavlic <[EMAIL PROTECTED]> > > fixed kernel panic caused by qeth driver: > > Using a bonding device qeth driver will realloc > > headroom for every skb coming from the bond device. > > Once this happens qeth frees the original skb and > > set the skb pointer to the new realloced skb. > > Frank, does the following patch to bonding (to track larger than > usual hard_header_len) resolve this problem without changing qeth? I > believe this patch is queued for 2.6.19. > > To: netdev@vger.kernel.org, [EMAIL PROTECTED] > Cc: Jeff Garzik <[EMAIL PROTECTED]> > Subject: [PATCH 5/7] bonding: Handle large hard_header_len > X-Mailer: MH-E 7.83; nmh 1.1-RC4; GNU Emacs 21.4.1 > Date: Fri, 01 Sep 2006 15:12:44 -0700 > From: Jay Vosburgh <[EMAIL PROTECTED]> > > > The bonding driver fails to adjust its hard_header_len when enslaving > interfaces. Whenever an interface with a hard_header_len greater than the > ETH_HLEN default is enslaved, the potential for an oops exists, and if the > oops happens while responding to an arp request, for example, the system > panics. GIANFAR devices may use an extended hard_header for VLAN or > hardware checksumming. Enslaving such a device and then transmitting over > it causes a kernel panic. > > Patch modified from submitter's original, but submitter agreed with this > patch in private email. > > Signed-off-by: Mark Huth <[EMAIL PROTECTED]> > Signed-off-by: Jay Vosburgh <[EMAIL PROTECTED]> > > > --- netdev-2.6.git-upstream/drivers/net/bonding/bond_main.c 2006/08/19 > 14:46:07 1.3 > +++ netdev-2.6.git-upstream/drivers/net/bonding/bond_main.c 2006/08/19 > 15:47:27 1.4 > @@ -1211,10 +1211,14 @@ static int bond_compute_features(struct > unsigned long features = BOND_INTERSECT_FEATURES; > struct slave *slave; > struct net_device *bond_dev = bond->dev; > + unsigned short max_hard_header_len = ETH_HLEN; > int i; > > - bond_for_each_slave(bond, slave, i) > + bond_for_each_slave(bond, slave, i) { > features &= (slave->dev->features & BOND_INTERSECT_FEATURES); > + if (slave->dev->hard_header_len > max_hard_header_len) > + max_hard_header_len = slave->dev->hard_header_len; > + } > > if ((features & NETIF_F_SG) && > !(features & NETIF_F_ALL_CSUM)) > @@ -1232,6 +1236,7 @@ static int bond_compute_features(struct > > features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES); > bond_dev->features = features; > + bond_dev->hard_header_len = max_hard_header_len; > > return 0; > } > > > > -J > > --- > -Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html