]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - net/xfrm/xfrm_policy.c
xfrm: skip policies marked as dead while rehashing
[thirdparty/kernel/stable.git] / net / xfrm / xfrm_policy.c
index 27b91400022138b827b1e59d20c3b5f4eb02183d..9dcfb7e080e14e610d4ce7f1d803ac9c17f2f2e7 100644 (file)
@@ -610,7 +610,8 @@ static void xfrm_hash_rebuild(struct work_struct *work)
 
        /* re-insert all policies by order of creation */
        list_for_each_entry_reverse(policy, &net->xfrm.policy_all, walk.all) {
-               if (xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
+               if (policy->walk.dead ||
+                   xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
                        /* skip socket policies */
                        continue;
                }