<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/net/core/skbuff.c, branch v3.3</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>net:core: use IS_ENABLED</title>
<updated>2011-12-16T20:49:51+00:00</updated>
<author>
<name>Igor Maravić</name>
<email>igorm@etf.rs</email>
</author>
<published>2011-12-12T02:58:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a3bf7ae9ae1036636d8900b35a3880e871eceb39'/>
<id>a3bf7ae9ae1036636d8900b35a3880e871eceb39</id>
<content type='text'>
Use IS_ENABLED(CONFIG_FOO)
instead of defined(CONFIG_FOO) || defined (CONFIG_FOO_MODULE)

Signed-off-by: Igor Maravić &lt;igorm@etf.rs&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use IS_ENABLED(CONFIG_FOO)
instead of defined(CONFIG_FOO) || defined (CONFIG_FOO_MODULE)

Signed-off-by: Igor Maravić &lt;igorm@etf.rs&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tcp: take care of misalignments</title>
<updated>2011-12-04T18:20:39+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2011-12-03T21:39:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=117632e64d2a5f464e491fe221d7169a3814a77b'/>
<id>117632e64d2a5f464e491fe221d7169a3814a77b</id>
<content type='text'>
We discovered that TCP stack could retransmit misaligned skbs if a
malicious peer acknowledged sub MSS frame. This currently can happen
only if output interface is non SG enabled : If SG is enabled, tcp
builds headless skbs (all payload is included in fragments), so the tcp
trimming process only removes parts of skb fragments, header stay
aligned.

Some arches cant handle misalignments, so force a head reallocation and
shrink headroom to MAX_TCP_HEADER.

Dont care about misaligments on x86 and PPC (or other arches setting
NET_IP_ALIGN to 0)

This patch introduces __pskb_copy() which can specify the headroom of
new head, and pskb_copy() becomes a wrapper on top of __pskb_copy()

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We discovered that TCP stack could retransmit misaligned skbs if a
malicious peer acknowledged sub MSS frame. This currently can happen
only if output interface is non SG enabled : If SG is enabled, tcp
builds headless skbs (all payload is included in fragments), so the tcp
trimming process only removes parts of skb fragments, header stay
aligned.

Some arches cant handle misalignments, so force a head reallocation and
shrink headroom to MAX_TCP_HEADER.

Dont care about misaligments on x86 and PPC (or other arches setting
NET_IP_ALIGN to 0)

This patch introduces __pskb_copy() which can specify the headroom of
new head, and pskb_copy() becomes a wrapper on top of __pskb_copy()

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2011-11-26T19:47:03+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2011-11-26T19:47:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6dec4ac4ee1ad894dc0e9647cd3e180f93fc353c'/>
<id>6dec4ac4ee1ad894dc0e9647cd3e180f93fc353c</id>
<content type='text'>
Conflicts:
	net/ipv4/inet_diag.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	net/ipv4/inet_diag.c
</pre>
</div>
</content>
</entry>
<entry>
<title>net: correct comments of skb_shift</title>
<updated>2011-11-22T21:18:43+00:00</updated>
<author>
<name>Feng King</name>
<email>kinwin2008@gmail.com</email>
</author>
<published>2011-11-21T01:47:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=20e994a05b33b186a22a3b9e922df4cce644daac'/>
<id>20e994a05b33b186a22a3b9e922df4cce644daac</id>
<content type='text'>
when skb_shift, we want to shift paged data from skb to tgt frag area.
Original comments revert the shift order

Signed-off-by: Feng King &lt;kinwin2008@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
when skb_shift, we want to shift paged data from skb to tgt frag area.
Original comments revert the shift order

Signed-off-by: Feng King &lt;kinwin2008@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem</title>
<updated>2011-11-17T18:11:43+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2011-11-17T18:11:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e11c259f745889b55bc5596ca78271f2f5cf08d2'/>
<id>e11c259f745889b55bc5596ca78271f2f5cf08d2</id>
<content type='text'>
Conflicts:
	include/net/bluetooth/bluetooth.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	include/net/bluetooth/bluetooth.h
