<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/net/tipc/name_table.c, branch linux-4.4.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>tipc: rename functions defined in subscr.c</title>
<updated>2015-05-04T19:04:00+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-05-04T02:36:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=57f1d1868fb5d71a20bfb1bc807274471c2ff459'/>
<id>57f1d1868fb5d71a20bfb1bc807274471c2ff459</id>
<content type='text'>
When a topology server accepts a connection request from its client,
it allocates a connection instance and a tipc_subscriber structure
object. The former is used to communicate with client, and the latter
is often treated as a subscriber which manages all subscription events
requested from a same client. When a topology server receives a request
of subscribing name services from a client through the connection, it
creates a tipc_subscription structure instance which is seen as a
subscription recording what name services are subscribed. In order to
manage all subscriptions from a same client, topology server links
them into the subscrp_list of the subscriber. So subscriber and
subscription completely represents different meanings respectively,
but function names associated with them make us so confused that we
are unable to easily tell which function is against subscriber and
which is to subscription. So we want to eliminate the confusion by
renaming them.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericson.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 a topology server accepts a connection request from its client,
it allocates a connection instance and a tipc_subscriber structure
object. The former is used to communicate with client, and the latter
is often treated as a subscriber which manages all subscription events
requested from a same client. When a topology server receives a request
of subscribing name services from a client through the connection, it
creates a tipc_subscription structure instance which is seen as a
subscription recording what name services are subscribed. In order to
manage all subscriptions from a same client, topology server links
them into the subscrp_list of the subscriber. So subscriber and
subscription completely represents different meanings respectively,
but function names associated with them make us so confused that we
are unable to easily tell which function is against subscriber and
which is to subscription. So we want to eliminate the confusion by
renaming them.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: fix a potential deadlock when nametable is purged</title>
<updated>2015-03-18T02:11:26+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-03-18T01:32:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8460504bdd9aa5996dfc5dd69cd61582a25139ec'/>
<id>8460504bdd9aa5996dfc5dd69cd61582a25139ec</id>
<content type='text'>
[   28.531768] =============================================
[   28.532322] [ INFO: possible recursive locking detected ]
[   28.532322] 3.19.0+ #194 Not tainted
[   28.532322] ---------------------------------------------
[   28.532322] insmod/583 is trying to acquire lock:
[   28.532322]  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000d219&gt;] tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]
[   28.532322] but task is already holding lock:
[   28.532322]  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e0dc&gt;] tipc_nametbl_stop+0xfc/0x1f0 [tipc]
[   28.532322]
[   28.532322] other info that might help us debug this:
[   28.532322]  Possible unsafe locking scenario:
[   28.532322]
[   28.532322]        CPU0
[   28.532322]        ----
[   28.532322]   lock(&amp;(&amp;nseq-&gt;lock)-&gt;rlock);
[   28.532322]   lock(&amp;(&amp;nseq-&gt;lock)-&gt;rlock);
[   28.532322]
[   28.532322]  *** DEADLOCK ***
[   28.532322]
[   28.532322]  May be due to missing lock nesting notation
[   28.532322]
[   28.532322] 3 locks held by insmod/583:
[   28.532322]  #0:  (net_mutex){+.+.+.}, at: [&lt;ffffffff8163e30f&gt;] register_pernet_subsys+0x1f/0x50
[   28.532322]  #1:  (&amp;(&amp;tn-&gt;nametbl_lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e091&gt;] tipc_nametbl_stop+0xb1/0x1f0 [tipc]
[   28.532322]  #2:  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e0dc&gt;] tipc_nametbl_stop+0xfc/0x1f0 [tipc]
[   28.532322]
[   28.532322] stack backtrace:
[   28.532322] CPU: 1 PID: 583 Comm: insmod Not tainted 3.19.0+ #194
[   28.532322] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[   28.532322]  ffffffff82394460 ffff8800144cb928 ffffffff81792f3e 0000000000000007
[   28.532322]  ffffffff82394460 ffff8800144cba28 ffffffff810a8080 ffff8800144cb998
[   28.532322]  ffffffff810a4df3 ffff880013e9cb10 ffffffff82b0d330 ffff880013e9cb38
[   28.532322] Call Trace:
[   28.532322]  [&lt;ffffffff81792f3e&gt;] dump_stack+0x4c/0x65
[   28.532322]  [&lt;ffffffff810a8080&gt;] __lock_acquire+0x740/0x1ca0
[   28.532322]  [&lt;ffffffff810a4df3&gt;] ? __bfs+0x23/0x270
[   28.532322]  [&lt;ffffffff810a7506&gt;] ? check_irq_usage+0x96/0xe0
[   28.532322]  [&lt;ffffffff810a8a73&gt;] ? __lock_acquire+0x1133/0x1ca0
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffff810a9c0c&gt;] lock_acquire+0x9c/0x140
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffff8179c41f&gt;] _raw_spin_lock_bh+0x3f/0x50
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffffa000d219&gt;] tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffffa000e11e&gt;] tipc_nametbl_stop+0x13e/0x1f0 [tipc]
[   28.532322]  [&lt;ffffffffa000dfe5&gt;] ? tipc_nametbl_stop+0x5/0x1f0 [tipc]
[   28.532322]  [&lt;ffffffffa0004bab&gt;] tipc_init_net+0x13b/0x150 [tipc]
[   28.532322]  [&lt;ffffffffa0004a75&gt;] ? tipc_init_net+0x5/0x150 [tipc]
[   28.532322]  [&lt;ffffffff8163dece&gt;] ops_init+0x4e/0x150
[   28.532322]  [&lt;ffffffff810aa66d&gt;] ? trace_hardirqs_on+0xd/0x10
[   28.532322]  [&lt;ffffffff8163e1d3&gt;] register_pernet_operations+0xf3/0x190
[   28.532322]  [&lt;ffffffff8163e31e&gt;] register_pernet_subsys+0x2e/0x50
[   28.532322]  [&lt;ffffffffa002406a&gt;] tipc_init+0x6a/0x1000 [tipc]
[   28.532322]  [&lt;ffffffffa0024000&gt;] ? 0xffffffffa0024000
[   28.532322]  [&lt;ffffffff810002d9&gt;] do_one_initcall+0x89/0x1c0
[   28.532322]  [&lt;ffffffff811b7cb0&gt;] ? kmem_cache_alloc_trace+0x50/0x1b0
[   28.532322]  [&lt;ffffffff810e725b&gt;] ? do_init_module+0x2b/0x200
[   28.532322]  [&lt;ffffffff810e7294&gt;] do_init_module+0x64/0x200
[   28.532322]  [&lt;ffffffff810e9353&gt;] load_module+0x12f3/0x18e0
[   28.532322]  [&lt;ffffffff810e5890&gt;] ? show_initstate+0x50/0x50
[   28.532322]  [&lt;ffffffff810e9a19&gt;] SyS_init_module+0xd9/0x110
[   28.532322]  [&lt;ffffffff8179f3b3&gt;] sysenter_dispatch+0x7/0x1f

