<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/net, branch v3.10.4</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/net?h=v3.10.4</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/net?h=v3.10.4'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-07-28T23:30:05Z</updated>
<entry>
<title>macvtap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS</title>
<updated>2013-07-28T23:30:05Z</updated>
<author>
<name>Jason Wang</name>
<email>jasowang@redhat.com</email>
</author>
<published>2013-07-18T02:55:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7d9e6dd88cdea6c3d62a795ef69e6cc47b6dca2d'/>
<id>urn:sha1:7d9e6dd88cdea6c3d62a795ef69e6cc47b6dca2d</id>
<content type='text'>
[ Upstream commit ece793fcfc417b3925844be88a6a6dc82ae8f7c6 ]

We try to linearize part of the skb when the number of iov is greater than
MAX_SKB_FRAGS. This is not enough since each single vector may occupy more than
one pages, so zerocopy_sg_fromiovec() may still fail and may break the guest
network.

Solve this problem by calculate the pages needed for iov before trying to do
zerocopy and switch to use copy instead of zerocopy if it needs more than
MAX_SKB_FRAGS.

This is done through introducing a new helper to count the pages for iov, and
call uarg-&gt;callback() manually when switching from zerocopy to copy to notify
vhost.

We can do further optimization on top.

This bug were introduced from b92946e2919134ebe2a4083e4302236295ea2a73
(macvtap: zerocopy: validate vectors before building skb).

Cc: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tuntap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS</title>
<updated>2013-07-28T23:30:04Z</updated>
<author>
<name>Jason Wang</name>
<email>jasowang@redhat.com</email>
</author>
<published>2013-07-18T02:55:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=05464d21faec5e37e5b0fca58a5201408d6aab31'/>
<id>urn:sha1:05464d21faec5e37e5b0fca58a5201408d6aab31</id>
<content type='text'>
[ Upstream commit 885291761dba2bfe04df4c0f7bb75e4c920ab82e ]

We try to linearize part of the skb when the number of iov is greater than
MAX_SKB_FRAGS. This is not enough since each single vector may occupy more than
one pages, so zerocopy_sg_fromiovec() may still fail and may break the guest
network.

Solve this problem by calculate the pages needed for iov before trying to do
zerocopy and switch to use copy instead of zerocopy if it needs more than
MAX_SKB_FRAGS.

This is done through introducing a new helper to count the pages for iov, and
call uarg-&gt;callback() manually when switching from zerocopy to copy to notify
vhost.

We can do further optimization on top.

The bug were introduced from commit 0690899b4d4501b3505be069b9a687e68ccbe15b
(tun: experimental zero copy tx support)

Cc: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>hyperv: Fix the NETIF_F_SG flag setting in netvsc</title>
<updated>2013-07-28T23:30:04Z</updated>
<author>
<name>Haiyang Zhang</name>
<email>haiyangz@microsoft.com</email>
</author>
<published>2013-07-17T06:01:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=98bec4a114dfd772390a07735606109447481872'/>
<id>urn:sha1:98bec4a114dfd772390a07735606109447481872</id>
<content type='text'>
[ Upstream commit f45708209dc445bac0844f6ce86e315a2ffe8a29 ]

SG mode is not currently supported by netvsc, so remove this flag for now.
Otherwise, it will be unconditionally enabled by commit ec5f0615642
    "Kill link between CSUM and SG features"
Previously, the SG feature is disabled because CSUM is not set here.

Signed-off-by: Haiyang Zhang &lt;haiyangz@microsoft.com&gt;
Reviewed-by: K. Y. Srinivasan &lt;kys@microsoft.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>be2net: Fix to avoid hardware workaround when not needed</title>
<updated>2013-07-28T23:30:04Z</updated>
<author>
<name>Sarveshwar Bandi</name>
<email>sarveshwar.bandi@emulex.com</email>
</author>
<published>2013-07-16T07:14:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e0ca176c17745ac3e0c5a9969aba3c983e6c69c5'/>
<id>urn:sha1:e0ca176c17745ac3e0c5a9969aba3c983e6c69c5</id>
<content type='text'>
[ Upstream commit 52fe29e4bb614367c108b717c6d7fe5953eb7af3 ]

Hardware workaround requesting hardware to skip vlan insertion is necessary
only when umc or qnq is enabled. Enabling this workaround in other scenarios
could cause controller to stall.

