<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/core, branch v3.2-rc2-rt4</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>softirq: Check preemption after reenabling interrupts</title>
<updated>2012-04-13T16:01:53+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-11-13T16:17:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=83b72f185a46187c721ec38b6bff0acf56c6713d'/>
<id>83b72f185a46187c721ec38b6bff0acf56c6713d</id>
<content type='text'>
raise_softirq_irqoff() disables interrupts and wakes the softirq
daemon, but after reenabling interrupts there is no preemption check,
so the execution of the softirq thread might be delayed arbitrarily.

In principle we could add that check to local_irq_enable/restore, but
that's overkill as the rasie_softirq_irqoff() sections are the only
ones which show this behaviour.

Reported-by: Carsten Emde &lt;cbe@osadl.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: stable-rt@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
raise_softirq_irqoff() disables interrupts and wakes the softirq
daemon, but after reenabling interrupts there is no preemption check,
so the execution of the softirq thread might be delayed arbitrarily.

In principle we could add that check to local_irq_enable/restore, but
that's overkill as the rasie_softirq_irqoff() sections are the only
ones which show this behaviour.

Reported-by: Carsten Emde &lt;cbe@osadl.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: stable-rt@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Avoid livelock in net_tx_action() on RT</title>
<updated>2012-04-13T16:01:50+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2011-10-06T14:48:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=10153f0f0fa48334a151a4851a7094a4f9f328d8'/>
<id>10153f0f0fa48334a151a4851a7094a4f9f328d8</id>
<content type='text'>
qdisc_lock is taken w/o disabling interrupts or bottom halfs. So code
holding a qdisc_lock() can be interrupted and softirqs can run on the
return of interrupt in !RT.

The spin_trylock() in net_tx_action() makes sure, that the softirq
does not deadlock. When the lock can't be acquired q is requeued and
the NET_TX softirq is raised. That causes the softirq to run over and
over.

That works in mainline as do_softirq() has a retry loop limit and
leaves the softirq processing in the interrupt return path and
schedules ksoftirqd. The task which holds qdisc_lock cannot be
preempted, so the lock is released and either ksoftirqd or the next
softirq in the return from interrupt path can proceed. Though it's a
bit strange to actually run MAX_SOFTIRQ_RESTART (10) loops before it
decides to bail out even if it's clear in the first iteration :)

On RT all softirq processing is done in a FIFO thread and we don't
have a loop limit, so ksoftirqd preempts the lock holder forever and
unqueues and requeues until the reset button is hit.

Due to the forced threading of ksoftirqd on RT we actually cannot
deadlock on qdisc_lock because it's a "sleeping lock". So it's safe to
replace the spin_trylock() with a spin_lock(). When contended,
ksoftirqd is scheduled out and the lock holder can proceed.

[ tglx: Massaged changelog and code comments ]

Solved-by: Thomas Gleixner &lt;tglx@linuxtronix.de&gt;
Signed-off-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Tested-by: Carsten Emde &lt;cbe@osadl.org&gt;
Cc: Clark Williams &lt;williams@redhat.com&gt;
Cc: John Kacur &lt;jkacur@redhat.com&gt;
Cc: Luis Claudio R. Goncalves &lt;lclaudio@redhat.com&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
qdisc_lock is taken w/o disabling interrupts or bottom halfs. So code
holding a qdisc_lock() can be interrupted and softirqs can run on the
return of interrupt in !RT.

The spin_trylock() in net_tx_action() makes sure, that the softirq
does not deadlock. When the lock can't be acquired q is requeued and
the NET_TX softirq is raised. That causes the softirq to run over and
over.

That works in mainline as do_softirq() has a retry loop limit and
leaves the softirq processing in the interrupt return path and
schedules ksoftirqd. The task which holds qdisc_lock cannot be
preempted, so the lock is released and either ksoftirqd or the next
softirq in the return from interrupt path can proceed. Though it's a
bit strange to actually run MAX_SOFTIRQ_RESTART (10) loops before it
decides to bail out even if it's clear in the first iteration :)

