mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
xfrm: add extack to xfrm_init_state
Add a struct extack parameter to xfrm_init_state() and pass it through to __xfrm_init_state(). This allows validation errors detected during state initialization to propagate meaningful error messages back to userspace. xfrm_state_migrate() now passes extack so that errors from the XFRM_MSG_MIGRATE_STATE path are properly reported. Callers without an extack context (af_key, ipcomp4, ipcomp6) pass NULL, preserving their existing behaviour. Reviewed-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: Antony Antony <antony.antony@secunet.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
440bf355d3
commit
231a1744dc
|
|
@ -1774,7 +1774,7 @@ u32 xfrm_replay_seqhi(struct xfrm_state *x, __be32 net_seq);
|
||||||
int xfrm_init_replay(struct xfrm_state *x, struct netlink_ext_ack *extack);
|
int xfrm_init_replay(struct xfrm_state *x, struct netlink_ext_ack *extack);
|
||||||
u32 xfrm_state_mtu(struct xfrm_state *x, int mtu);
|
u32 xfrm_state_mtu(struct xfrm_state *x, int mtu);
|
||||||
int __xfrm_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack);
|
int __xfrm_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack);
|
||||||
int xfrm_init_state(struct xfrm_state *x);
|
int xfrm_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack);
|
||||||
int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type);
|
int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type);
|
||||||
int xfrm_input_resume(struct sk_buff *skb, int nexthdr);
|
int xfrm_input_resume(struct sk_buff *skb, int nexthdr);
|
||||||
int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,
|
int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ static struct xfrm_state *ipcomp_tunnel_create(struct xfrm_state *x)
|
||||||
memcpy(&t->mark, &x->mark, sizeof(t->mark));
|
memcpy(&t->mark, &x->mark, sizeof(t->mark));
|
||||||
t->if_id = x->if_id;
|
t->if_id = x->if_id;
|
||||||
|
|
||||||
if (xfrm_init_state(t))
|
if (xfrm_init_state(t, NULL))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
atomic_set(&t->tunnel_users, 1);
|
atomic_set(&t->tunnel_users, 1);
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ static struct xfrm_state *ipcomp6_tunnel_create(struct xfrm_state *x)
|
||||||
memcpy(&t->mark, &x->mark, sizeof(t->mark));
|
memcpy(&t->mark, &x->mark, sizeof(t->mark));
|
||||||
t->if_id = x->if_id;
|
t->if_id = x->if_id;
|
||||||
|
|
||||||
if (xfrm_init_state(t))
|
if (xfrm_init_state(t, NULL))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
atomic_set(&t->tunnel_users, 1);
|
atomic_set(&t->tunnel_users, 1);
|
||||||
|
|
|
||||||
|
|
@ -1299,7 +1299,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct net *net,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = xfrm_init_state(x);
|
err = xfrm_init_state(x, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2143,7 +2143,7 @@ struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
|
||||||
if (!xc)
|
if (!xc)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (xfrm_init_state(xc) < 0)
|
if (xfrm_init_state(xc, extack) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
/* configure the hardware if offload is requested */
|
/* configure the hardware if offload is requested */
|
||||||
|
|
@ -3238,11 +3238,11 @@ int __xfrm_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack)
|
||||||
|
|
||||||
EXPORT_SYMBOL(__xfrm_init_state);
|
EXPORT_SYMBOL(__xfrm_init_state);
|
||||||
|
|
||||||
int xfrm_init_state(struct xfrm_state *x)
|
int xfrm_init_state(struct xfrm_state *x, struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = __xfrm_init_state(x, NULL);
|
err = __xfrm_init_state(x, extack);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user