</pre>
</div>
</content>
</entry>
<entry>
<title>net: introduce and use netdev_features_t for device features sets</title>
<updated>2011-11-16T22:43:10+00:00</updated>
<author>
<name>Michał Mirosław</name>
<email>mirq-linux@rere.qmqm.pl</email>
</author>
<published>2011-11-15T15:29:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c8f44affb7244f2ac3e703cab13d55ede27621bb'/>
<id>c8f44affb7244f2ac3e703cab13d55ede27621bb</id>
<content type='text'>
v2:	add couple missing conversions in drivers
	split unexporting netdev_fix_features()
	implemented %pNF
	convert sock::sk_route_(no?)caps

Signed-off-by: Michał Mirosław &lt;mirq-linux@rere.qmqm.pl&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
v2:	add couple missing conversions in drivers
	split unexporting netdev_fix_features()
	implemented %pNF
	convert sock::sk_route_(no?)caps

Signed-off-by: Michał Mirosław &lt;mirq-linux@rere.qmqm.pl&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: introduce build_skb()</title>
<updated>2011-11-14T19:13:30+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2011-11-14T06:03:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b2b5ce9d1ccf1c45f8ac68e5d901112ab76ba199'/>
<id>b2b5ce9d1ccf1c45f8ac68e5d901112ab76ba199</id>
<content type='text'>
One of the thing we discussed during netdev 2011 conference was the idea
to change some network drivers to allocate/populate their skb at RX
completion time, right before feeding the skb to network stack.

In old days, we allocated skbs when populating the RX ring.

This means bringing into cpu cache sk_buff and skb_shared_info cache
lines (since we clear/initialize them), then 'queue' skb-&gt;data to NIC.

By the time NIC fills a frame in skb-&gt;data buffer and host can process
it, cpu probably threw away the cache lines from its caches, because lot
of things happened between the allocation and final use.

So the deal would be to allocate only the data buffer for the NIC to
populate its RX ring buffer. And use build_skb() at RX completion to
attach a data buffer (now filled with an ethernet frame) to a new skb,
initialize the skb_shared_info portion, and give the hot skb to network
stack.

build_skb() is the function to allocate an skb, caller providing the
data buffer that should be attached to it. Drivers are expected to call
skb_reserve() right after build_skb() to adjust skb-&gt;data to the
Ethernet frame (usually skipping NET_SKB_PAD and NET_IP_ALIGN, but some
drivers might add a hardware provided alignment)

Data provided to build_skb() MUST have been allocated by a prior
kmalloc() call, with enough room to add SKB_DATA_ALIGN(sizeof(struct
skb_shared_info)) bytes at the end of the data without corrupting
incoming frame.

data = kmalloc(NET_SKB_PAD + NET_IP_ALIGN + 1536 +
               SKB_DATA_ALIGN(sizeof(struct skb_shared_info)),
	       GFP_ATOMIC);
...
skb = build_skb(data);
if (!skb) {
	recycle_data(data);
} else {
	skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
	...
}

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
CC: Eilon Greenstein &lt;eilong@broadcom.com&gt;
CC: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
CC: Tom Herbert &lt;therbert@google.com&gt;
CC: Jamal Hadi Salim &lt;hadi@mojatatu.com&gt;
CC: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
CC: Thomas Graf &lt;tgraf@infradead.org&gt;
CC: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
CC: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
One of the thing we discussed during netdev 2011 conference was the idea
to change some network drivers to allocate/populate their skb at RX
completion time, right before feeding the skb to network stack.

In old days, we allocated skbs when populating the RX ring.

This means bringing into cpu cache sk_buff and skb_shared_info cache
lines (since we clear/initialize them), then 'queue' skb-&gt;data to NIC.

By the time NIC fills a frame in skb-&gt;data buffer and host can process
it, cpu probably threw away the cache lines from its caches, because lot
of things happened between the allocation and final use.

So the deal would be to allocate only the data buffer for the NIC to
populate its RX ring buffer. And use build_skb() at RX completion to
attach a data buffer (now filled with an ethernet frame) to a new skb,
initialize the skb_shared_info portion, and give the hot skb to network
stack.

build_skb() is the function to allocate an skb, caller providing the
data buffer that should be attached to it. Drivers are expected to call
skb_reserve() right after build_skb() to adjust skb-&gt;data to the
Ethernet frame (usually skipping NET_SKB_PAD and NET_IP_ALIGN, but some
drivers might add a hardware provided alignment)

