<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/net/802/mrp.c, branch v4.9.331</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2021-08-04T09:58:02+00:00</updated>
<entry>
<title>net/802/mrp: fix memleak in mrp_request_join()</title>
<updated>2021-08-04T09:58:02+00:00</updated>
<author>
<name>Yang Yingliang</name>
<email>yangyingliang@huawei.com</email>
</author>
<published>2021-06-29T07:22:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5a08a0cd97f90cca1fbd9d0d2c9d55a8f4f6860c'/>
<id>urn:sha1:5a08a0cd97f90cca1fbd9d0d2c9d55a8f4f6860c</id>
<content type='text'>
[ Upstream commit 996af62167d0e0ec69b938a3561e96f84ffff1aa ]

I got kmemleak report when doing fuzz test:

BUG: memory leak
unreferenced object 0xffff88810c239500 (size 64):
comm "syz-executor940", pid 882, jiffies 4294712870 (age 14.631s)
hex dump (first 32 bytes):
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 01 00 00 00 01 02 00 04 ................
backtrace:
[&lt;00000000a323afa4&gt;] slab_alloc_node mm/slub.c:2972 [inline]
[&lt;00000000a323afa4&gt;] slab_alloc mm/slub.c:2980 [inline]
[&lt;00000000a323afa4&gt;] __kmalloc+0x167/0x340 mm/slub.c:4130
[&lt;000000005034ca11&gt;] kmalloc include/linux/slab.h:595 [inline]
[&lt;000000005034ca11&gt;] mrp_attr_create net/802/mrp.c:276 [inline]
[&lt;000000005034ca11&gt;] mrp_request_join+0x265/0x550 net/802/mrp.c:530
[&lt;00000000fcfd81f3&gt;] vlan_mvrp_request_join+0x145/0x170 net/8021q/vlan_mvrp.c:40
[&lt;000000009258546e&gt;] vlan_dev_open+0x477/0x890 net/8021q/vlan_dev.c:292
[&lt;0000000059acd82b&gt;] __dev_open+0x281/0x410 net/core/dev.c:1609
[&lt;000000004e6dc695&gt;] __dev_change_flags+0x424/0x560 net/core/dev.c:8767
[&lt;00000000471a09af&gt;] rtnl_configure_link+0xd9/0x210 net/core/rtnetlink.c:3122
[&lt;0000000037a4672b&gt;] __rtnl_newlink+0xe08/0x13e0 net/core/rtnetlink.c:3448
[&lt;000000008d5d0fda&gt;] rtnl_newlink+0x64/0xa0 net/core/rtnetlink.c:3488
[&lt;000000004882fe39&gt;] rtnetlink_rcv_msg+0x369/0xa10 net/core/rtnetlink.c:5552
[&lt;00000000907e6c54&gt;] netlink_rcv_skb+0x134/0x3d0 net/netlink/af_netlink.c:2504
[&lt;00000000e7d7a8c4&gt;] netlink_unicast_kernel net/netlink/af_netlink.c:1314 [inline]
[&lt;00000000e7d7a8c4&gt;] netlink_unicast+0x4a0/0x6a0 net/netlink/af_netlink.c:1340
[&lt;00000000e0645d50&gt;] netlink_sendmsg+0x78e/0xc90 net/netlink/af_netlink.c:1929
[&lt;00000000c24559b7&gt;] sock_sendmsg_nosec net/socket.c:654 [inline]
[&lt;00000000c24559b7&gt;] sock_sendmsg+0x139/0x170 net/socket.c:674
[&lt;00000000fc210bc2&gt;] ____sys_sendmsg+0x658/0x7d0 net/socket.c:2350
[&lt;00000000be4577b5&gt;] ___sys_sendmsg+0xf8/0x170 net/socket.c:2404

Calling mrp_request_leave() after mrp_request_join(), the attr-&gt;state
is set to MRP_APPLICANT_VO, mrp_attr_destroy() won't be called in last
TX event in mrp_uninit_applicant(), the attr of applicant will be leaked.
To fix this leak, iterate and free each attr of applicant before rerturning
from mrp_uninit_applicant().

Reported-by: Hulk Robot &lt;hulkci@huawei.com&gt;
Signed-off-by: Yang Yingliang &lt;yangyingliang@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: replace macros net_random and net_srandom with direct calls to prandom</title>
<updated>2014-01-14T23:15:25+00:00</updated>
<author>
<name>Aruna-Hewapathirane</name>
<email>aruna.hewapathirane@gmail.com</email>
</author>
<published>2014-01-11T12:15:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=63862b5bef7349dd1137e4c70702c67d77565785'/>
<id>urn:sha1:63862b5bef7349dd1137e4c70702c67d77565785</id>
<content type='text'>
This patch removes the net_random and net_srandom macros and replaces
them with direct calls to the prandom ones. As new commits only seem to
use prandom_u32 there is no use to keep them around.
This change makes it easier to grep for users of prandom_u32.