Before tipc_purge_publications() calls tipc_nametbl_remove_publ() to
remove a publication with a name sequence, the name sequence's lock
is held. However, when tipc_nametbl_remove_publ() calling
tipc_nameseq_remove_publ() to remove the publication, it first tries
to query name sequence instance with the publication, and then holds
the lock of the found name sequence. But as the lock may be already
taken in tipc_purge_publications(), deadlock happens like above
scenario demonstrated. As tipc_nameseq_remove_publ() doesn't grab name
sequence's lock, the deadlock can be avoided if it's directly invoked
by tipc_purge_publications().

Fixes: 97ede29e80ee ("tipc: convert name table read-write lock to RCU")
Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.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>
[   28.531768] =============================================
[   28.532322] [ INFO: possible recursive locking detected ]
[   28.532322] 3.19.0+ #194 Not tainted
[   28.532322] ---------------------------------------------
[   28.532322] insmod/583 is trying to acquire lock:
[   28.532322]  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000d219&gt;] tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]
[   28.532322] but task is already holding lock:
[   28.532322]  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e0dc&gt;] tipc_nametbl_stop+0xfc/0x1f0 [tipc]
[   28.532322]
[   28.532322] other info that might help us debug this:
[   28.532322]  Possible unsafe locking scenario:
[   28.532322]
[   28.532322]        CPU0
[   28.532322]        ----
[   28.532322]   lock(&amp;(&amp;nseq-&gt;lock)-&gt;rlock);
[   28.532322]   lock(&amp;(&amp;nseq-&gt;lock)-&gt;rlock);
[   28.532322]
[   28.532322]  *** DEADLOCK ***
[   28.532322]
[   28.532322]  May be due to missing lock nesting notation
[   28.532322]
[   28.532322] 3 locks held by insmod/583:
[   28.532322]  #0:  (net_mutex){+.+.+.}, at: [&lt;ffffffff8163e30f&gt;] register_pernet_subsys+0x1f/0x50
[   28.532322]  #1:  (&amp;(&amp;tn-&gt;nametbl_lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e091&gt;] tipc_nametbl_stop+0xb1/0x1f0 [tipc]
[   28.532322]  #2:  (&amp;(&amp;nseq-&gt;lock)-&gt;rlock){+.....}, at: [&lt;ffffffffa000e0dc&gt;] tipc_nametbl_stop+0xfc/0x1f0 [tipc]
[   28.532322]
[   28.532322] stack backtrace:
[   28.532322] CPU: 1 PID: 583 Comm: insmod Not tainted 3.19.0+ #194
[   28.532322] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[   28.532322]  ffffffff82394460 ffff8800144cb928 ffffffff81792f3e 0000000000000007
[   28.532322]  ffffffff82394460 ffff8800144cba28 ffffffff810a8080 ffff8800144cb998
[   28.532322]  ffffffff810a4df3 ffff880013e9cb10 ffffffff82b0d330 ffff880013e9cb38
[   28.532322] Call Trace:
[   28.532322]  [&lt;ffffffff81792f3e&gt;] dump_stack+0x4c/0x65
[   28.532322]  [&lt;ffffffff810a8080&gt;] __lock_acquire+0x740/0x1ca0
[   28.532322]  [&lt;ffffffff810a4df3&gt;] ? __bfs+0x23/0x270
[   28.532322]  [&lt;ffffffff810a7506&gt;] ? check_irq_usage+0x96/0xe0
[   28.532322]  [&lt;ffffffff810a8a73&gt;] ? __lock_acquire+0x1133/0x1ca0
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffff810a9c0c&gt;] lock_acquire+0x9c/0x140
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffff8179c41f&gt;] _raw_spin_lock_bh+0x3f/0x50
[   28.532322]  [&lt;ffffffffa000d219&gt;] ? tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffffa000d219&gt;] tipc_nametbl_remove_publ+0x49/0x2e0 [tipc]
[   28.532322]  [&lt;ffffffffa000e11e&gt;] tipc_nametbl_stop+0x13e/0x1f0 [tipc]
[   28.532322]  [&lt;ffffffffa000dfe5&gt;] ? tipc_nametbl_stop+0x5/0x1f0 [tipc]
[   28.532322]  [&lt;ffffffffa0004bab&gt;] tipc_init_net+0x13b/0x150 [tipc]
[   28.532322]  [&lt;ffffffffa0004a75&gt;] ? tipc_init_net+0x5/0x150 [tipc]
[   28.532322]  [&lt;ffffffff8163dece&gt;] ops_init+0x4e/0x150
[   28.532322]  [&lt;ffffffff810aa66d&gt;] ? trace_hardirqs_on+0xd/0x10
[   28.532322]  [&lt;ffffffff8163e1d3&gt;] register_pernet_operations+0xf3/0x190
[   28.532322]  [&lt;ffffffff8163e31e&gt;] register_pernet_subsys+0x2e/0x50
[   28.532322]  [&lt;ffffffffa002406a&gt;] tipc_init+0x6a/0x1000 [tipc]
[   28.532322]  [&lt;ffffffffa0024000&gt;] ? 0xffffffffa0024000
[   28.532322]  [&lt;ffffffff810002d9&gt;] do_one_initcall+0x89/0x1c0
[   28.532322]  [&lt;ffffffff811b7cb0&gt;] ? kmem_cache_alloc_trace+0x50/0x1b0
[   28.532322]  [&lt;ffffffff810e725b&gt;] ? do_init_module+0x2b/0x200
[   28.532322]  [&lt;ffffffff810e7294&gt;] do_init_module+0x64/0x200
[   28.532322]  [&lt;ffffffff810e9353&gt;] load_module+0x12f3/0x18e0
[   28.532322]  [&lt;ffffffff810e5890&gt;] ? show_initstate+0x50/0x50
[   28.532322]  [&lt;ffffffff810e9a19&gt;] SyS_init_module+0xd9/0x110
[   28.532322]  [&lt;ffffffff8179f3b3&gt;] sysenter_dispatch+0x7/0x1f

