<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net, branch v3.4.64</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net?h=v3.4.64</id>
<link rel='self' href='https://git.amat.us/linux/atom/net?h=v3.4.64'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-10-01T16:10:50Z</updated>
<entry>
<title>Revert "sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter()"</title>
<updated>2013-10-01T16:10:50Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2013-09-27T15:34:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1c1c7a7342cb6ef5976823616de9114554796592'/>
<id>urn:sha1:1c1c7a7342cb6ef5976823616de9114554796592</id>
<content type='text'>
This reverts commit c2f5b7507ac5d808f29287d77ee6148358d7fbfe which is
commit f6e80abeab928b7c47cc1fbf53df13b4398a2bec.

Michal writes:
	Mainline commit f6e80abe was introduced in v3.7-rc2 as a
	follow-up fix to commit

	  edfee033  sctp: check src addr when processing SACK to update transport state

	(from v3.7-rc1) which changed the interpretation of third
	argument to sctp_cmd_process_sack() and sctp_outq_sack(). But as
	commit edfee033 has never been backported to stable branches,
	backport of commit f6e80abe actually breaks the code rather than
	fixing it.

Reported-by: Michal Kubecek &lt;mkubecek@suse.cz&gt;
Cc: Zijie Pan &lt;zijie.pan@6wind.com&gt;
Cc: Nicolas Dichtel &lt;nicolas.dichtel@6wind.com&gt;
Cc: Vlad Yasevich &lt;vyasevich@gmail.com&gt;
Acked-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: fix lockdep warning during bearer initialization</title>
<updated>2013-09-14T13:02:11Z</updated>
<author>
<name>Ying Xue</name>
<email>ying.xue@windriver.com</email>
</author>
<published>2012-08-16T12:09:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0aa1fedab07204880b8d1e935cc0782b55dfae21'/>
<id>urn:sha1:0aa1fedab07204880b8d1e935cc0782b55dfae21</id>
<content type='text'>
[ Upstream commit 4225a398c1352a7a5c14dc07277cb5cc4473983b ]

When the lockdep validator is enabled, it will report the below
warning when we enable a TIPC bearer:

[ INFO: possible irq lock inversion dependency detected ]
---------------------------------------------------------
Possible interrupt unsafe locking scenario:

        CPU0                    CPU1
        ----                    ----
   lock(ptype_lock);
                                local_irq_disable();
                                lock(tipc_net_lock);
                                lock(ptype_lock);
   &lt;Interrupt&gt;
   lock(tipc_net_lock);

  *** DEADLOCK ***

the shortest dependencies between 2nd lock and 1st lock:
  -&gt; (ptype_lock){+.+...} ops: 10 {
[...]
SOFTIRQ-ON-W at:
                      [&lt;c1089418&gt;] __lock_acquire+0x528/0x13e0
                      [&lt;c108a360&gt;] lock_acquire+0x90/0x100
                      [&lt;c1553c38&gt;] _raw_spin_lock+0x38/0x50
                      [&lt;c14651ca&gt;] dev_add_pack+0x3a/0x60
                      [&lt;c182da75&gt;] arp_init+0x1a/0x48
                      [&lt;c182dce5&gt;] inet_init+0x181/0x27e
                      [&lt;c1001114&gt;] do_one_initcall+0x34/0x170
                      [&lt;c17f7329&gt;] kernel_init+0x110/0x1b2
                      [&lt;c155b6a2&gt;] kernel_thread_helper+0x6/0x10
[...]
   ... key      at: [&lt;c17e4b10&gt;] ptype_lock+0x10/0x20
   ... acquired at:
    [&lt;c108a360&gt;] lock_acquire+0x90/0x100
    [&lt;c1553c38&gt;] _raw_spin_lock+0x38/0x50
    [&lt;c14651ca&gt;] dev_add_pack+0x3a/0x60
    [&lt;c8bc18d2&gt;] enable_bearer+0xf2/0x140 [tipc]
    [&lt;c8bb283a&gt;] tipc_enable_bearer+0x1ba/0x450 [tipc]
    [&lt;c8bb3a04&gt;] tipc_cfg_do_cmd+0x5c4/0x830 [tipc]
    [&lt;c8bbc032&gt;] handle_cmd+0x42/0xd0 [tipc]
    [&lt;c148e802&gt;] genl_rcv_msg+0x232/0x280
    [&lt;c148d3f6&gt;] netlink_rcv_skb+0x86/0xb0
    [&lt;c148e5bc&gt;] genl_rcv+0x1c/0x30
    [&lt;c148d144&gt;] netlink_unicast+0x174/0x1f0
    [&lt;c148ddab&gt;] netlink_sendmsg+0x1eb/0x2d0
    [&lt;c1456bc1&gt;] sock_aio_write+0x161/0x170
    [&lt;c1135a7c&gt;] do_sync_write+0xac/0xf0
    [&lt;c11360f6&gt;] vfs_write+0x156/0x170
    [&lt;c11361e2&gt;] sys_write+0x42/0x70
    [&lt;c155b0df&gt;] sysenter_do_call+0x12/0x38
[...]
}
  -&gt; (tipc_net_lock){+..-..} ops: 4 {
[...]
    IN-SOFTIRQ-R at:
                     [&lt;c108953a&gt;] __lock_acquire+0x64a/0x13e0
                     [&lt;c108a360&gt;] lock_acquire+0x90/0x100
                     [&lt;c15541cd&gt;] _raw_read_lock_bh+0x3d/0x50
                     [&lt;c8bb874d&gt;] tipc_recv_msg+0x1d/0x830 [tipc]
                     [&lt;c8bc195f&gt;] recv_msg+0x3f/0x50 [tipc]
                     [&lt;c146a5fa&gt;] __netif_receive_skb+0x22a/0x590
                     [&lt;c146ab0b&gt;] netif_receive_skb+0x2b/0xf0
                     [&lt;c13c43d2&gt;] pcnet32_poll+0x292/0x780
                     [&lt;c146b00a&gt;] net_rx_action+0xfa/0x1e0
                     [&lt;c103a4be&gt;] __do_softirq+0xae/0x1e0
[...]
}

