<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/tipc, branch v3.12.10</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/tipc?h=v3.12.10</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/tipc?h=v3.12.10'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-12-08T15:29:13Z</updated>
<entry>
<title>net: rework recvmsg handler msg_name and msg_namelen logic</title>
<updated>2013-12-08T15:29:13Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-11-21T02:14:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0cefe287488ca07c0d7962a7b4d3fbb829d09917'/>
<id>urn:sha1:0cefe287488ca07c0d7962a7b4d3fbb829d09917</id>
<content type='text'>
[ Upstream commit f3d3342602f8bcbf37d7c46641cb9bca7618eb1c ]

This patch now always passes msg-&gt;msg_namelen as 0. recvmsg handlers must
set msg_namelen to the proper size &lt;= sizeof(struct sockaddr_storage)
to return msg_name to the user.

This prevents numerous uninitialized memory leaks we had in the
recvmsg handlers and makes it harder for new code to accidentally leak
uninitialized memory.

Optimize for the case recvfrom is called with NULL as address. We don't
need to copy the address at all, so set it to NULL before invoking the
recvmsg handler. We can do so, because all the recvmsg handlers must
cope with the case a plain read() is called on them. read() also sets
msg_name to NULL.

Also document these changes in include/linux/net.h as suggested by David
Miller.

Changes since RFC:

Set msg-&gt;msg_name = NULL if user specified a NULL in msg_name but had a
non-null msg_namelen in verify_iovec/verify_compat_iovec. This doesn't
affect sendto as it would bail out earlier while trying to copy-in the
address. It also more naturally reflects the logic by the callers of
verify_iovec.

With this change in place I could remove "
if (!uaddr || msg_sys-&gt;msg_namelen == 0)
	msg-&gt;msg_name = NULL
".

This change does not alter the user visible error logic as we ignore
msg_namelen as long as msg_name is NULL.

Also remove two unnecessary curly brackets in ___sys_recvmsg and change
comments to netdev style.

Cc: David Miller &lt;davem@davemloft.net&gt;
Suggested-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&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>tipc: set sk_err correctly when connection fails</title>
<updated>2013-08-30T20:06:57Z</updated>
<author>
<name>Erik Hugne</name>
<email>erik.hugne@ericsson.com</email>
</author>
<published>2013-08-28T07:29:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2c8d85182348021fc0a1bed193a4be4161dc8364'/>
<id>urn:sha1:2c8d85182348021fc0a1bed193a4be4161dc8364</id>
<content type='text'>
Should a connect fail, if the publication/server is unavailable or
due to some other error, a positive value will be returned and errno
is never set. If the application code checks for an explicit zero
return from connect (success) or a negative return (failure), it
will not catch the error and subsequent send() calls will fail as
shown from the strace snippet below.

socket(0x1e /* PF_??? */, SOCK_SEQPACKET, 0) = 3
connect(3, {sa_family=0x1e /* AF_??? */, sa_data="\2\1\322\4\0\0\322\4\0\0\0\0\0\0"}, 16) = 111
sendto(3, "test", 4, 0, NULL, 0)        = -1 EPIPE (Broken pipe)

The reason for this behaviour is that TIPC wrongly inverts error
codes set in sk_err.

Signed-off-by: Erik Hugne &lt;erik.hugne@ericsson.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: avoid possible deadlock while enable and disable bearer</title>
<updated>2013-08-12T04:58:41Z</updated>
<author>
<name>dingtianhong</name>
<email>dingtianhong@huawei.com</email>
</author>
<published>2013-08-09T09:12:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d4cca39d90fca21c04315095de5d0e734e839a8b'/>
<id>urn:sha1:d4cca39d90fca21c04315095de5d0e734e839a8b</id>
<content type='text'>
We met lockdep warning when enable and disable the bearer for commands such as:

tipc-config -netid=1234 -addr=1.1.3 -be=eth:eth0
tipc-config -netid=1234 -addr=1.1.3 -bd=eth:eth0

---------------------------------------------------