On RT all softirq processing is done in a FIFO thread and we don't
have a loop limit, so ksoftirqd preempts the lock holder forever and
unqueues and requeues until the reset button is hit.

Due to the forced threading of ksoftirqd on RT we actually cannot
deadlock on qdisc_lock because it's a "sleeping lock". So it's safe to
replace the spin_trylock() with a spin_lock(). When contended,
ksoftirqd is scheduled out and the lock holder can proceed.

[ tglx: Massaged changelog and code comments ]

Solved-by: Thomas Gleixner &lt;tglx@linuxtronix.de&gt;
Signed-off-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Tested-by: Carsten Emde &lt;cbe@osadl.org&gt;
Cc: Clark Williams &lt;williams@redhat.com&gt;
Cc: John Kacur &lt;jkacur@redhat.com&gt;
Cc: Luis Claudio R. Goncalves &lt;lclaudio@redhat.com&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>skbufhead-raw-lock.patch</title>
<updated>2012-04-13T16:01:49+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-07-12T13:38:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f4553b96464806d0feedc27de7c375b92dd6c56d'/>
<id>f4553b96464806d0feedc27de7c375b92dd6c56d</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net-netif_rx_ni-migrate-disable.patch</title>
<updated>2012-04-13T16:01:38+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-07-17T14:29:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1a1006e17c2531fa9996571dd51cb6ddf8899779'/>
<id>1a1006e17c2531fa9996571dd51cb6ddf8899779</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>softirq-thread-do-softirq.patch</title>
<updated>2012-04-13T16:01:22+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-28T13:44:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0f2c626602bfd26ba7cdde7b30316ff60900af91'/>
<id>0f2c626602bfd26ba7cdde7b30316ff60900af91</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net-flip-lock-dep-thingy.patch</title>
<updated>2012-04-13T16:01:21+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-28T08:59:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=900cace31f593d170a09cf7be41d8c125702b58b'/>
<id>900cace31f593d170a09cf7be41d8c125702b58b</id>
<content type='text'>
=======================================================
[ INFO: possible circular locking dependency detected ]
3.0.0-rc3+ #26
-------------------------------------------------------
ip/1104 is trying to acquire lock:
 (local_softirq_lock){+.+...}, at: [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68

but task is already holding lock:
 (sk_lock-AF_INET){+.+...}, at: [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-&gt; #1 (sk_lock-AF_INET){+.+...}:
       [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
       [&lt;ffffffff813e2781&gt;] lock_sock_nested+0x82/0x92
       [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12
       [&lt;ffffffff81433afa&gt;] tcp_close+0x1b/0x355
       [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
       [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
       [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
       [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
       [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
       [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
       [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (local_softirq_lock){+.+...}:
       [&lt;ffffffff81082ecc&gt;] __lock_acquire+0xacc/0xdc8
       [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
       [&lt;ffffffff814a7e40&gt;] _raw_spin_lock+0x3b/0x4a
       [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68
       [&lt;ffffffff81056d8b&gt;] local_bh_disable+0x36/0x3b
       [&lt;ffffffff814a7fc4&gt;] _raw_write_lock_bh+0x16/0x4f
       [&lt;ffffffff81433c38&gt;] tcp_close+0x159/0x355
       [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
       [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
       [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
       [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
       [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
       [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
       [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(sk_lock-AF_INET);
                               lock(local_softirq_lock);
                               lock(sk_lock-AF_INET);
  lock(local_softirq_lock);

 *** DEADLOCK ***

1 lock held by ip/1104:
 #0:  (sk_lock-AF_INET){+.+...}, at: [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12

stack backtrace:
Pid: 1104, comm: ip Not tainted 3.0.0-rc3+ #26
Call Trace:
 [&lt;ffffffff81081649&gt;] print_circular_bug+0x1f8/0x209
 [&lt;ffffffff81082ecc&gt;] __lock_acquire+0xacc/0xdc8
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff81046c75&gt;] ? get_parent_ip+0x11/0x41
 [&lt;ffffffff814a7e40&gt;] _raw_spin_lock+0x3b/0x4a
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff81046c8c&gt;] ? get_parent_ip+0x28/0x41
 [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68
 [&lt;ffffffff81056d8b&gt;] local_bh_disable+0x36/0x3b
 [&lt;ffffffff81433308&gt;] ? lock_sock+0x10/0x12
 [&lt;ffffffff814a7fc4&gt;] _raw_write_lock_bh+0x16/0x4f
 [&lt;ffffffff81433c38&gt;] tcp_close+0x159/0x355
 [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
 [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
 [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
 [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
 [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
 [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
 [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b


Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
=======================================================
[ INFO: possible circular locking dependency detected ]
3.0.0-rc3+ #26
-------------------------------------------------------
ip/1104 is trying to acquire lock:
 (local_softirq_lock){+.+...}, at: [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68

but task is already holding lock:
 (sk_lock-AF_INET){+.+...}, at: [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-&gt; #1 (sk_lock-AF_INET){+.+...}:
       [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
       [&lt;ffffffff813e2781&gt;] lock_sock_nested+0x82/0x92
       [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12
       [&lt;ffffffff81433afa&gt;] tcp_close+0x1b/0x355
       [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
       [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
       [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
       [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
       [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
       [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
       [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (local_softirq_lock){+.+...}:
       [&lt;ffffffff81082ecc&gt;] __lock_acquire+0xacc/0xdc8
       [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
       [&lt;ffffffff814a7e40&gt;] _raw_spin_lock+0x3b/0x4a
       [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68
       [&lt;ffffffff81056d8b&gt;] local_bh_disable+0x36/0x3b
       [&lt;ffffffff814a7fc4&gt;] _raw_write_lock_bh+0x16/0x4f
       [&lt;ffffffff81433c38&gt;] tcp_close+0x159/0x355
       [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
       [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
       [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
       [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
       [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
       [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
       [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(sk_lock-AF_INET);
                               lock(local_softirq_lock);
                               lock(sk_lock-AF_INET);
  lock(local_softirq_lock);

 *** DEADLOCK ***

1 lock held by ip/1104:
 #0:  (sk_lock-AF_INET){+.+...}, at: [&lt;ffffffff81433308&gt;] lock_sock+0x10/0x12

stack backtrace:
Pid: 1104, comm: ip Not tainted 3.0.0-rc3+ #26
Call Trace:
 [&lt;ffffffff81081649&gt;] print_circular_bug+0x1f8/0x209
 [&lt;ffffffff81082ecc&gt;] __lock_acquire+0xacc/0xdc8
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff810836e5&gt;] lock_acquire+0x103/0x12e
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff81046c75&gt;] ? get_parent_ip+0x11/0x41
 [&lt;ffffffff814a7e40&gt;] _raw_spin_lock+0x3b/0x4a
 [&lt;ffffffff81056d12&gt;] ? __local_lock+0x25/0x68
 [&lt;ffffffff81046c8c&gt;] ? get_parent_ip+0x28/0x41
 [&lt;ffffffff81056d12&gt;] __local_lock+0x25/0x68
 [&lt;ffffffff81056d8b&gt;] local_bh_disable+0x36/0x3b
 [&lt;ffffffff81433308&gt;] ? lock_sock+0x10/0x12
 [&lt;ffffffff814a7fc4&gt;] _raw_write_lock_bh+0x16/0x4f
 [&lt;ffffffff81433c38&gt;] tcp_close+0x159/0x355
 [&lt;ffffffff81453c99&gt;] inet_release+0xc3/0xcd
 [&lt;ffffffff813dff3f&gt;] sock_release+0x1f/0x74
 [&lt;ffffffff813dffbb&gt;] sock_close+0x27/0x2b
 [&lt;ffffffff81129c63&gt;] fput+0x11d/0x1e3
 [&lt;ffffffff81126577&gt;] filp_close+0x70/0x7b
 [&lt;ffffffff8112667a&gt;] sys_close+0xf8/0x13d
 [&lt;ffffffff814ae882&gt;] system_call_fastpath+0x16/0x1b


Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: fix a race in sock_queue_err_skb()</title>
<updated>2012-04-06T09:07:21+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2012-04-06T08:49:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=110c43304db6f06490961529536c362d9ac5732f'/>
<id>110c43304db6f06490961529536c362d9ac5732f</id>
<content type='text'>
As soon as an skb is queued into socket error queue, another thread
can consume it, so we are not allowed to reference skb anymore, or risk
use after free.

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>
As soon as an skb is queued into socket error queue, another thread
can consume it, so we are not allowed to reference skb anymore, or risk
use after free.

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>bpf jit: Make the filter.c::__load_pointer helper non-static for the jits</title>
<updated>2012-04-03T22:01:03+00:00</updated>
<author>
<name>Jan Seiffert</name>
<email>kaffeemonster@googlemail.com</email>
</author>
<published>2012-03-30T05:08:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f03fb3f455c6c3a3dfcef6c7f2dcab104c813f4b'/>
<id>f03fb3f455c6c3a3dfcef6c7f2dcab104c813f4b</id>
<content type='text'>
The function is renamed to make it a little more clear what it does.
It is not added to any .h because it is not for general consumption, only for
bpf internal use (and so by the jits).

Signed-of-by: Jan Seiffert &lt;kaffeemonster@googlemail.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>
The function is renamed to make it a little more clear what it does.
It is not added to any .h because it is not for general consumption, only for
bpf internal use (and so by the jits).

Signed-of-by: Jan Seiffert &lt;kaffeemonster@googlemail.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: fix /proc/net/dev regression</title>
<updated>2012-04-03T21:23:23+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2012-04-02T22:33:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2def16ae6b0c77571200f18ba4be049b03d75579'/>
<id>2def16ae6b0c77571200f18ba4be049b03d75579</id>
<content type='text'>
Commit f04565ddf52 (dev: use name hash for dev_seq_ops) added a second
regression, as some devices are missing from /proc/net/dev if many
devices are defined.

When seq_file buffer is filled, the last -&gt;next/show() method is
canceled (pos value is reverted to value prior -&gt;next() call)

Problem is after above commit, we dont restart the lookup at right
position in -&gt;start() method.

Fix this by removing the internal 'pos' pointer added in commit, since
we need to use the 'loff_t *pos' provided by seq_file layer.

This also reverts commit 5cac98dd0 (net: Fix corruption
in /proc/*/net/dev_mcast), since its not needed anymore.

Reported-by: Ben Greear &lt;greearb@candelatech.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Mihai Maruseac &lt;mmaruseac@ixiacom.com&gt;
Tested-by:  Ben Greear &lt;greearb@candelatech.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 f04565ddf52 (dev: use name hash for dev_seq_ops) added a second
regression, as some devices are missing from /proc/net/dev if many
devices are defined.

When seq_file buffer is filled, the last -&gt;next/show() method is
canceled (pos value is reverted to value prior -&gt;next() call)

Problem is after above commit, we dont restart the lookup at right
position in -&gt;start() method.

Fix this by removing the internal 'pos' pointer added in commit, since
we need to use the 'loff_t *pos' provided by seq_file layer.

This also reverts commit 5cac98dd0 (net: Fix corruption
in /proc/*/net/dev_mcast), since its not needed anymore.

Reported-by: Ben Greear &lt;greearb@candelatech.com&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Mihai Maruseac &lt;mmaruseac@ixiacom.com&gt;
Tested-by:  Ben Greear &lt;greearb@candelatech.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>2012-04-03T00:53:39+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-04-03T00:53:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ed359a3b7b6ade0071f378c0cf4392d252f7d334'/>
<id>ed359a3b7b6ade0071f378c0cf4392d252f7d334</id>
<content type='text'>
Pull networking fixes from David Miller:

 1) Provide device string properly for USB i2400m wimax devices, also
    don't OOPS when providing firmware string.  From Phil Sutter.

 2) Add support for sh_eth SH7734 chips, from Nobuhiro Iwamatsu.

 3) Add another device ID to USB zaurus driver, from Guan Xin.

 4) Loop index start in pool vector iterator is wrong causing MAC to not
    get configured in bnx2x driver, fix from Dmitry Kravkov.

 5) EQL driver assumes HZ=100, fix from Eric Dumazet.

 6) Now that skb_add_rx_frag() can specify the truesize increment
    separately, do so in f_phonet and cdc_phonet, also from Eric
    Dumazet.

 7) virtio_net accidently uses net_ratelimit() not only on the kernel
    warning but also the statistic bump, fix from Rick Jones.

 8) ip_route_input_mc() uses fixed init_net namespace, oops, use
    dev_net(dev) instead.  Fix from Benjamin LaHaise.

 9) dev_forward_skb() needs to clear the incoming interface index of the
    SKB so that it looks like a new incoming packet, also from Benjamin
    LaHaise.

10) iwlwifi mistakenly initializes a channel entry as 2GHZ instead of
    5GHZ, fix from Stanislav Yakovlev.

11) Missing kmalloc() return value checks in orinoco, from Santosh
    Nayak.

12) ath9k doesn't check for HT capabilities in the right way, it is
    checking ht_supported instead of the ATH9K_HW_CAP_HT flag.  Fix from
    Sujith Manoharan.

13) Fix x86 BPF JIT emission of 16-bit immediate field of AND
    instructions, from Feiran Zhuang.

14) Avoid infinite loop in GARP code when registering sysfs entries.
    From David Ward.

15) rose protocol uses memcpy instead of memcmp in a device address
    comparison, oops.  Fix from Daniel Borkmann.

16) Fix build of lpc_eth due to dev_hw_addr_rancom() interface being
    renamed to eth_hw_addr_random().  From Roland Stigge.

17) Make ipv6 RTM_GETROUTE interpret RTA_IIF attribute the same way
    that ipv4 does.  Fix from Shmulik Ladkani.

18) via-rhine has an inverted bit test, causing suspend/resume
    regressions.  Fix from Andreas Mohr.

19) RIONET assumes 4K page size, fix from Akinobu Mita.

20) Initialization of imask register in sky2 is buggy, because bits are
    "or'd" into an uninitialized local variable.  Fix from Lino
    Sanfilippo.

21) Fix FCOE checksum offload handling, from Yi Zou.

22) Fix VLAN processing regression in e1000, from Jiri Pirko.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (52 commits)
  sky2: dont overwrite settings for PHY Quick link
  tg3: Fix 5717 serdes powerdown problem
  net: usb: cdc_eem: fix mtu
  net: sh_eth: fix endian check for architecture independent
  usb/rtl8150 : Remove duplicated definitions
  rionet: fix page allocation order of rionet_active
  via-rhine: fix wait-bit inversion.
  ipv6: Fix RTM_GETROUTE's interpretation of RTA_IIF to be consistent with ipv4
  net: lpc_eth: Fix rename of dev_hw_addr_random
  net/netfilter/nfnetlink_acct.c: use linux/atomic.h
  rose_dev: fix memcpy-bug in rose_set_mac_address
  Fix non TBI PHY access; a bad merge undid bug fix in a previous commit.
  net/garp: avoid infinite loop if attribute already exists
  x86 bpf_jit: fix a bug in emitting the 16-bit immediate operand of AND
  bonding: emit event when bonding changes MAC
  mac80211: fix oper channel timestamp updation
  ath9k: Use HW HT capabilites properly
  MAINTAINERS: adding maintainer for ipw2x00
  net: orinoco: add error handling for failed kmalloc().
  net/wireless: ipw2x00: fix a typo in wiphy struct initilization
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull networking fixes from David Miller:

 1) Provide device string properly for USB i2400m wimax devices, also
    don't OOPS when providing firmware string.  From Phil Sutter.

 2) Add support for sh_eth SH7734 chips, from Nobuhiro Iwamatsu.

 3) Add another device ID to USB zaurus driver, from Guan Xin.

 4) Loop index start in pool vector iterator is wrong causing MAC to not
    get configured in bnx2x driver, fix from Dmitry Kravkov.

 5) EQL driver assumes HZ=100, fix from Eric Dumazet.

 6) Now that skb_add_rx_frag() can specify the truesize increment
    separately, do so in f_phonet and cdc_phonet, also from Eric
    Dumazet.

 7) virtio_net accidently uses net_ratelimit() not only on the kernel
    warning but also the statistic bump, fix from Rick Jones.

 8) ip_route_input_mc() uses fixed init_net namespace, oops, use
    dev_net(dev) instead.  Fix from Benjamin LaHaise.

 9) dev_forward_skb() needs to clear the incoming interface index of the
    SKB so that it looks like a new incoming packet, also from Benjamin
    LaHaise.

10) iwlwifi mistakenly initializes a channel entry as 2GHZ instead of
    5GHZ, fix from Stanislav Yakovlev.

11) Missing kmalloc() return value checks in orinoco, from Santosh
    Nayak.

12) ath9k doesn't check for HT capabilities in the right way, it is
    checking ht_supported instead of the ATH9K_HW_CAP_HT flag.  Fix from
    Sujith Manoharan.

13) Fix x86 BPF JIT emission of 16-bit immediate field of AND
    instructions, from Feiran Zhuang.

14) Avoid infinite loop in GARP code when registering sysfs entries.
    From David Ward.

15) rose protocol uses memcpy instead of memcmp in a device address
    comparison, oops.  Fix from Daniel Borkmann.

16) Fix build of lpc_eth due to dev_hw_addr_rancom() interface being
    renamed to eth_hw_addr_random().  From Roland Stigge.

17) Make ipv6 RTM_GETROUTE interpret RTA_IIF attribute the same way
    that ipv4 does.  Fix from Shmulik Ladkani.

18) via-rhine has an inverted bit test, causing suspend/resume
    regressions.  Fix from Andreas Mohr.

19) RIONET assumes 4K page size, fix from Akinobu Mita.

20) Initialization of imask register in sky2 is buggy, because bits are
    "or'd" into an uninitialized local variable.  Fix from Lino
    Sanfilippo.

21) Fix FCOE checksum offload handling, from Yi Zou.

22) Fix VLAN processing regression in e1000, from Jiri Pirko.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (52 commits)
  sky2: dont overwrite settings for PHY Quick link
  tg3: Fix 5717 serdes powerdown problem
  net: usb: cdc_eem: fix mtu
  net: sh_eth: fix endian check for architecture independent
  usb/rtl8150 : Remove duplicated definitions
  rionet: fix page allocation order of rionet_active
  via-rhine: fix wait-bit inversion.
  ipv6: Fix RTM_GETROUTE's interpretation of RTA_IIF to be consistent with ipv4
  net: lpc_eth: Fix rename of dev_hw_addr_random
  net/netfilter/nfnetlink_acct.c: use linux/atomic.h
  rose_dev: fix memcpy-bug in rose_set_mac_address
  Fix non TBI PHY access; a bad merge undid bug fix in a previous commit.
  net/garp: avoid infinite loop if attribute already exists
  x86 bpf_jit: fix a bug in emitting the 16-bit immediate operand of AND
  bonding: emit event when bonding changes MAC
  mac80211: fix oper channel timestamp updation
  ath9k: Use HW HT capabilites properly
  MAINTAINERS: adding maintainer for ipw2x00
  net: orinoco: add error handling for failed kmalloc().
  net/wireless: ipw2x00: fix a typo in wiphy struct initilization
  ...
</pre>
</div>
</content>
</entry>
</feed>
