<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/core, branch v3.1.3</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>net: Unlock sock before calling sk_free()</title>
<updated>2011-11-11T17:44:01+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-10-25T02:30:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e2e70d61f72a03751e0b44e4d2630ce5fdf158c4'/>
<id>e2e70d61f72a03751e0b44e4d2630ce5fdf158c4</id>
<content type='text'>
[ Upstream commit b0691c8ee7c28a72748ff32e91b165ec12ae4de6 ]

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit b0691c8ee7c28a72748ff32e91b165ec12ae4de6 ]

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: hold sock reference while processing tx timestamps</title>
<updated>2011-11-11T17:43:08+00:00</updated>
<author>
<name>Richard Cochran</name>
<email>richardcochran@gmail.com</email>
</author>
<published>2011-10-21T00:49:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6d06e8d0a5bcc13717291fe46303bfd32cfb9d7a'/>
<id>6d06e8d0a5bcc13717291fe46303bfd32cfb9d7a</id>
<content type='text'>
commit da92b194cc36b5dc1fbd85206aeeffd80bee0c39 upstream.

The pair of functions,

 * skb_clone_tx_timestamp()
 * skb_complete_tx_timestamp()

were designed to allow timestamping in PHY devices. The first
function, called during the MAC driver's hard_xmit method, identifies
PTP protocol packets, clones them, and gives them to the PHY device
driver. The PHY driver may hold onto the packet and deliver it at a
later time using the second function, which adds the packet to the
socket's error queue.

As pointed out by Johannes, nothing prevents the socket from
disappearing while the cloned packet is sitting in the PHY driver
awaiting a timestamp. This patch fixes the issue by taking a reference
on the socket for each such packet. In addition, the comments
regarding the usage of these function are expanded to highlight the
rule that PHY drivers must use skb_complete_tx_timestamp() to release
the packet, in order to release the socket reference, too.

These functions first appeared in v2.6.36.

Reported-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: Richard Cochran &lt;richard.cochran@omicron.at&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit da92b194cc36b5dc1fbd85206aeeffd80bee0c39 upstream.

The pair of functions,

 * skb_clone_tx_timestamp()
 * skb_complete_tx_timestamp()

were designed to allow timestamping in PHY devices. The first
function, called during the MAC driver's hard_xmit method, identifies
PTP protocol packets, clones them, and gives them to the PHY device
driver. The PHY driver may hold onto the packet and deliver it at a
later time using the second function, which adds the packet to the
socket's error queue.

As pointed out by Johannes, nothing prevents the socket from
disappearing while the cloned packet is sitting in the PHY driver
awaiting a timestamp. This patch fixes the issue by taking a reference
on the socket for each such packet. In addition, the comments
regarding the usage of these function are expanded to highlight the
rule that PHY drivers must use skb_complete_tx_timestamp() to release
the packet, in order to release the socket reference, too.

These functions first appeared in v2.6.36.

Reported-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: Richard Cochran &lt;richard.cochran@omicron.at&gt;
Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces</title>
<updated>2011-11-11T17:43:05+00:00</updated>
<author>
<name>Eric W. Biederman</name>
<email>ebiederm@xmission.com</email>
</author>
<published>2011-10-21T06:24:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=75938a8059eade538a6616f52a5af2c138301d48'/>
<id>75938a8059eade538a6616f52a5af2c138301d48</id>
<content type='text'>
commit d2237d35748e7f448a9c2d9dc6a85ef637466e24 upstream.

Renato Westphal noticed that since commit a2835763e130c343ace5320c20d33c281e7097b7
"rtnetlink: handle rtnl_link netlink notifications manually" was merged
we no longer send a netlink message when a networking device is moved
from one network namespace to another.

Fix this by adding the missing manual notification in dev_change_net_namespaces.

Since all network devices that are processed by dev_change_net_namspaces are
in the initialized state the complicated tests that guard the manual
rtmsg_ifinfo calls in rollback_registered and register_netdevice are
unnecessary and we can just perform a plain notification.

Tested-by: Renato Westphal &lt;renatowestphal@gmail.com&gt;
Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit d2237d35748e7f448a9c2d9dc6a85ef637466e24 upstream.

Renato Westphal noticed that since commit a2835763e130c343ace5320c20d33c281e7097b7
"rtnetlink: handle rtnl_link netlink notifications manually" was merged
we no longer send a netlink message when a networking device is moved
from one network namespace to another.

Fix this by adding the missing manual notification in dev_change_net_namespaces.

