|
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 |
} |