Data provided to build_skb() MUST have been allocated by a prior
kmalloc() call, with enough room to add SKB_DATA_ALIGN(sizeof(struct
skb_shared_info)) bytes at the end of the data without corrupting
incoming frame.

data = kmalloc(NET_SKB_PAD + NET_IP_ALIGN + 1536 +
               SKB_DATA_ALIGN(sizeof(struct skb_shared_info)),
	       GFP_ATOMIC);
...
skb = build_skb(data);
if (!skb) {
	recycle_data(data);
} else {
	skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);
	...
}

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
CC: Eilon Greenstein &lt;eilong@broadcom.com&gt;
CC: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
CC: Tom Herbert &lt;therbert@google.com&gt;
CC: Jamal Hadi Salim &lt;hadi@mojatatu.com&gt;
CC: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
CC: Thomas Graf &lt;tgraf@infradead.org&gt;
CC: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
CC: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: add wireless TX status socket option</title>
<updated>2011-11-09T21:01:02+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2011-11-09T09:15:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6e3e939f3b1bf8534b32ad09ff199d88800835a0'/>
<id>6e3e939f3b1bf8534b32ad09ff199d88800835a0</id>
<content type='text'>
The 802.1X EAPOL handshake hostapd does requires
knowing whether the frame was ack'ed by the peer.
Currently, we fudge this pretty badly by not even
transmitting the frame as a normal data frame but
injecting it with radiotap and getting the status
out of radiotap monitor as well. This is rather
complex, confuses users (mon.wlan0 presence) and
doesn't work with all hardware.

To get rid of that hack, introduce a real wifi TX
status option for data frame transmissions.

This works similar to the existing TX timestamping
in that it reflects the SKB back to the socket's
error queue with a SCM_WIFI_STATUS cmsg that has
an int indicating ACK status (0/1).

Since it is possible that at some point we will
want to have TX timestamping and wifi status in a
single errqueue SKB (there's little point in not
doing that), redefine SO_EE_ORIGIN_TIMESTAMPING
to SO_EE_ORIGIN_TXSTATUS which can collect more
than just the timestamp; keep the old constant
as an alias of course. Currently the internal APIs
don't make that possible, but it wouldn't be hard
to split them up in a way that makes it possible.

Thanks to Neil Horman for helping me figure out
the functions that add the control messages.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The 802.1X EAPOL handshake hostapd does requires
knowing whether the frame was ack'ed by the peer.
Currently, we fudge this pretty badly by not even
transmitting the frame as a normal data frame but
injecting it with radiotap and getting the status
out of radiotap monitor as well. This is rather
complex, confuses users (mon.wlan0 presence) and
doesn't work with all hardware.

To get rid of that hack, introduce a real wifi TX
status option for data frame transmissions.

This works similar to the existing TX timestamping
in that it reflects the SKB back to the socket's
error queue with a SCM_WIFI_STATUS cmsg that has
an int indicating ACK status (0/1).

Since it is possible that at some point we will
want to have TX timestamping and wifi status in a
single errqueue SKB (there's little point in not
doing that), redefine SO_EE_ORIGIN_TIMESTAMPING
to SO_EE_ORIGIN_TXSTATUS which can collect more
than just the timestamp; keep the old constant
as an alias of course. Currently the internal APIs
don't make that possible, but it wouldn't be hard
to split them up in a way that makes it possible.

Thanks to Neil Horman for helping me figure out
the functions that add the control messages.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Add back alignment for size for __alloc_skb</title>
<updated>2011-11-03T22:09:16+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2011-11-02T13:40:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bc417e30f8dff6e8657005c4317cd71239e53375'/>
<id>bc417e30f8dff6e8657005c4317cd71239e53375</id>
<content type='text'>
Commit 87fb4b7b533073eeeaed0b6bf7c2328995f6c075 (net: more
accurate skb truesize) changed the alignment of size. This
can cause problems at least on some machines with NFS root:

Unhandled fault: alignment exception (0x801) at 0xc183a43a
Internal error: : 801 [#1] PREEMPT
Modules linked in:
CPU: 0    Not tainted  (3.1.0-08784-g5eeee4a #733)
pc : [&lt;c02fbba0&gt;]    lr : [&lt;c02fbb9c&gt;]    psr: 60000013
sp : c180fef8  ip : 00000000  fp : c181f580
r10: 00000000  r9 : c044b28c  r8 : 00000001
r7 : c183a3a0  r6 : c1835be0  r5 : c183a412  r4 : 000001f2
r3 : 00000000  r2 : 00000000  r1 : ffffffe6  r0 : c183a43a
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: 10004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc180e270)
Stack: (0xc180fef8 to 0xc1810000)
fee0:                                                       00000024 00000000
ff00: 00000000 c183b9c0 c183b8e0 c044b28c c0507ccc c019dfc4 c180ff2c c0503cf8
ff20: c180ff4c c180ff4c 00000000 c1835420 c182c740 c18349c0 c05233c0 00000000
ff40: 00000000 c00e6bb8 c180e000 00000000 c04dd82c c0507e7c c050cc18 c183b9c0
ff60: c05233c0 00000000 00000000 c01f34f4 c0430d70 c019d364 c04dd898 c04dd898
ff80: c04dd82c c0507e7c c180e000 00000000 c04c584c c01f4918 c04dd898 c04dd82c
ffa0: c04ddd28 c180e000 00000000 c0008758 c181fa60 3231d82c 00000037 00000000
ffc0: 00000000 c04dd898 c04dd82c c04ddd28 00000013 00000000 00000000 00000000
ffe0: 00000000 c04b2224 00000000 c04b21a0 c001056c c001056c 00000000 00000000
Function entered at [&lt;c02fbba0&gt;] from [&lt;c019dfc4&gt;]
Function entered at [&lt;c019dfc4&gt;] from [&lt;c01f34f4&gt;]
Function entered at [&lt;c01f34f4&gt;] from [&lt;c01f4918&gt;]
Function entered at [&lt;c01f4918&gt;] from [&lt;c0008758&gt;]
Function entered at [&lt;c0008758&gt;] from [&lt;c04b2224&gt;]
Function entered at [&lt;c04b2224&gt;] from [&lt;c001056c&gt;]
Code: e1a00005 e3a01028 ebfa7cb0 e35a0000 (e5858028)

Here PC is at __alloc_skb and &amp;shinfo-&gt;dataref is unaligned because
skb-&gt;end can be unaligned without this patch.

As explained by Eric Dumazet &lt;eric.dumazet@gmail.com&gt;, this happens
only with SLOB, and not with SLAB or SLUB:

* Eric Dumazet &lt;eric.dumazet@gmail.com&gt; [111102 15:56]:
&gt;
&gt; Your patch is absolutely needed, I completely forgot about SLOB :(
&gt;
&gt; since, kmalloc(386) on SLOB gives exactly ksize=386 bytes, not nearest
&gt; power of two.
&gt;
&gt; [   60.305763] malloc(size=385)-&gt;ffff880112c11e38 ksize=386 -&gt; nsize=2
&gt; [   60.305921] malloc(size=385)-&gt;ffff88007c92ce28 ksize=386 -&gt; nsize=2
&gt; [   60.306898] malloc(size=656)-&gt;ffff88007c44ad28 ksize=656 -&gt; nsize=272
&gt; [   60.325385] malloc(size=656)-&gt;ffff88007c575868 ksize=656 -&gt; nsize=272
&gt; [   60.325531] malloc(size=656)-&gt;ffff88011c777230 ksize=656 -&gt; nsize=272
&gt; [   60.325701] malloc(size=656)-&gt;ffff880114011008 ksize=656 -&gt; nsize=272
&gt; [   60.346716] malloc(size=385)-&gt;ffff880114142008 ksize=386 -&gt; nsize=2
&gt; [   60.346900] malloc(size=385)-&gt;ffff88011c777690 ksize=386 -&gt; nsize=2

Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Acked-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit 87fb4b7b533073eeeaed0b6bf7c2328995f6c075 (net: more
accurate skb truesize) changed the alignment of size. This
can cause problems at least on some machines with NFS root:

Unhandled fault: alignment exception (0x801) at 0xc183a43a
Internal error: : 801 [#1] PREEMPT
Modules linked in:
CPU: 0    Not tainted  (3.1.0-08784-g5eeee4a #733)
pc : [&lt;c02fbba0&gt;]    lr : [&lt;c02fbb9c&gt;]    psr: 60000013
sp : c180fef8  ip : 00000000  fp : c181f580
r10: 00000000  r9 : c044b28c  r8 : 00000001
r7 : c183a3a0  r6 : c1835be0  r5 : c183a412  r4 : 000001f2
r3 : 00000000  r2 : 00000000  r1 : ffffffe6  r0 : c183a43a
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: 10004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc180e270)
Stack: (0xc180fef8 to 0xc1810000)
fee0:                                                       00000024 00000000
ff00: 00000000 c183b9c0 c183b8e0 c044b28c c0507ccc c019dfc4 c180ff2c c0503cf8
ff20: c180ff4c c180ff4c 00000000 c1835420 c182c740 c18349c0 c05233c0 00000000
ff40: 00000000 c00e6bb8 c180e000 00000000 c04dd82c c0507e7c c050cc18 c183b9c0
ff60: c05233c0 00000000 00000000 c01f34f4 c0430d70 c019d364 c04dd898 c04dd898
ff80: c04dd82c c0507e7c c180e000 00000000 c04c584c c01f4918 c04dd898 c04dd82c
ffa0: c04ddd28 c180e000 00000000 c0008758 c181fa60 3231d82c 00000037 00000000
ffc0: 00000000 c04dd898 c04dd82c c04ddd28 00000013 00000000 00000000 00000000
ffe0: 00000000 c04b2224 00000000 c04b21a0 c001056c c001056c 00000000 00000000
Function entered at [&lt;c02fbba0&gt;] from [&lt;c019dfc4&gt;]
Function entered at [&lt;c019dfc4&gt;] from [&lt;c01f34f4&gt;]
Function entered at [&lt;c01f34f4&gt;] from [&lt;c01f4918&gt;]
Function entered at [&lt;c01f4918&gt;] from [&lt;c0008758&gt;]
Function entered at [&lt;c0008758&gt;] from [&lt;c04b2224&gt;]
Function entered at [&lt;c04b2224&gt;] from [&lt;c001056c&gt;]
Code: e1a00005 e3a01028 ebfa7cb0 e35a0000 (e5858028)

Here PC is at __alloc_skb and &amp;shinfo-&gt;dataref is unaligned because
skb-&gt;end can be unaligned without this patch.

As explained by Eric Dumazet &lt;eric.dumazet@gmail.com&gt;, this happens
only with SLOB, and not with SLAB or SLUB:

* Eric Dumazet &lt;eric.dumazet@gmail.com&gt; [111102 15:56]:
&gt;
&gt; Your patch is absolutely needed, I completely forgot about SLOB :(
&gt;
&gt; since, kmalloc(386) on SLOB gives exactly ksize=386 bytes, not nearest
&gt; power of two.
&gt;
&gt; [   60.305763] malloc(size=385)-&gt;ffff880112c11e38 ksize=386 -&gt; nsize=2
&gt; [   60.305921] malloc(size=385)-&gt;ffff88007c92ce28 ksize=386 -&gt; nsize=2
&gt; [   60.306898] malloc(size=656)-&gt;ffff88007c44ad28 ksize=656 -&gt; nsize=272
&gt; [   60.325385] malloc(size=656)-&gt;ffff88007c575868 ksize=656 -&gt; nsize=272
&gt; [   60.325531] malloc(size=656)-&gt;ffff88011c777230 ksize=656 -&gt; nsize=272
&gt; [   60.325701] malloc(size=656)-&gt;ffff880114011008 ksize=656 -&gt; nsize=272
&gt; [   60.346716] malloc(size=385)-&gt;ffff880114142008 ksize=386 -&gt; nsize=2
&gt; [   60.346900] malloc(size=385)-&gt;ffff88011c777690 ksize=386 -&gt; nsize=2

Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Acked-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: add opaque struct around skb frag page</title>
<updated>2011-10-21T06:52:53+00:00</updated>
<author>
<name>Ian Campbell</name>
<email>Ian.Campbell@citrix.com</email>
</author>
<published>2011-10-19T23:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a8605c6063f785858c1bc431d0bfe66c41e71cfa'/>
<id>a8605c6063f785858c1bc431d0bfe66c41e71cfa</id>
<content type='text'>
I've split this bit out of the skb frag destructor patch since it helps enforce
the use of the fragment API.

Signed-off-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I've split this bit out of the skb frag destructor patch since it helps enforce
the use of the fragment API.

Signed-off-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