Since all network devices that are processed by dev_change_net_namspaces are
in the initialized state the complicated tests that guard the manual
rtmsg_ifinfo calls in rollback_registered and register_netdevice are
unnecessary and we can just perform a plain notification.

Tested-by: Renato Westphal &lt;renatowestphal@gmail.com&gt;
Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>fib_rules: fix unresolved_rules counting</title>
<updated>2011-10-19T23:17:41+00:00</updated>
<author>
<name>Yan, Zheng</name>
<email>zheng.z.yan@intel.com</email>
</author>
<published>2011-10-17T15:20:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=afaef734e5f0004916d07ecf7d86292cdd00d59b'/>
<id>afaef734e5f0004916d07ecf7d86292cdd00d59b</id>
<content type='text'>
we should decrease ops-&gt;unresolved_rules when deleting a unresolved rule.

Signed-off-by: Zheng Yan &lt;zheng.z.yan@intel.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>
we should decrease ops-&gt;unresolved_rules when deleting a unresolved rule.

Signed-off-by: Zheng Yan &lt;zheng.z.yan@intel.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>fib:fix BUG_ON in fib_nl_newrule when add new fib rule</title>
<updated>2011-09-21T19:16:40+00:00</updated>
<author>
<name>Gao feng</name>
<email>gaofeng@cn.fujitsu.com</email>
</author>
<published>2011-09-11T15:36:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=561dac2d410ffac0b57a23b85ae0a623c1a076ca'/>
<id>561dac2d410ffac0b57a23b85ae0a623c1a076ca</id>
<content type='text'>
add new fib rule can cause BUG_ON happen
the reproduce shell is
ip rule add pref 38
ip rule add pref 38
ip rule add to 192.168.3.0/24 goto 38
ip rule del pref 38
ip rule add to 192.168.3.0/24 goto 38
ip rule add pref 38

then the BUG_ON will happen
del BUG_ON and use (ctarget == NULL) identify whether this rule is unresolved

Signed-off-by: Gao feng &lt;gaofeng@cn.fujitsu.com&gt;
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>
add new fib rule can cause BUG_ON happen
the reproduce shell is
ip rule add pref 38
ip rule add pref 38
ip rule add to 192.168.3.0/24 goto 38
ip rule del pref 38
ip rule add to 192.168.3.0/24 goto 38
ip rule add pref 38

then the BUG_ON will happen
del BUG_ON and use (ctarget == NULL) identify whether this rule is unresolved

Signed-off-by: Gao feng &lt;gaofeng@cn.fujitsu.com&gt;
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>net: Handle different key sizes between address families in flow cache</title>
<updated>2011-09-16T21:47:28+00:00</updated>
<author>
<name>dpward</name>
<email>david.ward@ll.mit.edu</email>
</author>
<published>2011-09-05T16:47:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=aa1c366e4febc7f5c2b84958a2dd7cd70e28f9d0'/>
<id>aa1c366e4febc7f5c2b84958a2dd7cd70e28f9d0</id>
<content type='text'>
With the conversion of struct flowi to a union of AF-specific structs, some
operations on the flow cache need to account for the exact size of the key.

Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&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>
With the conversion of struct flowi to a union of AF-specific structs, some
operations on the flow cache need to account for the exact size of the key.

Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: copy userspace buffers on device forwarding</title>
<updated>2011-09-15T18:49:44+00:00</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2011-08-31T08:03:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=48c830120f2a20b44220aa26feda9ed15f49eaab'/>
<id>48c830120f2a20b44220aa26feda9ed15f49eaab</id>
<content type='text'>
dev_forward_skb loops an skb back into host networking
stack which might hang on the memory indefinitely.
In particular, this can happen in macvtap in bridged mode.
Copy the userspace fragments to avoid blocking the
sender in that case.

As this patch makes skb_copy_ubufs extern now,
I also added some documentation and made it clear
the SKBTX_DEV_ZEROCOPY flag automatically instead
of doing it in all callers. This can be made into a separate
patch if people feel it's worth it.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.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>
dev_forward_skb loops an skb back into host networking
stack which might hang on the memory indefinitely.
In particular, this can happen in macvtap in bridged mode.
Copy the userspace fragments to avoid blocking the
sender in that case.