Signed-off-by: Sarveshwar Bandi &lt;sarveshwar.bandi@emulex.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>atl1e: unmap partially mapped skb on dma error and free skb</title>
<updated>2013-07-28T23:30:02Z</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2013-07-16T14:49:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=da7e35cee6bf8aae938baa597863691bfffc26eb'/>
<id>urn:sha1:da7e35cee6bf8aae938baa597863691bfffc26eb</id>
<content type='text'>
[ Upstream commit 584ec4355355ffac43571b02a314d43eb2f7fcbf ]

Ben Hutchings pointed out that my recent update to atl1e
in commit 352900b583b2852152a1e05ea0e8b579292e731e
("atl1e: fix dma mapping warnings") was missing a bit of code.

Specifically it reset the hardware tx ring to its origional state when
we hit a dma error, but didn't unmap any exiting mappings from the
operation.  This patch fixes that up.  It also remembers to free the
skb in the event that an error occurs, so we don't leak.  Untested, as
I don't have hardware.  I think its pretty straightforward, but please
review closely.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
CC: Jay Cliburn &lt;jcliburn@gmail.com&gt;
CC: Chris Snook &lt;chris.snook@gmail.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>atl1e: fix dma mapping warnings</title>
<updated>2013-07-28T23:30:02Z</updated>
<author>
<name>Neil Horman</name>
<email>nhorman@tuxdriver.com</email>
</author>
<published>2013-07-12T14:58:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dc419b2d5cac92acac3228a46df12720cac358f5'/>
<id>urn:sha1:dc419b2d5cac92acac3228a46df12720cac358f5</id>
<content type='text'>
[ Upstream commit 352900b583b2852152a1e05ea0e8b579292e731e ]

Recently had this backtrace reported:
WARNING: at lib/dma-debug.c:937 check_unmap+0x47d/0x930()
Hardware name: System Product Name
ATL1E 0000:02:00.0: DMA-API: device driver failed to check map error[device
address=0x00000000cbfd1000] [size=90 bytes] [mapped as single]
Modules linked in: xt_conntrack nf_conntrack ebtable_filter ebtables
ip6table_filter ip6_tables snd_hda_codec_hdmi snd_hda_codec_realtek iTCO_wdt
iTCO_vendor_support snd_hda_intel acpi_cpufreq mperf coretemp btrfs zlib_deflate
snd_hda_codec snd_hwdep microcode raid6_pq libcrc32c snd_seq usblp serio_raw xor
snd_seq_device joydev snd_pcm snd_page_alloc snd_timer snd lpc_ich i2c_i801
soundcore mfd_core atl1e asus_atk0110 ata_generic pata_acpi radeon i2c_algo_bit
drm_kms_helper ttm drm i2c_core pata_marvell uinput
Pid: 314, comm: systemd-journal Not tainted 3.9.0-0.rc6.git2.3.fc19.x86_64 #1
Call Trace:
 &lt;IRQ&gt;  [&lt;ffffffff81069106&gt;] warn_slowpath_common+0x66/0x80
 [&lt;ffffffff8106916c&gt;] warn_slowpath_fmt+0x4c/0x50
 [&lt;ffffffff8138151d&gt;] check_unmap+0x47d/0x930
 [&lt;ffffffff810ad048&gt;] ? sched_clock_cpu+0xa8/0x100
 [&lt;ffffffff81381a2f&gt;] debug_dma_unmap_page+0x5f/0x70
 [&lt;ffffffff8137ce30&gt;] ? unmap_single+0x20/0x30
 [&lt;ffffffffa01569a1&gt;] atl1e_intr+0x3a1/0x5b0 [atl1e]
 [&lt;ffffffff810d53fd&gt;] ? trace_hardirqs_off+0xd/0x10
 [&lt;ffffffff81119636&gt;] handle_irq_event_percpu+0x56/0x390
 [&lt;ffffffff811199ad&gt;] handle_irq_event+0x3d/0x60
 [&lt;ffffffff8111cb6a&gt;] handle_fasteoi_irq+0x5a/0x100
 [&lt;ffffffff8101c36f&gt;] handle_irq+0xbf/0x150
 [&lt;ffffffff811dcb2f&gt;] ? file_sb_list_del+0x3f/0x50
 [&lt;ffffffff81073b10&gt;] ? irq_enter+0x50/0xa0
 [&lt;ffffffff8172738d&gt;] do_IRQ+0x4d/0xc0
 [&lt;ffffffff811dcb2f&gt;] ? file_sb_list_del+0x3f/0x50
 [&lt;ffffffff8171c6b2&gt;] common_interrupt+0x72/0x72
 &lt;EOI&gt;  [&lt;ffffffff810db5b2&gt;] ? lock_release+0xc2/0x310
 [&lt;ffffffff8109ea04&gt;] lg_local_unlock_cpu+0x24/0x50
 [&lt;ffffffff811dcb2f&gt;] file_sb_list_del+0x3f/0x50
 [&lt;ffffffff811dcb6d&gt;] fput+0x2d/0xc0
 [&lt;ffffffff811d8ea1&gt;] filp_close+0x61/0x90
 [&lt;ffffffff811fae4d&gt;] __close_fd+0x8d/0x150
 [&lt;ffffffff811d8ef0&gt;] sys_close+0x20/0x50
 [&lt;ffffffff81725699&gt;] system_call_fastpath+0x16/0x1b