[  327.693595] ======================================================
[  327.693994] [ INFO: possible circular locking dependency detected ]
[  327.694519] 3.11.0-rc3-wwd-default #4 Tainted: G           O
[  327.694882] -------------------------------------------------------
[  327.695385] tipc-config/5825 is trying to acquire lock:
[  327.695754]  (((timer))#2){+.-...}, at: [&lt;ffffffff8105be80&gt;] del_timer_sync+0x0/0xd0
[  327.696018]
[  327.696018] but task is already holding lock:
[  327.696018]  (&amp;(&amp;b_ptr-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;ffffffffa02be58d&gt;] bearer_disable+  0xdd/0x120 [tipc]
[  327.696018]
[  327.696018] which lock already depends on the new lock.
[  327.696018]
[  327.696018]
[  327.696018] the existing dependency chain (in reverse order) is:
[  327.696018]
[  327.696018] -&gt; #1 (&amp;(&amp;b_ptr-&gt;lock)-&gt;rlock){+.-...}:
[  327.696018]        [&lt;ffffffff810b3b4d&gt;] validate_chain+0x6dd/0x870
[  327.696018]        [&lt;ffffffff810b40bb&gt;] __lock_acquire+0x3db/0x670
[  327.696018]        [&lt;ffffffff810b4453&gt;] lock_acquire+0x103/0x130
[  327.696018]        [&lt;ffffffff814d65b1&gt;] _raw_spin_lock_bh+0x41/0x80
[  327.696018]        [&lt;ffffffffa02c5d48&gt;] disc_timeout+0x18/0xd0 [tipc]
[  327.696018]        [&lt;ffffffff8105b92a&gt;] call_timer_fn+0xda/0x1e0
[  327.696018]        [&lt;ffffffff8105bcd7&gt;] run_timer_softirq+0x2a7/0x2d0
[  327.696018]        [&lt;ffffffff8105379a&gt;] __do_softirq+0x16a/0x2e0
[  327.696018]        [&lt;ffffffff81053a35&gt;] irq_exit+0xd5/0xe0
[  327.696018]        [&lt;ffffffff81033005&gt;] smp_apic_timer_interrupt+0x45/0x60
[  327.696018]        [&lt;ffffffff814df4af&gt;] apic_timer_interrupt+0x6f/0x80
[  327.696018]        [&lt;ffffffff8100b70e&gt;] arch_cpu_idle+0x1e/0x30
[  327.696018]        [&lt;ffffffff810a039d&gt;] cpu_idle_loop+0x1fd/0x280
[  327.696018]        [&lt;ffffffff810a043e&gt;] cpu_startup_entry+0x1e/0x20
[  327.696018]        [&lt;ffffffff81031589&gt;] start_secondary+0x89/0x90
[  327.696018]
[  327.696018] -&gt; #0 (((timer))#2){+.-...}:
[  327.696018]        [&lt;ffffffff810b33fe&gt;] check_prev_add+0x43e/0x4b0
[  327.696018]        [&lt;ffffffff810b3b4d&gt;] validate_chain+0x6dd/0x870
[  327.696018]        [&lt;ffffffff810b40bb&gt;] __lock_acquire+0x3db/0x670
[  327.696018]        [&lt;ffffffff810b4453&gt;] lock_acquire+0x103/0x130
[  327.696018]        [&lt;ffffffff8105bebd&gt;] del_timer_sync+0x3d/0xd0
[  327.696018]        [&lt;ffffffffa02c5855&gt;] tipc_disc_delete+0x15/0x30 [tipc]
[  327.696018]        [&lt;ffffffffa02be59f&gt;] bearer_disable+0xef/0x120 [tipc]
[  327.696018]        [&lt;ffffffffa02be74f&gt;] tipc_disable_bearer+0x2f/0x60 [tipc]
[  327.696018]        [&lt;ffffffffa02bfb32&gt;] tipc_cfg_do_cmd+0x2e2/0x550 [tipc]
[  327.696018]        [&lt;ffffffffa02c8c79&gt;] handle_cmd+0x49/0xe0 [tipc]
[  327.696018]        [&lt;ffffffff8143e898&gt;] genl_family_rcv_msg+0x268/0x340
[  327.696018]        [&lt;ffffffff8143ed30&gt;] genl_rcv_msg+0x70/0xd0
[  327.696018]        [&lt;ffffffff8143d4c9&gt;] netlink_rcv_skb+0x89/0xb0
[  327.696018]        [&lt;ffffffff8143e617&gt;] genl_rcv+0x27/0x40
[  327.696018]        [&lt;ffffffff8143d21e&gt;] netlink_unicast+0x15e/0x1b0
[  327.696018]        [&lt;ffffffff8143ddcf&gt;] netlink_sendmsg+0x22f/0x400
[  327.696018]        [&lt;ffffffff813f7836&gt;] __sock_sendmsg+0x66/0x80
[  327.696018]        [&lt;ffffffff813f7957&gt;] sock_aio_write+0x107/0x120
[  327.696018]        [&lt;ffffffff8117f76d&gt;] do_sync_write+0x7d/0xc0
[  327.696018]        [&lt;ffffffff8117fc56&gt;] vfs_write+0x186/0x190
[  327.696018]        [&lt;ffffffff811803e0&gt;] SyS_write+0x60/0xb0
[  327.696018]        [&lt;ffffffff814de852&gt;] system_call_fastpath+0x16/0x1b
[  327.696018]
[  327.696018] other info that might help us debug this:
[  327.696018]
[  327.696018]  Possible unsafe locking scenario:
[  327.696018]
[  327.696018]        CPU0                    CPU1
[  327.696018]        ----                    ----
[  327.696018]   lock(&amp;(&amp;b_ptr-&gt;lock)-&gt;rlock);
[  327.696018]                                lock(((timer))#2);
[  327.696018]                                lock(&amp;(&amp;b_ptr-&gt;lock)-&gt;rlock);
[  327.696018]   lock(((timer))#2);
[  327.696018]
[  327.696018]  *** DEADLOCK ***
[  327.696018]
[  327.696018] 5 locks held by tipc-config/5825:
[  327.696018]  #0:  (cb_lock){++++++}, at: [&lt;ffffffff8143e608&gt;] genl_rcv+0x18/0x40
[  327.696018]  #1:  (genl_mutex){+.+.+.}, at: [&lt;ffffffff8143ed66&gt;] genl_rcv_msg+0xa6/0xd0
[  327.696018]  #2:  (config_mutex){+.+.+.}, at: [&lt;ffffffffa02bf889&gt;] tipc_cfg_do_cmd+0x39/ 0x550 [tipc]
[  327.696018]  #3:  (tipc_net_lock){++.-..}, at: [&lt;ffffffffa02be738&gt;] tipc_disable_bearer+ 0x18/0x60 [tipc]
[  327.696018]  #4:  (&amp;(&amp;b_ptr-&gt;lock)-&gt;rlock){+.-...}, at: [&lt;ffffffffa02be58d&gt;]             bearer_disable+0xdd/0x120 [tipc]
[  327.696018]
[  327.696018] stack backtrace:
[  327.696018] CPU: 2 PID: 5825 Comm: tipc-config Tainted: G           O 3.11.0-rc3-wwd-    default #4
[  327.696018] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
[  327.696018]  00000000ffffffff ffff880037fa77a8 ffffffff814d03dd 0000000000000000
[  327.696018]  ffff880037fa7808 ffff880037fa77e8 ffffffff810b1c4f 0000000037fa77e8
[  327.696018]  ffff880037fa7808 ffff880037e4db40 0000000000000000 ffff880037e4e318
[  327.696018] Call Trace:
[  327.696018]  [&lt;ffffffff814d03dd&gt;] dump_stack+0x4d/0xa0
[  327.696018]  [&lt;ffffffff810b1c4f&gt;] print_circular_bug+0x10f/0x120
[  327.696018]  [&lt;ffffffff810b33fe&gt;] check_prev_add+0x43e/0x4b0
[  327.696018]  [&lt;ffffffff810b3b4d&gt;] validate_chain+0x6dd/0x870
[  327.696018]  [&lt;ffffffff81087a28&gt;] ? sched_clock_cpu+0xd8/0x110
[  327.696018]  [&lt;ffffffff810b40bb&gt;] __lock_acquire+0x3db/0x670
[  327.696018]  [&lt;ffffffff810b4453&gt;] lock_acquire+0x103/0x130
[  327.696018]  [&lt;ffffffff8105be80&gt;] ? try_to_del_timer_sync+0x70/0x70
[  327.696018]  [&lt;ffffffff8105bebd&gt;] del_timer_sync+0x3d/0xd0
[  327.696018]  [&lt;ffffffff8105be80&gt;] ? try_to_del_timer_sync+0x70/0x70
[  327.696018]  [&lt;ffffffffa02c5855&gt;] tipc_disc_delete+0x15/0x30 [tipc]
[  327.696018]  [&lt;ffffffffa02be59f&gt;] bearer_disable+0xef/0x120 [tipc]
[  327.696018]  [&lt;ffffffffa02be74f&gt;] tipc_disable_bearer+0x2f/0x60 [tipc]
[  327.696018]  [&lt;ffffffffa02bfb32&gt;] tipc_cfg_do_cmd+0x2e2/0x550 [tipc]
[  327.696018]  [&lt;ffffffff81218783&gt;] ? security_capable+0x13/0x20
[  327.696018]  [&lt;ffffffffa02c8c79&gt;] handle_cmd+0x49/0xe0 [tipc]
[  327.696018]  [&lt;ffffffff8143e898&gt;] genl_family_rcv_msg+0x268/0x340
[  327.696018]  [&lt;ffffffff8143ed30&gt;] genl_rcv_msg+0x70/0xd0
[  327.696018]  [&lt;ffffffff8143ecc0&gt;] ? genl_lock+0x20/0x20
[  327.696018]  [&lt;ffffffff8143d4c9&gt;] netlink_rcv_skb+0x89/0xb0
[  327.696018]  [&lt;ffffffff8143e608&gt;] ? genl_rcv+0x18/0x40
[  327.696018]  [&lt;ffffffff8143e617&gt;] genl_rcv+0x27/0x40
[  327.696018]  [&lt;ffffffff8143d21e&gt;] netlink_unicast+0x15e/0x1b0
[  327.696018]  [&lt;ffffffff81289d7c&gt;] ? memcpy_fromiovec+0x6c/0x90
[  327.696018]  [&lt;ffffffff8143ddcf&gt;] netlink_sendmsg+0x22f/0x400
[  327.696018]  [&lt;ffffffff813f7836&gt;] __sock_sendmsg+0x66/0x80
[  327.696018]  [&lt;ffffffff813f7957&gt;] sock_aio_write+0x107/0x120
[  327.696018]  [&lt;ffffffff813fe29c&gt;] ? release_sock+0x8c/0xa0
[  327.696018]  [&lt;ffffffff8117f76d&gt;] do_sync_write+0x7d/0xc0
[  327.696018]  [&lt;ffffffff8117fa24&gt;] ? rw_verify_area+0x54/0x100
[  327.696018]  [&lt;ffffffff8117fc56&gt;] vfs_write+0x186/0x190
[  327.696018]  [&lt;ffffffff811803e0&gt;] SyS_write+0x60/0xb0
[  327.696018]  [&lt;ffffffff814de852&gt;] system_call_fastpath+0x16/0x1b

-----------------------------------------------------------------------

The problem is that the tipc_link_delete() will cancel the timer disc_timeout() when
the b_ptr-&gt;lock is hold, but the disc_timeout() still call b_ptr-&gt;lock to finish the
work, so the dead lock occurs.

We should unlock the b_ptr-&gt;lock when del the disc_timeout().

Remove link_timeout() still met the same problem, the patch:

http://article.gmane.org/gmane.network.tipc.general/4380

fix the problem, so no need to send patch for fix link_timeout() deadlock warming.

Signed-off-by: Wang Weidong &lt;wangweidong1@huawei.com&gt;
Signed-off-by: Ding Tianhong &lt;dingtianhong@huawei.com&gt;
Acked-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: fix oops when creating server socket fails</title>
<updated>2013-08-01T22:54:33Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2013-08-01T12:29:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c756891a4e1c08c43780e17aca1d2b849ef31d1a'/>
<id>urn:sha1:c756891a4e1c08c43780e17aca1d2b849ef31d1a</id>
<content type='text'>
When creation of TIPC internal server socket fails,
we get an oops with the following dump:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000020
IP: [&lt;ffffffffa0011f49&gt;] tipc_close_conn+0x59/0xb0 [tipc]
PGD 13719067 PUD 12008067 PMD 0
Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
Modules linked in: tipc(+)
CPU: 4 PID: 4340 Comm: insmod Not tainted 3.10.0+ #1
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
task: ffff880014360000 ti: ffff88001374c000 task.ti: ffff88001374c000
RIP: 0010:[&lt;ffffffffa0011f49&gt;]  [&lt;ffffffffa0011f49&gt;] tipc_close_conn+0x59/0xb0 [tipc]
RSP: 0018:ffff88001374dc98  EFLAGS: 00010292
RAX: 0000000000000000 RBX: ffff880012ac09d8 RCX: 0000000000000000
RDX: 0000000000000046 RSI: 0000000000000001 RDI: ffff880014360000
RBP: ffff88001374dcb8 R08: 0000000000000001 R09: 0000000000000001
R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0016fa0
R13: ffffffffa0017010 R14: ffffffffa0017010 R15: ffff880012ac09d8
FS:  0000000000000000(0000) GS:ffff880016600000(0063) knlGS:00000000f76668d0
CS:  0010 DS: 002b ES: 002b CR0: 000000008005003b
CR2: 0000000000000020 CR3: 0000000012227000 CR4: 00000000000006e0
Stack:
ffff88001374dcb8 ffffffffa0016fa0 0000000000000000 0000000000000001
ffff88001374dcf8 ffffffffa0012922 ffff88001374dce8 00000000ffffffea
ffffffffa0017100 0000000000000000 ffff8800134241a8 ffffffffa0017150
Call Trace:
[&lt;ffffffffa0012922&gt;] tipc_server_stop+0xa2/0x1b0 [tipc]
[&lt;ffffffffa0009995&gt;] tipc_subscr_stop+0x15/0x20 [tipc]
[&lt;ffffffffa00130f5&gt;] tipc_core_stop+0x1d/0x33 [tipc]
[&lt;ffffffffa001f0d4&gt;] tipc_init+0xd4/0xf8 [tipc]
[&lt;ffffffffa001f000&gt;] ? 0xffffffffa001efff
[&lt;ffffffff8100023f&gt;] do_one_initcall+0x3f/0x150
[&lt;ffffffff81082f4d&gt;] ? __blocking_notifier_call_chain+0x7d/0xd0
[&lt;ffffffff810cc58a&gt;] load_module+0x11aa/0x19c0
[&lt;ffffffff810c8d60&gt;] ? show_initstate+0x50/0x50
[&lt;ffffffff8190311c&gt;] ? retint_restore_args+0xe/0xe
[&lt;ffffffff810cce79&gt;] SyS_init_module+0xd9/0x110
[&lt;ffffffff8190dc65&gt;] sysenter_dispatch+0x7/0x1f
Code: 6c 24 70 4c 89 ef e8 b7 04 8f e1 8b 73 04 4c 89 e7 e8 7c 9e 32 e1 41 83 ac 24
b8 00 00 00 01 4c 89 ef e8 eb 0a 8f e1 48 8b 43 08 &lt;4c&gt; 8b 68 20 4d 8d a5 48 03 00
00 4c 89 e7 e8 04 05 8f e1 4c 89
RIP  [&lt;ffffffffa0011f49&gt;] tipc_close_conn+0x59/0xb0 [tipc]
RSP &lt;ffff88001374dc98&gt;
CR2: 0000000000000020
---[ end trace b02321f40e4269a3 ]---

We have the following call chain:

tipc_core_start()
    ret = tipc_subscr_start()
        ret = tipc_server_start(){
                  server-&gt;enabled = 1;
                  ret = tipc_open_listening_sock()
              }

I.e., the server-&gt;enabled flag is unconditionally set to 1, whatever
the return value of tipc_open_listening_sock().

This causes a crash when tipc_core_start() tries to clean up
resources after a failed initialization:

    if (ret == failed)
        tipc_subscr_stop()
            tipc_server_stop(){
                if (server-&gt;enabled)
                    tipc_close_conn(){
                        NULL reference of con-&gt;sock-sk
                        OOPS!
                }
            }

To avoid this, tipc_server_start() should only set server-&gt;enabled
to 1 in case of a succesful socket creation. In case of failure, it
should release all allocated resources before returning.

Problem introduced in commit c5fa7b3cf3cb22e4ac60485fc2dc187fe012910f
("tipc: introduce new TIPC server infrastructure") in v3.11-rc1.
Note that it won't be seen often; it takes a module load under memory
constrained conditions in order to trigger the failure condition.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Jon Maloy &lt;jon.maloy@ericsson.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/tipc: use %*phC to dump small buffers in hex form</title>
<updated>2013-07-12T00:03:36Z</updated>
<author>
<name>Andy Shevchenko</name>
<email>andriy.shevchenko@linux.intel.com</email>
</author>
<published>2013-07-10T14:30:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d77e41e12744e53ca7f98f920350998b5f00c93a'/>
<id>urn:sha1:d77e41e12744e53ca7f98f920350998b5f00c93a</id>
<content type='text'>
Instead of passing each byte by stack let's use nice specifier for that.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: remove dev_base_lock use from enable_bearer</title>
<updated>2013-06-17T22:53:01Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2013-06-17T14:54:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2537af9dcabbdd6c93c041a955d3a9ae42c0c008'/>
<id>urn:sha1:2537af9dcabbdd6c93c041a955d3a9ae42c0c008</id>
<content type='text'>
Convert enable_bearer() to RCU locking with dev_get_by_name().

Based on a similar changeset in commit 840a185d ["aoe: remove
dev_base_lock use from aoecmd_cfg_pkts()"] -- quoting that:

  "dev_base_lock is the legacy way to lock the device list,
   and is planned to disappear. (writers hold RTNL, readers
   hold RCU lock)"

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: fix wrong return value for link_send_sections_long routine</title>
<updated>2013-06-17T22:53:01Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2013-06-17T14:54:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=126c0524648631a0f6fba4d016586b236209fe6f'/>
<id>urn:sha1:126c0524648631a0f6fba4d016586b236209fe6f</id>
<content type='text'>
When skb buffer cannot be allocated in link_send_sections_long(),
-ENOMEM error code instead of -EFAULT should be returned to its
caller.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: make tipc_link_send_sections_fast exit earlier</title>
<updated>2013-06-17T22:53:01Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2013-06-17T14:54:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7410f967ba9bdc14b1e336e5d235929ed878cbfc'/>
<id>urn:sha1:7410f967ba9bdc14b1e336e5d235929ed878cbfc</id>
<content type='text'>
Once message build request function returns invalid code, the
process of sending message cannot continue. So in case of message
build failure, tipc_link_send_sections_fast() should return
immediately.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: enhance priority of link protocol packet</title>
<updated>2013-06-17T22:53:01Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2013-06-17T14:54:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=796c75d0d3ef13cd1df00779abb8b27edb630504'/>
<id>urn:sha1:796c75d0d3ef13cd1df00779abb8b27edb630504</id>
<content type='text'>
pfifo_fast is set as default traffic class queueing discipline. This
queue has three so called "bands". Within each band, FIFO rules apply.
However, as long as there are packets waiting in band 0, band 1 won't
be processed.

Now all kind of TIPC type packet priorities are never set, that is,
their priorities are 0, so they are mapped to band 1 of pfifo_fast
qdisc. But, especially during link congestion, if link protocol packet
can be sent out as earlier as possible than other type of packets so
that protocol packet can arrive at peer endpoint in time, the peer
will timely reset its link timeout timer to keep the link alive.
So enhancing the priority of link protocol packets can meet the
specific demand to avoid unnecessary link reset due to a transient
link congestion.

Signed-off-by: Ying Xue &lt;ying.xue@windriver.com&gt;
Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>tipc: cosmetic realignment of function arguments</title>
<updated>2013-06-17T22:53:01Z</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2013-06-17T14:54:47Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ae8509c420122866344bde1241e31858d0aa2fbc'/>
<id>urn:sha1:ae8509c420122866344bde1241e31858d0aa2fbc</id>
<content type='text'>
No runtime code changes here.  Just a realign of the function
arguments to start where the 1st one was, and fit as many args
as can be put in an 80 char line.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