As this patch makes skb_copy_ubufs extern now,
I also added some documentation and made it clear
the SKBTX_DEV_ZEROCOPY flag automatically instead
of doing it in all callers. This can be made into a separate
patch if people feel it's worth it.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: Make flow cache namespace-aware</title>
<updated>2011-09-15T18:49:44+00:00</updated>
<author>
<name>dpward</name>
<email>david.ward@ll.mit.edu</email>
</author>
<published>2011-08-31T06:05:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0542b69e2c57fc9668ce6a03155bea6e1f557901'/>
<id>0542b69e2c57fc9668ce6a03155bea6e1f557901</id>
<content type='text'>
flow_cache_lookup will return a cached object (or null pointer) that the
resolver (i.e. xfrm_policy_lookup) previously found for another namespace
using the same key/family/dir.  Instead, make the namespace part of what
identifies entries in the cache.

As before, flow_entry_valid will return 0 for entries where the namespace
has been deleted, and they will be removed from the cache the next time
flow_cache_gc_task is run.

Reported-by: Andrew Dickinson &lt;whydna@whydna.net&gt;
Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&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>
flow_cache_lookup will return a cached object (or null pointer) that the
resolver (i.e. xfrm_policy_lookup) previously found for another namespace
using the same key/family/dir.  Instead, make the namespace part of what
identifies entries in the cache.

As before, flow_entry_valid will return 0 for entries where the namespace
has been deleted, and they will be removed from the cache the next time
flow_cache_gc_task is run.

Reported-by: Andrew Dickinson &lt;whydna@whydna.net&gt;
Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netpoll: fix incorrect access to skb data in __netpoll_rx</title>
<updated>2011-08-26T16:49:04+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2011-08-26T06:26:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e9278a475f845833b569ca47171e64fe48c616e0'/>
<id>e9278a475f845833b569ca47171e64fe48c616e0</id>
<content type='text'>
__netpoll_rx() doesnt properly handle skbs with small header

pskb_may_pull() or pskb_trim_rcsum() can change skb-&gt;data, we must
reload it.

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>
__netpoll_rx() doesnt properly handle skbs with small header

pskb_may_pull() or pskb_trim_rcsum() can change skb-&gt;data, we must
reload it.

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>arp: fix rcu lockdep splat in arp_process()</title>
<updated>2011-08-25T00:55:00+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2011-08-22T19:32:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=20e6074eb8e096b3a595c093d1cb222f378cd671'/>
<id>20e6074eb8e096b3a595c093d1cb222f378cd671</id>
<content type='text'>
Dave Jones reported a lockdep splat triggered by an arp_process() call
from parp_redo().

Commit faa9dcf793be (arp: RCU changes) is the origin of the bug, since
it assumed arp_process() was called under rcu_read_lock(), which is not
true in this particular path.

Instead of adding rcu_read_lock() in parp_redo(), I chose to add it in
neigh_proxy_process() to take care of IPv6 side too.

 ===================================================
 [ INFO: suspicious rcu_dereference_check() usage. ]
 ---------------------------------------------------
 include/linux/inetdevice.h:209 invoked rcu_dereference_check() without
protection!

 other info that might help us debug this:

 rcu_scheduler_active = 1, debug_locks = 0
 4 locks held by setfiles/2123:
  #0:  (&amp;sb-&gt;s_type-&gt;i_mutex_key#13){+.+.+.}, at: [&lt;ffffffff8114cbc4&gt;]
walk_component+0x1ef/0x3e8
  #1:  (&amp;isec-&gt;lock){+.+.+.}, at: [&lt;ffffffff81204bca&gt;]
inode_doinit_with_dentry+0x3f/0x41f
  #2:  (&amp;tbl-&gt;proxy_timer){+.-...}, at: [&lt;ffffffff8106a803&gt;]
run_timer_softirq+0x157/0x372
  #3:  (class){+.-...}, at: [&lt;ffffffff8141f256&gt;] neigh_proxy_process
+0x36/0x103

 stack backtrace:
 Pid: 2123, comm: setfiles Tainted: G        W