Before tipc_purge_publications() calls tipc_nametbl_remove_publ() to
remove a publication with a name sequence, the name sequence's lock
is held. However, when tipc_nametbl_remove_publ() calling
tipc_nameseq_remove_publ() to remove the publication, it first tries
to query name sequence instance with the publication, and then holds
the lock of the found name sequence. But as the lock may be already
taken in tipc_purge_publications(), deadlock happens like above
scenario demonstrated. As tipc_nameseq_remove_publ() doesn't grab name
sequence's lock, the deadlock can be avoided if it's directly invoked
by tipc_purge_publications().

Fixes: 97ede29e80ee ("tipc: convert name table read-write lock to RCU")
Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: nl compat add noop and remove legacy nl framework</title>
<updated>2015-02-09T21:20:49+00:00</updated>
<author>
<name>Richard Alpe</name>
<email>richard.alpe@ericsson.com</email>
</author>
<published>2015-02-09T08:50:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=22ae7cff509f3bb22caaa0003f67eeb93d338fed'/>
<id>22ae7cff509f3bb22caaa0003f67eeb93d338fed</id>
<content type='text'>
Add TIPC_CMD_NOOP to compat layer and remove the old framework.

All legacy nl commands are now converted to the compat layer in
netlink_compat.c.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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 TIPC_CMD_NOOP to compat layer and remove the old framework.

