summaryrefslogtreecommitdiffstats
path: root/net/ipv4/ip_options.c
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2019-01-04 14:17:05 +0100
committerSteffen Klassert <steffen.klassert@secunet.com>2019-01-09 13:58:23 +0100
commit12750abad517a991c4568969bc748db302ab52cd (patch)
treed5a896fc8490185aee1e73bc7ab13c58d8059c92 /net/ipv4/ip_options.c
parentselftests: xfrm: alter htresh to trigger move of policies to hash table (diff)
downloadlinux-12750abad517a991c4568969bc748db302ab52cd.tar.xz
linux-12750abad517a991c4568969bc748db302ab52cd.zip
xfrm: policy: fix infinite loop when merging src-nodes
With very small change to test script we can trigger softlockup due to bogus assignment of 'p' (policy to be examined) on restart. Previously the two to-be-merged nodes had same address/prefixlength pair, so no erase/reinsert was necessary, we only had to append the list from node a to b. If prefix lengths are different, the node has to be deleted and re-inserted into the tree, with the updated prefix length. This was broken; due to bogus update to 'p' this loops forever. Add a 'restart' label and use that instead. While at it, don't perform the unneeded reinserts of the policies that are already sorted into the 'new' node. A previous patch in this series made xfrm_policy_inexact_list_reinsert() use the relative position indicator to sort policies according to age in case priorities are identical. Fixes: 6ac098b2a9d30 ("xfrm: policy: add 2nd-level saddr trees for inexact policies") Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/ipv4/ip_options.c')
0 files changed, 0 insertions, 0 deletions