3.1.0-0.rc2.git7.2.fc16.x86_64 #1
 Call Trace:
  &lt;IRQ&gt;  [&lt;ffffffff8108ca23&gt;] lockdep_rcu_dereference+0xa7/0xaf
  [&lt;ffffffff8146a0b7&gt;] __in_dev_get_rcu+0x55/0x5d
  [&lt;ffffffff8146a751&gt;] arp_process+0x25/0x4d7
  [&lt;ffffffff8146ac11&gt;] parp_redo+0xe/0x10
  [&lt;ffffffff8141f2ba&gt;] neigh_proxy_process+0x9a/0x103
  [&lt;ffffffff8106a8c4&gt;] run_timer_softirq+0x218/0x372
  [&lt;ffffffff8106a803&gt;] ? run_timer_softirq+0x157/0x372
  [&lt;ffffffff8141f220&gt;] ? neigh_stat_seq_open+0x41/0x41
  [&lt;ffffffff8108f2f0&gt;] ? mark_held_locks+0x6d/0x95
  [&lt;ffffffff81062bb6&gt;] __do_softirq+0x112/0x25a
  [&lt;ffffffff8150d27c&gt;] call_softirq+0x1c/0x30
  [&lt;ffffffff81010bf5&gt;] do_softirq+0x4b/0xa2
  [&lt;ffffffff81062f65&gt;] irq_exit+0x5d/0xcf
  [&lt;ffffffff8150dc11&gt;] smp_apic_timer_interrupt+0x7c/0x8a
  [&lt;ffffffff8150baf3&gt;] apic_timer_interrupt+0x73/0x80
  &lt;EOI&gt;  [&lt;ffffffff8108f439&gt;] ? trace_hardirqs_on_caller+0x121/0x158
  [&lt;ffffffff814fc285&gt;] ? __slab_free+0x30/0x24c
  [&lt;ffffffff814fc283&gt;] ? __slab_free+0x2e/0x24c
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81130cb0&gt;] kfree+0x108/0x131
  [&lt;ffffffff81204e74&gt;] inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204fc6&gt;] selinux_d_instantiate+0x1c/0x1e
  [&lt;ffffffff81200f4f&gt;] security_d_instantiate+0x21/0x23
  [&lt;ffffffff81154625&gt;] d_instantiate+0x5c/0x61
  [&lt;ffffffff811563ca&gt;] d_splice_alias+0xbc/0xd2
  [&lt;ffffffff811b17ff&gt;] ext4_lookup+0xba/0xeb
  [&lt;ffffffff8114bf1e&gt;] d_alloc_and_lookup+0x45/0x6b
  [&lt;ffffffff8114cbea&gt;] walk_component+0x215/0x3e8
  [&lt;ffffffff8114cdf8&gt;] lookup_last+0x3b/0x3d
  [&lt;ffffffff8114daf3&gt;] path_lookupat+0x82/0x2af
  [&lt;ffffffff8110fc53&gt;] ? might_fault+0xa5/0xac
  [&lt;ffffffff8110fc0a&gt;] ? might_fault+0x5c/0xac
  [&lt;ffffffff8114c564&gt;] ? getname_flags+0x31/0x1ca
  [&lt;ffffffff8114dd48&gt;] do_path_lookup+0x28/0x97
  [&lt;ffffffff8114df2c&gt;] user_path_at+0x59/0x96
  [&lt;ffffffff811467ad&gt;] ? cp_new_stat+0xf7/0x10d
  [&lt;ffffffff811469a6&gt;] vfs_fstatat+0x44/0x6e
  [&lt;ffffffff811469ee&gt;] vfs_lstat+0x1e/0x20
  [&lt;ffffffff81146b3d&gt;] sys_newlstat+0x1a/0x33
  [&lt;ffffffff8108f439&gt;] ? trace_hardirqs_on_caller+0x121/0x158
  [&lt;ffffffff812535fe&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
  [&lt;ffffffff8150af82&gt;] system_call_fastpath+0x16/0x1b

Reported-by: Dave Jones &lt;davej@redhat.com&gt;
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>
Dave Jones reported a lockdep splat triggered by an arp_process() call
from parp_redo().

Commit faa9dcf793be (arp: RCU changes) is the origin of the bug, since
it assumed arp_process() was called under rcu_read_lock(), which is not
true in this particular path.

Instead of adding rcu_read_lock() in parp_redo(), I chose to add it in
neigh_proxy_process() to take care of IPv6 side too.

 ===================================================
 [ INFO: suspicious rcu_dereference_check() usage. ]
 ---------------------------------------------------
 include/linux/inetdevice.h:209 invoked rcu_dereference_check() without
protection!

 other info that might help us debug this:

 rcu_scheduler_active = 1, debug_locks = 0
 4 locks held by setfiles/2123:
  #0:  (&amp;sb-&gt;s_type-&gt;i_mutex_key#13){+.+.+.}, at: [&lt;ffffffff8114cbc4&gt;]
walk_component+0x1ef/0x3e8
  #1:  (&amp;isec-&gt;lock){+.+.+.}, at: [&lt;ffffffff81204bca&gt;]
inode_doinit_with_dentry+0x3f/0x41f
  #2:  (&amp;tbl-&gt;proxy_timer){+.-...}, at: [&lt;ffffffff8106a803&gt;]
run_timer_softirq+0x157/0x372
  #3:  (class){+.-...}, at: [&lt;ffffffff8141f256&gt;] neigh_proxy_process
+0x36/0x103

 stack backtrace:
 Pid: 2123, comm: setfiles Tainted: G        W
3.1.0-0.rc2.git7.2.fc16.x86_64 #1
 Call Trace:
  &lt;IRQ&gt;  [&lt;ffffffff8108ca23&gt;] lockdep_rcu_dereference+0xa7/0xaf
  [&lt;ffffffff8146a0b7&gt;] __in_dev_get_rcu+0x55/0x5d
  [&lt;ffffffff8146a751&gt;] arp_process+0x25/0x4d7
  [&lt;ffffffff8146ac11&gt;] parp_redo+0xe/0x10
  [&lt;ffffffff8141f2ba&gt;] neigh_proxy_process+0x9a/0x103
  [&lt;ffffffff8106a8c4&gt;] run_timer_softirq+0x218/0x372
  [&lt;ffffffff8106a803&gt;] ? run_timer_softirq+0x157/0x372
  [&lt;ffffffff8141f220&gt;] ? neigh_stat_seq_open+0x41/0x41
  [&lt;ffffffff8108f2f0&gt;] ? mark_held_locks+0x6d/0x95
  [&lt;ffffffff81062bb6&gt;] __do_softirq+0x112/0x25a
  [&lt;ffffffff8150d27c&gt;] call_softirq+0x1c/0x30
  [&lt;ffffffff81010bf5&gt;] do_softirq+0x4b/0xa2
  [&lt;ffffffff81062f65&gt;] irq_exit+0x5d/0xcf
  [&lt;ffffffff8150dc11&gt;] smp_apic_timer_interrupt+0x7c/0x8a
  [&lt;ffffffff8150baf3&gt;] apic_timer_interrupt+0x73/0x80
  &lt;EOI&gt;  [&lt;ffffffff8108f439&gt;] ? trace_hardirqs_on_caller+0x121/0x158
  [&lt;ffffffff814fc285&gt;] ? __slab_free+0x30/0x24c
  [&lt;ffffffff814fc283&gt;] ? __slab_free+0x2e/0x24c
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204e74&gt;] ? inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81130cb0&gt;] kfree+0x108/0x131
  [&lt;ffffffff81204e74&gt;] inode_doinit_with_dentry+0x2e9/0x41f
  [&lt;ffffffff81204fc6&gt;] selinux_d_instantiate+0x1c/0x1e
  [&lt;ffffffff81200f4f&gt;] security_d_instantiate+0x21/0x23
  [&lt;ffffffff81154625&gt;] d_instantiate+0x5c/0x61
  [&lt;ffffffff811563ca&gt;] d_splice_alias+0xbc/0xd2
  [&lt;ffffffff811b17ff&gt;] ext4_lookup+0xba/0xeb
  [&lt;ffffffff8114bf1e&gt;] d_alloc_and_lookup+0x45/0x6b
  [&lt;ffffffff8114cbea&gt;] walk_component+0x215/0x3e8
  [&lt;ffffffff8114cdf8&gt;] lookup_last+0x3b/0x3d
  [&lt;ffffffff8114daf3&gt;] path_lookupat+0x82/0x2af
  [&lt;ffffffff8110fc53&gt;] ? might_fault+0xa5/0xac
  [&lt;ffffffff8110fc0a&gt;] ? might_fault+0x5c/0xac
  [&lt;ffffffff8114c564&gt;] ? getname_flags+0x31/0x1ca
  [&lt;ffffffff8114dd48&gt;] do_path_lookup+0x28/0x97
  [&lt;ffffffff8114df2c&gt;] user_path_at+0x59/0x96
  [&lt;ffffffff811467ad&gt;] ? cp_new_stat+0xf7/0x10d
  [&lt;ffffffff811469a6&gt;] vfs_fstatat+0x44/0x6e
  [&lt;ffffffff811469ee&gt;] vfs_lstat+0x1e/0x20
  [&lt;ffffffff81146b3d&gt;] sys_newlstat+0x1a/0x33
  [&lt;ffffffff8108f439&gt;] ? trace_hardirqs_on_caller+0x121/0x158
  [&lt;ffffffff812535fe&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
  [&lt;ffffffff8150af82&gt;] system_call_fastpath+0x16/0x1b

Reported-by: Dave Jones &lt;davej@redhat.com&gt;
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>
</feed>
