Merge branch 'ipv6_percpu_rt_deadlock'
authorDavid S. Miller <davem@davemloft.net>
Mon, 17 Aug 2015 21:28:04 +0000 (14:28 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Aug 2015 21:28:04 +0000 (14:28 -0700)
commit1f979b117b17978b70f20bd981f0791012b1cddf
treea2a8f4fa5c5237c7c27ce41e1c1537ee3e043ed8
parent776829de90c5972895db398993ddfa9417ff8b01
parent9c7370a166b4e157137bfbfe2ad296d57147547c
Merge branch 'ipv6_percpu_rt_deadlock'

Martin KaFai Lau says:

====================
ipv6: Fix a potential deadlock when creating pcpu rt

v1 -> v2:
A minor change in the commit message of patch 2.

This patch series fixes a potential deadlock when creating a pcpu rt.
It happens when dst_alloc() decided to run gc. Something like this:

read_lock(&table->tb6_lock);
ip6_rt_pcpu_alloc()
=> dst_alloc()
=> ip6_dst_gc()
=> write_lock(&table->tb6_lock); /* oops */

Patch 1 and 2 are some prep works.
Patch 3 is the fix.

Original report: https://bugzilla.kernel.org/show_bug.cgi?id=102291
====================

Signed-off-by: David S. Miller <davem@davemloft.net>