All legacy nl commands are now converted to the compat layer in
netlink_compat.c.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: convert legacy nl name table dump to nl compat</title>
<updated>2015-02-09T21:20:48+00:00</updated>
<author>
<name>Richard Alpe</name>
<email>richard.alpe@ericsson.com</email>
</author>
<published>2015-02-09T08:50:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=44a8ae94fd5525aa06a8c71cb52efbc418fb8b7c'/>
<id>44a8ae94fd5525aa06a8c71cb52efbc418fb8b7c</id>
<content type='text'>
Add functionality for printing a dump header and convert
TIPC_CMD_SHOW_NAME_TABLE to compat dumpit.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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 functionality for printing a dump header and convert
TIPC_CMD_SHOW_NAME_TABLE to compat dumpit.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: move and rename the legacy nl api to "nl compat"</title>
<updated>2015-02-09T21:20:47+00:00</updated>
<author>
<name>Richard Alpe</name>
<email>richard.alpe@ericsson.com</email>
</author>
<published>2015-02-09T08:50:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bfb3e5dd8dfd84dfd13649393abab63e43267b00'/>
<id>bfb3e5dd8dfd84dfd13649393abab63e43267b00</id>
<content type='text'>
The new netlink API is no longer "v2" but rather the standard API and
the legacy API is now "nl compat". We split them into separate
start/stop and put them in different files in order to further
distinguish them.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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 new netlink API is no longer "v2" but rather the standard API and
the legacy API is now "nl compat". We split them into separate
start/stop and put them in different files in order to further
distinguish them.

Signed-off-by: Richard Alpe &lt;richard.alpe@ericsson.com&gt;
Reviewed-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: simplify socket multicast reception</title>
<updated>2015-02-06T00:00:03+00:00</updated>
<author>
<name>Jon Paul Maloy</name>
<email>jon.maloy@ericsson.com</email>
</author>
<published>2015-02-05T13:36:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3c724acdd5049907555a831f814bfd5927c3350c'/>
<id>3c724acdd5049907555a831f814bfd5927c3350c</id>
<content type='text'>
The structure 'tipc_port_list' is used to collect port numbers
representing multicast destination socket on a receiving node.
The list is not based on a standard linked list, and is in reality
optimized for the uncommon case that there are more than one
multicast destinations per node. This makes the list handling
unecessarily complex, and as a consequence, even the socket
multicast reception becomes more complex.

In this commit, we replace 'tipc_port_list' with a new 'struct
tipc_plist', which is based on a standard list. We give the new
list stack (push/pop) semantics, someting that simplifies
the implementation of the function tipc_sk_mcast_rcv().

Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.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 structure 'tipc_port_list' is used to collect port numbers
representing multicast destination socket on a receiving node.
The list is not based on a standard linked list, and is in reality
optimized for the uncommon case that there are more than one
multicast destinations per node. This makes the list handling
unecessarily complex, and as a consequence, even the socket
multicast reception becomes more complex.

In this commit, we replace 'tipc_port_list' with a new 'struct
tipc_plist', which is based on a standard list. We give the new
list stack (push/pop) semantics, someting that simplifies
the implementation of the function tipc_sk_mcast_rcv().