The usual straighforward failure to check for dma_mapping_error after a map
operation is completed.

This patch should fix it, the reporter wandered off after filing this bz:
https://bugzilla.redhat.com/show_bug.cgi?id=954170

and I don't have hardware to test, but the fix is pretty straightforward, so I
figured I'd post it for review.

Signed-off-by: Neil Horman &lt;nhorman@tuxdriver.com&gt;
CC: Jay Cliburn &lt;jcliburn@gmail.com&gt;
CC: Chris Snook &lt;chris.snook@gmail.com&gt;
CC: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>ifb: fix oops when loading the ifb failed</title>
<updated>2013-07-28T23:30:01Z</updated>
<author>
<name>dingtianhong</name>
<email>dingtianhong@huawei.com</email>
</author>
<published>2013-07-11T11:04:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f84ddbc58cfd8551757efe3c61242c4d6e9918ce'/>
<id>urn:sha1:f84ddbc58cfd8551757efe3c61242c4d6e9918ce</id>
<content type='text'>
[ Upstream commit f2966cd5691058b8674a20766525bedeaea9cbcf ]

If __rtnl_link_register() return faild when loading the ifb, it will
take the wrong path and get oops, so fix it just like dummy.

Signed-off-by: Ding Tianhong &lt;dingtianhong@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dummy: fix oops when loading the dummy failed</title>
<updated>2013-07-28T23:30:01Z</updated>
<author>
<name>dingtianhong</name>
<email>dingtianhong@huawei.com</email>
</author>
<published>2013-07-11T11:04:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=629b1d3db71d24e52478b94c71202034eaefed80'/>
<id>urn:sha1:629b1d3db71d24e52478b94c71202034eaefed80</id>
<content type='text'>
[ Upstream commit 2c8a01894a12665d8059fad8f0a293c98a264121 ]

We rename the dummy in modprobe.conf like this:

install dummy0 /sbin/modprobe -o dummy0 --ignore-install dummy
install dummy1 /sbin/modprobe -o dummy1 --ignore-install dummy

We got oops when we run the command:

modprobe dummy0
modprobe dummy1

------------[ cut here ]------------