Signed-off-by: Aruna-Hewapathirane &lt;aruna.hewapathirane@gmail.com&gt;
Suggested-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Acked-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>mrp: add periodictimer to allow retries when packets get lost</title>
<updated>2013-09-23T20:53:52+00:00</updated>
<author>
<name>Noel Burton-Krahn</name>
<email>noel@burton-krahn.com</email>
</author>
<published>2013-09-18T19:24:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=9fe34f5d920b183ec063550e0f4ec854aa373316'/>
<id>urn:sha1:9fe34f5d920b183ec063550e0f4ec854aa373316</id>
<content type='text'>
MRP doesn't implement the periodictimer in 802.1Q, so it never retries
if packets get lost.  I ran into this problem when MRP sent a MVRP
JoinIn before the interface was fully up.  The JoinIn was lost, MRP
didn't retry, and MVRP registration failed.

Tested against Juniper QFabric switches

Signed-off-by: Noel Burton-Krahn &lt;noel@burton-krahn.com&gt;
Acked-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/802/mrp: fix lockdep splat</title>
<updated>2013-05-14T20:02:30+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-05-13T02:24:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=faff57a92ba1d7247c5e86ecea2886d2c9d54507'/>
<id>urn:sha1:faff57a92ba1d7247c5e86ecea2886d2c9d54507</id>
<content type='text'>
commit fb745e9a037895 ("net/802/mrp: fix possible race condition when
calling mrp_pdu_queue()") introduced a lockdep splat.

[   19.735147] =================================
[   19.735235] [ INFO: inconsistent lock state ]
[   19.735324] 3.9.2-build-0063 #4 Not tainted
[   19.735412] ---------------------------------
[   19.735500] inconsistent {IN-SOFTIRQ-W} -&gt; {SOFTIRQ-ON-W} usage.
[   19.735592] rmmod/1840 [HC0[0]:SC0[0]:HE1:SE1] takes:
[   19.735682]  (&amp;(&amp;app-&gt;lock)-&gt;rlock#2){+.?...}, at: [&lt;f862bb5b&gt;]
mrp_uninit_applicant+0x69/0xba [mrp]

app-&gt;lock is normally taken under softirq context, so disable BH to
avoid the splat.

Reported-by: Denys Fedoryshchenko &lt;denys@visp.net.lb&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: David Ward &lt;david.ward@ll.mit.edu&gt;
Cc: Cong Wang &lt;amwang@redhat.com&gt;
Tested-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/802/mrp: fix possible race condition when calling mrp_pdu_queue()</title>
<updated>2013-04-12T19:10:48+00:00</updated>
<author>
<name>David Ward</name>
<email>david.ward@ll.mit.edu</email>
</author>
<published>2013-04-11T13:47:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=fb745e9a037895321781d066aa24757ceabf9df9'/>
<id>urn:sha1:fb745e9a037895321781d066aa24757ceabf9df9</id>
<content type='text'>
(Adapted from a very similar change to net/802/garp.c by Cong Wang.)

mrp_pdu_queue() should ways be called with the applicant spin lock.
mrp_uninit_applicant() only holds the rtnl lock which is not enough;
a race is possible because mrp_rcv() is called in BH context:

	mrp_rcv()
	  |-&gt;mrp_pdu_parse_msg()
	    |-&gt;mrp_pdu_parse_vecattr()
	      |-&gt;mrp_pdu_parse_vecattr_event()
	        |-&gt; mrp_attr_event()
	          |-&gt; mrp_pdu_append_vecattr_event()
	            |-&gt; mrp_pdu_queue()

Cc: Cong Wang &lt;amwang@redhat.com&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Acked-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>mrp: make mrp_rcv static</title>
<updated>2013-02-11T19:16:26+00:00</updated>
<author>
<name>Stephen Hemminger</name>
<email>stephen@networkplumber.org</email>
</author>
<published>2013-02-11T06:25:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7e307c67c94619fa53b22735673fbf99b427e760'/>
<id>urn:sha1:7e307c67c94619fa53b22735673fbf99b427e760</id>
<content type='text'>
Sparse spotted local function that could be static.

Signed-off-by: Stephen Hemminger &lt;stephen@networkplumber.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/802: Implement Multiple Registration Protocol (MRP)</title>
<updated>2013-02-11T01:37:22+00:00</updated>
<author>
<name>David Ward</name>
<email>david.ward@ll.mit.edu</email>
</author>
<published>2013-02-08T17:17:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=febf018d22347b5df94066bca05d0c11a84e839d'/>
<id>urn:sha1:febf018d22347b5df94066bca05d0c11a84e839d</id>
<content type='text'>
Initial implementation of the Multiple Registration Protocol (MRP)
from IEEE 802.1Q-2011, based on the existing implementation of the
Generic Attribute Registration Protocol (GARP).

Signed-off-by: David Ward &lt;david.ward@ll.mit.edu&gt;
Acked-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