Reviewed-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: make tipc node address support net namespace</title>
<updated>2015-01-12T21:24:33+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-01-09T07:27:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=347475395434abb2b61bf59c2952470f37072567'/>
<id>347475395434abb2b61bf59c2952470f37072567</id>
<content type='text'>
If net namespace is supported in tipc, each namespace will be treated
as a separate tipc node. Therefore, every namespace must own its
private tipc node address. This means the "tipc_own_addr" global
variable of node address must be moved to tipc_net structure to
satisfy the requirement. It's turned out that users also can assign
node address for every namespace.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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>
If net namespace is supported in tipc, each namespace will be treated
as a separate tipc node. Therefore, every namespace must own its
private tipc node address. This means the "tipc_own_addr" global
variable of node address must be moved to tipc_net structure to
satisfy the requirement. It's turned out that users also can assign
node address for every namespace.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: name tipc name table support net namespace</title>
<updated>2015-01-12T21:24:33+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-01-09T07:27:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4ac1c8d0ee9faf3a4be185cc4db1381fa0d81280'/>
<id>4ac1c8d0ee9faf3a4be185cc4db1381fa0d81280</id>
<content type='text'>
TIPC name table is used to store the mapping relationship between
TIPC service name and socket port ID. When tipc supports namespace,
it allows users to publish service names only owned by a certain
namespace. Therefore, every namespace must have its private name
table to prevent service names published to one namespace from being
contaminated by other service names in another namespace. Therefore,
The name table global variable (ie, nametbl) and its lock must be
moved to tipc_net structure, and a parameter of namespace must be
added for necessary functions so that they can obtain name table
variable defined in tipc_net structure.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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>
TIPC name table is used to store the mapping relationship between
TIPC service name and socket port ID. When tipc supports namespace,
it allows users to publish service names only owned by a certain
namespace. Therefore, every namespace must have its private name
table to prevent service names published to one namespace from being
contaminated by other service names in another namespace. Therefore,
The name table global variable (ie, nametbl) and its lock must be
moved to tipc_net structure, and a parameter of namespace must be
added for necessary functions so that they can obtain name table
variable defined in tipc_net structure.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: make tipc broadcast link support net namespace</title>
<updated>2015-01-12T21:24:33+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-01-09T07:27:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1da465683a93142488a54a9038155f23d6349441'/>
<id>1da465683a93142488a54a9038155f23d6349441</id>
<content type='text'>
TIPC broadcast link is statically established and its relevant states
are maintained with the global variables: "bcbearer", "bclink" and
"bcl". Allowing different namespace to own different broadcast link
instances, these variables must be moved to tipc_net structure and
broadcast link instances would be allocated and initialized when
namespace is created.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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>
TIPC broadcast link is statically established and its relevant states
are maintained with the global variables: "bcbearer", "bclink" and
"bcl". Allowing different namespace to own different broadcast link
instances, these variables must be moved to tipc_net structure and
broadcast link instances would be allocated and initialized when
namespace is created.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tipc: make tipc node table aware of net namespace</title>
<updated>2015-01-12T21:24:32+00:00</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2015-01-09T07:27:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f2f9800d4955a96d92896841d8ba9b04201deaa1'/>
<id>f2f9800d4955a96d92896841d8ba9b04201deaa1</id>
<content type='text'>
Global variables associated with node table are below:
- node table list (node_htable)
- node hash table list (tipc_node_list)
- node table lock (node_list_lock)
- node number counter (tipc_num_nodes)
- node link number counter (tipc_num_links)

To make node table support namespace, above global variables must be
moved to tipc_net structure in order to keep secret for different
namespaces. As a consequence, these variables are allocated and
initialized when namespace is created, and deallocated when namespace
is destroyed. After the change, functions associated with these
variables have to utilize a namespace pointer to access them. So
adding namespace pointer as a parameter of these functions is the
major change made in the commit.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.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>
Global variables associated with node table are below:
- node table list (node_htable)
- node hash table list (tipc_node_list)
- node table lock (node_list_lock)
- node number counter (tipc_num_nodes)
- node link number counter (tipc_num_links)

To make node table support namespace, above global variables must be
moved to tipc_net structure in order to keep secret for different
namespaces. As a consequence, these variables are allocated and
initialized when namespace is created, and deallocated when namespace
is destroyed. After the change, functions associated with these
variables have to utilize a namespace pointer to access them. So
adding namespace pointer as a parameter of these functions is the
major change made in the commit.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Tested-by: Tero Aho &lt;Tero.Aho@coriant.com&gt;
Reviewed-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
