Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-3.6
Conflicts: drivers/net/benet/be_main.c
This commit is contained in:
@@ -1407,6 +1407,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
|
||||
struct net *net = xp_net(policy);
|
||||
unsigned long now = jiffies;
|
||||
struct net_device *dev;
|
||||
struct xfrm_mode *inner_mode;
|
||||
struct dst_entry *dst_prev = NULL;
|
||||
struct dst_entry *dst0 = NULL;
|
||||
int i = 0;
|
||||
@@ -1437,6 +1438,17 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
|
||||
goto put_states;
|
||||
}
|
||||
|
||||
if (xfrm[i]->sel.family == AF_UNSPEC) {
|
||||
inner_mode = xfrm_ip2inner_mode(xfrm[i],
|
||||
xfrm_af2proto(family));
|
||||
if (!inner_mode) {
|
||||
err = -EAFNOSUPPORT;
|
||||
dst_release(dst);
|
||||
goto put_states;
|
||||
}
|
||||
} else
|
||||
inner_mode = xfrm[i]->inner_mode;
|
||||
|
||||
if (!dst_prev)
|
||||
dst0 = dst1;
|
||||
else {
|
||||
@@ -1465,7 +1477,7 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
|
||||
dst1->lastuse = now;
|
||||
|
||||
dst1->input = dst_discard;
|
||||
dst1->output = xfrm[i]->outer_mode->afinfo->output;
|
||||
dst1->output = inner_mode->afinfo->output;
|
||||
|
||||
dst1->next = dst_prev;
|
||||
dst_prev = dst1;
|
||||
|
@@ -535,6 +535,9 @@ int xfrm_init_replay(struct xfrm_state *x)
|
||||
replay_esn->bmp_len * sizeof(__u32) * 8)
|
||||
return -EINVAL;
|
||||
|
||||
if ((x->props.flags & XFRM_STATE_ESN) && replay_esn->replay_window == 0)
|
||||
return -EINVAL;
|
||||
|
||||
if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)
|
||||
x->repl = &xfrm_replay_esn;
|
||||
else
|
||||
|
Reference in New Issue
Block a user