[ 3302.187584] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
[ 3302.195411] IP: [&lt;ffffffff813fe62a&gt;] __rtnl_link_unregister+0x9a/0xd0
[ 3302.201844] PGD 85c94a067 PUD 8517bd067 PMD 0
[ 3302.206305] Oops: 0002 [#1] SMP
[ 3302.299737] task: ffff88105ccea300 ti: ffff880eba4a0000 task.ti: ffff880eba4a0000
[ 3302.307186] RIP: 0010:[&lt;ffffffff813fe62a&gt;]  [&lt;ffffffff813fe62a&gt;] __rtnl_link_unregister+0x9a/0xd0
[ 3302.316044] RSP: 0018:ffff880eba4a1dd8  EFLAGS: 00010246
[ 3302.321332] RAX: 0000000000000000 RBX: ffffffff81a9d738 RCX: 0000000000000002
[ 3302.328436] RDX: 0000000000000000 RSI: ffffffffa04d602c RDI: ffff880eba4a1dd8
[ 3302.335541] RBP: ffff880eba4a1e18 R08: dead000000200200 R09: dead000000100100
[ 3302.342644] R10: 0000000000000080 R11: 0000000000000003 R12: ffffffff81a9d788
[ 3302.349748] R13: ffffffffa04d7020 R14: ffffffff81a9d670 R15: ffff880eba4a1dd8
[ 3302.364910] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 3302.370630] CR2: 0000000000000008 CR3: 000000085e15e000 CR4: 00000000000427e0
[ 3302.377734] DR0: 0000000000000003 DR1: 00000000000000b0 DR2: 0000000000000001
[ 3302.384838] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 3302.391940] Stack:
[ 3302.393944]  ffff880eba4a1dd8 ffff880eba4a1dd8 ffff880eba4a1e18 ffffffffa04d70c0
[ 3302.401350]  00000000ffffffef ffffffffa01a8000 0000000000000000 ffffffff816111c8
[ 3302.408758]  ffff880eba4a1e48 ffffffffa01a80be ffff880eba4a1e48 ffffffffa04d70c0
[ 3302.416164] Call Trace:
[ 3302.418605]  [&lt;ffffffffa01a8000&gt;] ? 0xffffffffa01a7fff
[ 3302.423727]  [&lt;ffffffffa01a80be&gt;] dummy_init_module+0xbe/0x1000 [dummy0]
[ 3302.430405]  [&lt;ffffffffa01a8000&gt;] ? 0xffffffffa01a7fff
[ 3302.435535]  [&lt;ffffffff81000322&gt;] do_one_initcall+0x152/0x1b0
[ 3302.441263]  [&lt;ffffffff810ab24b&gt;] do_init_module+0x7b/0x200
[ 3302.446824]  [&lt;ffffffff810ad3d2&gt;] load_module+0x4e2/0x530
[ 3302.452215]  [&lt;ffffffff8127ae40&gt;] ? ddebug_dyndbg_boot_param_cb+0x60/0x60
[ 3302.458979]  [&lt;ffffffff810ad5f1&gt;] SyS_init_module+0xd1/0x130
[ 3302.464627]  [&lt;ffffffff814b9652&gt;] system_call_fastpath+0x16/0x1b
[ 3302.490090] RIP  [&lt;ffffffff813fe62a&gt;] __rtnl_link_unregister+0x9a/0xd0
[ 3302.496607]  RSP &lt;ffff880eba4a1dd8&gt;
[ 3302.500084] CR2: 0000000000000008
[ 3302.503466] ---[ end trace 8342d49cd49f78ed ]---

The reason is that when loading dummy, if __rtnl_link_register() return failed,
the init_module should return and avoid take the wrong path.

Signed-off-by: Tan Xiaojun &lt;tanxiaojun@huawei.com&gt;
Signed-off-by: Ding Tianhong &lt;dingtianhong@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>alx: fix lockdep annotation</title>
<updated>2013-07-28T23:29:58Z</updated>
<author>
<name>Maarten Lankhorst</name>
<email>maarten.lankhorst@canonical.com</email>
</author>
<published>2013-07-11T13:53:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=61b6f1280da836ca67e6e4cfaefd65e989f6bfbc'/>
<id>urn:sha1:61b6f1280da836ca67e6e4cfaefd65e989f6bfbc</id>
<content type='text'>
[ Upstream commit a8798a5c77c9981e88caef1373a3310bf8aed219 ]

Move spin_lock_init to be called before the spinlocks are used, preventing a lockdep splat.

Signed-off-by: Maarten Lankhorst &lt;maarten.lankhorst@canonical.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>macvtap: correctly linearize skb when zerocopy is used</title>
<updated>2013-07-28T23:29:58Z</updated>
<author>
<name>Jason Wang</name>
<email>jasowang@redhat.com</email>
</author>
<published>2013-07-10T05:43:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bd31fdd2f48f4e42c6a19d24fa85e59eb2ccf583'/>
<id>urn:sha1:bd31fdd2f48f4e42c6a19d24fa85e59eb2ccf583</id>
<content type='text'>
[ Upstream commit 61d46bf979d5cd7c164709a80ad5676a35494aae ]

Userspace may produce vectors greater than MAX_SKB_FRAGS. When we try to
linearize parts of the skb to let the rest of iov to be fit in
the frags, we need count copylen into linear when calling macvtap_alloc_skb()
instead of partly counting it into data_len. Since this breaks
zerocopy_sg_from_iovec() since its inner counter assumes nr_frags should
be zero at beginning. This cause nr_frags to be increased wrongly without
setting the correct frags.

This bug were introduced from b92946e2919134ebe2a4083e4302236295ea2a73
(macvtap: zerocopy: validate vectors before building skb).

Cc: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Jason Wang &lt;jasowang@redhat.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