&gt;From the log, we can see three different call chains between
CPU0 and CPU1:

Time 0 on CPU0:

  kernel_init()-&gt;inet_init()-&gt;dev_add_pack()

At time 0, the ptype_lock is held by CPU0 in dev_add_pack();

Time 1 on CPU1:

  tipc_enable_bearer()-&gt;enable_bearer()-&gt;dev_add_pack()

At time 1, tipc_enable_bearer() first holds tipc_net_lock, and then
wants to take ptype_lock to register TIPC protocol handler into the
networking stack.  But the ptype_lock has been taken by dev_add_pack()
on CPU0, so at this time the dev_add_pack() running on CPU1 has to be
busy looping.

Time 2 on CPU0:

  netif_receive_skb()-&gt;recv_msg()-&gt;tipc_recv_msg()

At time 2, an incoming TIPC packet arrives at CPU0, hence
tipc_recv_msg() will be invoked. In tipc_recv_msg(), it first wants
to hold tipc_net_lock.  At the moment, below scenario happens:

On CPU0, below is our sequence of taking locks:

  lock(ptype_lock)-&gt;lock(tipc_net_lock)

On CPU1, our sequence of taking locks looks like:

  lock(tipc_net_lock)-&gt;lock(ptype_lock)

Obviously deadlock may happen in this case.

But please note the deadlock possibly doesn't occur at all when the
first TIPC bearer is enabled.  Before enable_bearer() -- running on
CPU1 does not hold ptype_lock, so the TIPC receive handler (i.e.
recv_msg()) is not registered successfully via dev_add_pack(), so
the tipc_recv_msg() cannot be called by recv_msg() even if a TIPC
message comes to CPU0. But when the second TIPC bearer is
registered, the deadlock can perhaps really happen.

To fix it, we will push the work of registering TIPC protocol
handler into workqueue context. After the change, both paths taking
ptype_lock are always in process contexts, thus, the deadlock should
never occur.

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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>net: ipv6: tcp: fix potential use after free in tcp_v6_do_rcv</title>
<updated>2013-09-14T13:02:10Z</updated>
<author>
<name>Daniel Borkmann</name>
<email>dborkman@redhat.com</email>
</author>
<published>2013-09-03T17:29:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d22586ffdda8938a66e198acff0f2ea64d7ce62e'/>
<id>urn:sha1:d22586ffdda8938a66e198acff0f2ea64d7ce62e</id>
<content type='text'>
[ Upstream commit 3a1c756590633c0e86df606e5c618c190926a0df ]

In tcp_v6_do_rcv() code, when processing pkt options, we soley work
on our skb clone opt_skb that we've created earlier before entering
tcp_rcv_established() on our way. However, only in condition ...

  if (np-&gt;rxopt.bits.rxtclass)
    np-&gt;rcv_tclass = ipv6_get_dsfield(ipv6_hdr(skb));

... we work on skb itself. As we extract every other information out
of opt_skb in ipv6_pktoptions path, this seems wrong, since skb can
already be released by tcp_rcv_established() earlier on. When we try
to access it in ipv6_hdr(), we will dereference freed skb.

