View | Details | Raw Unified | Return to bug 117749
Collapse All | Expand All

(-) (-2 / +12 lines)
Line  Link Here
-- linux-2.6.13-15.10/net/xfrm/xfrm_policy.c
Lines 742-748 Link Here
742
	int err;
742
	int err;
743
	u32 genid;
743
	u32 genid;
744
	u16 family = dst_orig->ops->family;
744
	u16 family = dst_orig->ops->family;
745
	unsigned long timeout = jiffies + 60 * HZ;
746
	int loops = 0;
747
745
restart:
748
restart:
749
	if (unlikely(time_after(jiffies, timeout))) {
750
		printk(KERN_NOTICE "xfrm_lookup bailing out after 60 seconds and %d loops\n", loops++);
751
		dump_stack();
752
		err = -EHOSTUNREACH;
753
		goto error_nopol;
754
	}
755
746
	genid = atomic_read(&flow_cache_genid);
756
	genid = atomic_read(&flow_cache_genid);
747
	policy = NULL;
757
	policy = NULL;
748
	if (sk && sk->sk_policy[1])
758
	if (sk && sk->sk_policy[1])
Lines 860-867 Link Here
860
	return 0;
870
	return 0;
861
871
862
error:
872
error:
863
	dst_release(dst_orig);
864
	xfrm_pol_put(policy);
873
	xfrm_pol_put(policy);
874
error_nopol:
875
	dst_release(dst_orig);
865
	*dst_p = NULL;
876
	*dst_p = NULL;
866
	return err;
877
	return err;
867
}
878
}

Return to bug 117749