<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/stable/linux.git/drivers/net/bonding, branch linux-2.6.34.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<id>https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-2.6.34.y</id>
<link rel='self' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/atom?h=linux-2.6.34.y'/>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/'/>
<updated>2012-03-14T14:57:49+00:00</updated>
<entry>
<title>bonding: Ensure that we unshare skbs prior to calling pskb_may_pull</title>
<updated>2012-03-14T14:57:49+00:00</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2011-01-20T09:02:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=416653b42bc085364aa4af94b341660bde5d43ef'/>
<id>urn:sha1:416653b42bc085364aa4af94b341660bde5d43ef</id>
<content type='text'>
commit b30532515f0a62bfe17207ab00883dd262497006 upstream.

Recently reported oops:

kernel BUG at net/core/skbuff.c:813!
invalid opcode: 0000 [#1] SMP
last sysfs file: /sys/devices/virtual/net/bond0/broadcast
CPU 8
Modules linked in: sit tunnel4 cpufreq_ondemand acpi_cpufreq freq_table bonding
ipv6 dm_mirror dm_region_hash dm_log cdc_ether usbnet mii serio_raw i2c_i801
i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac edac_core bnx2
ixgbe dca mdio sg ext4 mbcache jbd2 sd_mod crc_t10dif mptsas mptscsih mptbase
scsi_transport_sas dm_mod [last unloaded: microcode]

Modules linked in: sit tunnel4 cpufreq_ondemand acpi_cpufreq freq_table bonding
ipv6 dm_mirror dm_region_hash dm_log cdc_ether usbnet mii serio_raw i2c_i801
i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac edac_core bnx2
ixgbe dca mdio sg ext4 mbcache jbd2 sd_mod crc_t10dif mptsas mptscsih mptbase
scsi_transport_sas dm_mod [last unloaded: microcode]
Pid: 0, comm: swapper Not tainted 2.6.32-71.el6.x86_64 #1 BladeCenter HS22
-[7870AC1]-
RIP: 0010:[&lt;ffffffff81405b16&gt;]  [&lt;ffffffff81405b16&gt;]
pskb_expand_head+0x36/0x1e0
RSP: 0018:ffff880028303b70  EFLAGS: 00010202
RAX: 0000000000000002 RBX: ffff880c6458ec80 RCX: 0000000000000020
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff880c6458ec80
RBP: ffff880028303bc0 R08: ffffffff818a6180 R09: ffff880c6458ed64
R10: ffff880c622b36c0 R11: 0000000000000400 R12: 0000000000000000
R13: 0000000000000180 R14: ffff880c622b3000 R15: 0000000000000000
FS:  0000000000000000(0000) GS:ffff880028300000(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 00000038653452a4 CR3: 0000000001001000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process swapper (pid: 0, threadinfo ffff8806649c2000, task ffff880c64f16ab0)
Stack:
 ffff880028303bc0 ffffffff8104fff9 000000000000001c 0000000100000000
&lt;0&gt; ffff880000047d80 ffff880c6458ec80 000000000000001c ffff880c6223da00
&lt;0&gt; ffff880c622b3000 0000000000000000 ffff880028303c10 ffffffff81407f7a
Call Trace:
&lt;IRQ&gt;
 [&lt;ffffffff8104fff9&gt;] ? __wake_up_common+0x59/0x90
 [&lt;ffffffff81407f7a&gt;] __pskb_pull_tail+0x2aa/0x360
 [&lt;ffffffffa0244530&gt;] bond_arp_rcv+0x2c0/0x2e0 [bonding]
 [&lt;ffffffff814a0857&gt;] ? packet_rcv+0x377/0x440
 [&lt;ffffffff8140f21b&gt;] netif_receive_skb+0x2db/0x670
 [&lt;ffffffff8140f788&gt;] napi_skb_finish+0x58/0x70
 [&lt;ffffffff8140fc89&gt;] napi_gro_receive+0x39/0x50
 [&lt;ffffffffa01286eb&gt;] ixgbe_clean_rx_irq+0x35b/0x900 [ixgbe]
 [&lt;ffffffffa01290f6&gt;] ixgbe_clean_rxtx_many+0x136/0x240 [ixgbe]
 [&lt;ffffffff8140fe53&gt;] net_rx_action+0x103/0x210
 [&lt;ffffffff81073bd7&gt;] __do_softirq+0xb7/0x1e0
 [&lt;ffffffff810d8740&gt;] ? handle_IRQ_event+0x60/0x170
 [&lt;ffffffff810142cc&gt;] call_softirq+0x1c/0x30
 [&lt;ffffffff81015f35&gt;] do_softirq+0x65/0xa0
 [&lt;ffffffff810739d5&gt;] irq_exit+0x85/0x90
 [&lt;ffffffff814cf915&gt;] do_IRQ+0x75/0xf0
 [&lt;ffffffff81013ad3&gt;] ret_from_intr+0x0/0x11
 &lt;EOI&gt;
 [&lt;ffffffff8101bc01&gt;] ? mwait_idle+0x71/0xd0
 [&lt;ffffffff814cd80a&gt;] ? atomic_notifier_call_chain+0x1a/0x20
 [&lt;ffffffff81011e96&gt;] cpu_idle+0xb6/0x110
 [&lt;ffffffff814c17c8&gt;] start_secondary+0x1fc/0x23f

Resulted from bonding driver registering packet handlers via dev_add_pack and
then trying to call pskb_may_pull. If another packet handler (like for AF_PACKET
sockets) gets called first, the delivered skb will have a user count &gt; 1, which
causes pskb_may_pull to BUG halt when it does its skb_shared check.  Fix this by
calling skb_share_check prior to the may_pull call sites in the bonding driver
to clone the skb when needed.  Tested by myself and the reported successfully.

Signed-off-by: Neil Horman
CC: Andy Gospodarek &lt;andy@greyhouse.net&gt;
CC: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Signed-off-by: Andy Gospodarek &lt;andy@greyhouse.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>bonding/vlan: Avoid mangled NAs on slaves without VLAN tag insertion</title>
<updated>2011-06-26T16:46:39+00:00</updated>
<author>
<name>Ben Hutchings</name>
<email>bhutchings@solarflare.com</email>
</author>
<published>2011-02-07T19:20:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=630aba4aea40201ebeff7a6ccead86b65ec89b0d'/>
<id>urn:sha1:630aba4aea40201ebeff7a6ccead86b65ec89b0d</id>
<content type='text'>
This is related to commit f88a4a9b65a6f3422b81be995535d0e69df11bb8
upstream, but the bug cannot be properly fixed without the other
changes to VLAN tagging in 2.6.37.

bond_na_send() attempts to insert a VLAN tag in between building and
sending packets of the respective formats.  If the slave does not
implement hardware VLAN tag insertion then vlan_put_tag() will mangle
the network-layer header because the Ethernet header is not present at
this point (unlike in bond_arp_send()).

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Acked-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>bonding: Fix slave selection bug.</title>
<updated>2011-04-17T20:16:03+00:00</updated>
<author>
<name>Hillf Danton</name>
<email>dhillf@gmail.com</email>
</author>
<published>2010-12-10T18:54:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a17efe35c72c510d8acf4da81aa5e2233b860281'/>
<id>urn:sha1:a17efe35c72c510d8acf4da81aa5e2233b860281</id>
<content type='text'>
commit af3e5bd5f650163c2e12297f572910a1af1b8236 upstream

The returned slave is incorrect, if the net device under check is not
charged yet by the master.

Signed-off-by: Hillf Danton &lt;dhillf@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>bonding: correctly process non-linear skbs</title>
<updated>2011-01-06T23:07:58+00:00</updated>
<author>
<name>Andy Gospodarek</name>
<email>andy@greyhouse.net</email>
</author>
<published>2010-09-10T11:43:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c54851e65ebe3033f070d03cf44fcb92b8021819'/>
<id>urn:sha1:c54851e65ebe3033f070d03cf44fcb92b8021819</id>
<content type='text'>
commit ab12811c89e88f2e66746790b1fe4469ccb7bdd9 upstream.

It was recently brought to my attention that 802.3ad mode bonds would no
longer form when using some network hardware after a driver update.
After snooping around I realized that the particular hardware was using
page-based skbs and found that skb-&gt;data did not contain a valid LACPDU
as it was not stored there.  That explained the inability to form an
802.3ad-based bond.  For balance-alb mode bonds this was also an issue
as ARPs would not be properly processed.

This patch fixes the issue in my tests and should be applied to 2.6.36
and as far back as anyone cares to add it to stable.

Thanks to Alexander Duyck &lt;alexander.h.duyck@intel.com&gt; and Jesse
Brandeburg &lt;jesse.brandeburg@intel.com&gt; for the suggestions on this one.

Signed-off-by: Andy Gospodarek &lt;andy@greyhouse.net&gt;
CC: Alexander Duyck &lt;alexander.h.duyck@intel.com&gt;
CC: Jesse Brandeburg &lt;jesse.brandeburg@intel.com&gt;
Signed-off-by: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>bonding: fix potential deadlock in bond_uninit()</title>
<updated>2010-04-02T00:26:01+00:00</updated>
<author>
<name>Amerigo Wang</name>
<email>amwang@redhat.com</email>
</author>
<published>2010-03-31T21:30:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9e2e61fbf8ad016d24e4af0afff13505f3dd2a2a'/>
<id>urn:sha1:9e2e61fbf8ad016d24e4af0afff13505f3dd2a2a</id>
<content type='text'>
bond_uninit() is invoked with rtnl_lock held, when it does destroy_workqueue()
which will potentially flush all works in this workqueue, if we hold rtnl_lock
again in the work function, it will deadlock.

So move destroy_workqueue() to destructor where rtnl_lock is not held any more,
suggested by Eric.

Signed-off-by: WANG Cong &lt;amwang@redhat.com&gt;
Cc: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Cc: Jiri Pirko &lt;jpirko@redhat.com&gt;
Cc: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>bonding: bond_xmit_roundrobin() fix</title>
<updated>2010-03-31T10:23:56+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2010-03-30T23:08:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=00ae702847df5566ce9182e9c895185e2ad1c181'/>
<id>urn:sha1:00ae702847df5566ce9182e9c895185e2ad1c181</id>
<content type='text'>
Commit a2fd940f (bonding: fix broken multicast with round-robin mode)
added a problem on litle endian machines.

drivers/net/bonding/bond_main.c:4159: warning: comparison is always
false due to limited range of data type

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>bonding: fix broken multicast with round-robin mode</title>
<updated>2010-03-27T23:39:15+00:00</updated>
<author>
<name>Andy Gospodarek</name>
<email>andy@greyhouse.net</email>
</author>
<published>2010-03-25T14:49:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a2fd940f4cff74b932728bd6ca12848da21a0234'/>
<id>urn:sha1:a2fd940f4cff74b932728bd6ca12848da21a0234</id>
<content type='text'>
Round-robin (mode 0) does nothing to ensure that any multicast traffic
originally destined for the host will continue to arrive at the host when
the link that sent the IGMP join or membership report goes down.  One of
the benefits of absolute round-robin transmit.

Keeping track of subscribed multicast groups for each slave did not seem
like a good use of resources, so I decided to simply send on the
curr_active slave of the bond (typically the first enslaved device that
is up).  This makes failover management simple as IGMP membership
reports only need to be sent when the curr_active_slave changes.  I
tested this patch and it appears to work as expected.

Originally reported by Lon Hohberger &lt;lhh@redhat.com&gt;.

Signed-off-by: Andy Gospodarek &lt;andy@greyhouse.net&gt;
CC: Lon Hohberger &lt;lhh@redhat.com&gt;
CC: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Signed-off-by: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>driver-core: Add attribute argument to class_attribute show/store</title>
<updated>2010-03-08T01:04:48+00:00</updated>
<author>
<name>Andi Kleen</name>
<email>andi@firstfloor.org</email>
</author>
<published>2010-01-05T11:48:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=28812fe11a21826ba4c97c6c7971a619987cd912'/>
<id>urn:sha1:28812fe11a21826ba4c97c6c7971a619987cd912</id>
<content type='text'>
Passing the attribute to the low level IO functions allows all kinds
of cleanups, by sharing low level IO code without requiring
an own function for every piece of data.

Also drivers can extend the attributes with own data fields
and use that in the low level function.

This makes the class attributes the same as sysdev_class attributes
and plain attributes.

This will allow further cleanups in drivers.

Full tree sweep converting all users.

Signed-off-by: Andi Kleen &lt;ak@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>bonding: fix device leak on error in bond_create()</title>
<updated>2010-02-27T10:52:05+00:00</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2010-02-27T10:52:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8d6184e4881b423522136aeb3ec1cbd9c35e8813'/>
<id>urn:sha1:8d6184e4881b423522136aeb3ec1cbd9c35e8813</id>
<content type='text'>
When the register_netdevice() call fails, the newly allocated device is
not freed.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>bonding: Remove net_device_stats from bonding struct</title>
<updated>2010-02-04T04:32:27+00:00</updated>
<author>
<name>Ajit Khaparde</name>
<email>ajitkhaparde@gmail.com</email>
</author>
<published>2010-02-01T14:06:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=35cfabdc5e9b99e732899db8f36c63a215e105bc'/>
<id>urn:sha1:35cfabdc5e9b99e732899db8f36c63a215e105bc</id>
<content type='text'>
There is no need to maintain stats in the bonding structure.
Use the instance of net_device_stats in netdevice.

Signed-off-by: Ajit Khaparde &lt;ajitk@serverengines.com&gt;
Signed-off-by: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