[ Bug added by commit 4c507d2897bd9b ("net: implement IP_RECVTOS for
  IP_PKTOPTIONS") ]

Signed-off-by: Daniel Borkmann &lt;dborkman@redhat.com&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Acked-by: Eric Dumazet &lt;edumazet@google.com&gt;
Acked-by: Jiri Benc &lt;jbenc@redhat.com&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>ICMPv6: treat dest unreachable codes 5 and 6 as EACCES, not EPROTO</title>
<updated>2013-09-14T13:02:10Z</updated>
<author>
<name>Jiri Bohac</name>
<email>jbohac@suse.cz</email>
</author>
<published>2013-08-30T09:18:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8708ea2b682963ce30dfd638771e7e4022094a90'/>
<id>urn:sha1:8708ea2b682963ce30dfd638771e7e4022094a90</id>
<content type='text'>
[ Upstream commit 61e76b178dbe7145e8d6afa84bb4ccea71918994 ]

RFC 4443 has defined two additional codes for ICMPv6 type 1 (destination
unreachable) messages:
        5 - Source address failed ingress/egress policy
	6 - Reject route to destination

Now they are treated as protocol error and icmpv6_err_convert() converts them
to EPROTO.

RFC 4443 says:
	"Codes 5 and 6 are more informative subsets of code 1."

Treat codes 5 and 6 as code 1 (EACCES)

Btw, connect() returning -EPROTO confuses firefox, so that fallback to
other/IPv4 addresses does not work:
https://bugzilla.mozilla.org/show_bug.cgi?id=910773

Signed-off-by: Jiri Bohac &lt;jbohac@suse.cz&gt;
Acked-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>net: bridge: convert MLDv2 Query MRC into msecs_to_jiffies for max_delay</title>
<updated>2013-09-14T13:02:10Z</updated>
<author>
<name>Daniel Borkmann</name>
<email>dborkman@redhat.com</email>
</author>
<published>2013-08-29T21:55:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=98fadc18d23f40203ff154d0220692834e0de8f1'/>
<id>urn:sha1:98fadc18d23f40203ff154d0220692834e0de8f1</id>
<content type='text'>
[ Upstream commit 2d98c29b6fb3de44d9eaa73c09f9cf7209346383 ]

While looking into MLDv1/v2 code, I noticed that bridging code does
not convert it's max delay into jiffies for MLDv2 messages as we do
in core IPv6' multicast code.

RFC3810, 5.1.3. Maximum Response Code says:

  The Maximum Response Code field specifies the maximum time allowed
  before sending a responding Report. The actual time allowed, called
  the Maximum Response Delay, is represented in units of milliseconds,
  and is derived from the Maximum Response Code as follows: [...]

As we update timers that work with jiffies, we need to convert it.

Signed-off-by: Daniel Borkmann &lt;dborkman@redhat.com&gt;
Cc: Linus Lüssing &lt;linus.luessing@web.de&gt;
Cc: 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>ipv6: Don't depend on per socket memory for neighbour discovery messages</title>
<updated>2013-09-14T13:02:10Z</updated>
<author>
<name>Thomas Graf</name>
<email>tgraf@suug.ch</email>
</author>
<published>2013-09-03T11:37:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cce0727ab07058c745d1a104d84c4d0e3a100ef9'/>
<id>urn:sha1:cce0727ab07058c745d1a104d84c4d0e3a100ef9</id>
<content type='text'>
[ Upstream commit 25a6e6b84fba601eff7c28d30da8ad7cfbef0d43 ]

Allocating skbs when sending out neighbour discovery messages
currently uses sock_alloc_send_skb() based on a per net namespace
socket and thus share a socket wmem buffer space.

If a netdevice is temporarily unable to transmit due to carrier
loss or for other reasons, the queued up ndisc messages will cosnume
all of the wmem space and will thus prevent from any more skbs to
be allocated even for netdevices that are able to transmit packets.

The number of neighbour discovery messages sent is very limited,
use of alloc_skb() bypasses the socket wmem buffer size enforcement
while the manual call to skb_set_owner_w() maintains the socket
reference needed for the IPv6 output path.

This patch has orginally been posted by Eric Dumazet in a modified
form.

Signed-off-by: Thomas Graf &lt;tgraf@suug.ch&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Cc: Stephen Warren &lt;swarren@wwwdotorg.org&gt;
Cc: Fabio Estevam &lt;festevam@gmail.com&gt;
Tested-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Tested-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Acked-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>ipv6: drop packets with multiple fragmentation headers</title>
<updated>2013-09-14T13:02:10Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-08-16T11:30:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=055c396300ee15d990777841278ba94d2bc7868a'/>
<id>urn:sha1:055c396300ee15d990777841278ba94d2bc7868a</id>
<content type='text'>
[ Upstream commit f46078cfcd77fa5165bf849f5e568a7ac5fa569c ]

It is not allowed for an ipv6 packet to contain multiple fragmentation
headers. So discard packets which were already reassembled by
fragmentation logic and send back a parameter problem icmp.

The updates for RFC 6980 will come in later, I have to do a bit more
research here.

Cc: YOSHIFUJI Hideaki &lt;yoshfuji@linux-ipv6.org&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>ipv6: remove max_addresses check from ipv6_create_tempaddr</title>
<updated>2013-09-14T13:02:09Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-08-16T11:02:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f4cb837d1bdb6e1592523ce76c3f45188d120b4e'/>
<id>urn:sha1:f4cb837d1bdb6e1592523ce76c3f45188d120b4e</id>
<content type='text'>
[ Upstream commit 4b08a8f1bd8cb4541c93ec170027b4d0782dab52 ]

Because of the max_addresses check attackers were able to disable privacy
extensions on an interface by creating enough autoconfigured addresses:

&lt;http://seclists.org/oss-sec/2012/q4/292&gt;

But the check is not actually needed: max_addresses protects the
kernel to install too many ipv6 addresses on an interface and guards
addrconf_prefix_rcv to install further addresses as soon as this limit
is reached. We only generate temporary addresses in direct response of
a new address showing up. As soon as we filled up the maximum number of
addresses of an interface, we stop installing more addresses and thus
also stop generating more temp addresses.

Even if the attacker tries to generate a lot of temporary addresses
by announcing a prefix and removing it again (lifetime == 0) we won't
install more temp addresses, because the temporary addresses do count
to the maximum number of addresses, thus we would stop installing new
autoconfigured addresses when the limit is reached.

This patch fixes CVE-2013-0343 (but other layer-2 attacks are still
possible).

Thanks to Ding Tianhong to bring this topic up again.

Signed-off-by: Hannes Frederic Sowa &lt;hannes@stressinduktion.org&gt;
Cc: Ding Tianhong &lt;dingtianhong@huawei.com&gt;
Cc: George Kargiotakis &lt;kargig@void.gr&gt;
Cc: P J P &lt;ppandit@redhat.com&gt;
Cc: YOSHIFUJI Hideaki &lt;yoshfuji@linux-ipv6.org&gt;
Acked-by: Ding Tianhong &lt;dingtianhong@huawei.com&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>ipv6: don't stop backtracking in fib6_lookup_1 if subtree does not match</title>
<updated>2013-09-14T13:02:09Z</updated>
<author>
<name>Hannes Frederic Sowa</name>
<email>hannes@stressinduktion.org</email>
</author>
<published>2013-08-07T00:34:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7f1322071c591867b963eac2c42643b0dce29bca'/>
<id>urn:sha1:7f1322071c591867b963eac2c42643b0dce29bca</id>
<content type='text'>
[ Upstream commit 3e3be275851bc6fc90bfdcd732cd95563acd982b ]

In case a subtree did not match we currently stop backtracking and return
NULL (root table from fib_lookup). This could yield in invalid routing
table lookups when using subtrees.

Instead continue to backtrack until a valid subtree or node is found
and return this match.

Also remove unneeded NULL check.

Reported-by: Teco Boot &lt;teco@inf-net.nl&gt;
Cc: YOSHIFUJI Hideaki &lt;yoshfuji@linux-ipv6.org&gt;
Cc: David Lamparter &lt;equinox@diac24.net&gt;
Cc: &lt;boutier@pps.univ-paris-diderot.fr&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>tcp: cubic: fix bug in bictcp_acked()</title>
<updated>2013-09-14T13:02:09Z</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2013-08-06T03:05:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6b7f7bf782f38216c7584a21e4189ff637056e56'/>
<id>urn:sha1:6b7f7bf782f38216c7584a21e4189ff637056e56</id>
<content type='text'>
[ Upstream commit cd6b423afd3c08b27e1fed52db828ade0addbc6b ]

While investigating about strange increase of retransmit rates
on hosts ~24 days after boot, Van found hystart was disabled
if ca-&gt;epoch_start was 0, as following condition is true
when tcp_time_stamp high order bit is set.

(s32)(tcp_time_stamp - ca-&gt;epoch_start) &lt; HZ

Quoting Van :

 At initialization &amp; after every loss ca-&gt;epoch_start is set to zero so
 I believe that the above line will turn off hystart as soon as the 2^31
 bit is set in tcp_time_stamp &amp; hystart will stay off for 24 days.
 I think we've observed that cubic's restart is too aggressive without
 hystart so this might account for the higher drop rate we observe.

Diagnosed-by: Van Jacobson &lt;vanj@google.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Neal Cardwell &lt;ncardwell@google.com&gt;
Cc: Yuchung Cheng &lt;ycheng@google.com&gt;
Acked-by: Neal Cardwell &lt;ncardwell@google.com&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>
</feed>
