mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
xfrm: move encap and xuo into struct xfrm_migrate
In preparation for an upcoming patch, move the xfrm_encap_tmpl and xfrm_user_offload pointers from separate parameters into struct xfrm_migrate, reducing the parameter count of xfrm_state_migrate_create(), xfrm_state_migrate_install() and xfrm_state_migrate() The fields are placed after the four xfrm_address_t members where the struct is naturally 8-byte aligned, avoiding padding. No functional change. 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
15e5d32de6
commit
1d97daee30
|
|
@ -682,6 +682,8 @@ struct xfrm_migrate {
|
|||
xfrm_address_t old_saddr;
|
||||
xfrm_address_t new_daddr;
|
||||
xfrm_address_t new_saddr;
|
||||
struct xfrm_encap_tmpl *encap;
|
||||
struct xfrm_user_offload *xuo;
|
||||
u8 proto;
|
||||
u8 mode;
|
||||
u16 reserved;
|
||||
|
|
@ -1897,20 +1899,15 @@ struct xfrm_state *xfrm_migrate_state_find(struct xfrm_migrate *m, struct net *n
|
|||
u32 if_id);
|
||||
struct xfrm_state *xfrm_state_migrate_create(struct xfrm_state *x,
|
||||
const struct xfrm_migrate *m,
|
||||
const struct xfrm_encap_tmpl *encap,
|
||||
struct net *net,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack);
|
||||
int xfrm_state_migrate_install(const struct xfrm_state *x,
|
||||
struct xfrm_state *xc,
|
||||
const struct xfrm_migrate *m,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack);
|
||||
struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
|
||||
struct xfrm_migrate *m,
|
||||
struct xfrm_encap_tmpl *encap,
|
||||
struct net *net,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack);
|
||||
int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
|
||||
struct xfrm_migrate *m, int num_bundles,
|
||||
|
|
|
|||
|
|
@ -4680,7 +4680,9 @@ int xfrm_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
|
|||
if ((x = xfrm_migrate_state_find(mp, net, if_id))) {
|
||||
x_cur[nx_cur] = x;
|
||||
nx_cur++;
|
||||
xc = xfrm_state_migrate(x, mp, encap, net, xuo, extack);
|
||||
mp->encap = encap;
|
||||
mp->xuo = xuo;
|
||||
xc = xfrm_state_migrate(x, mp, net, extack);
|
||||
if (xc) {
|
||||
x_new[nx_new] = xc;
|
||||
nx_new++;
|
||||
|
|
|
|||
|
|
@ -1966,7 +1966,6 @@ static inline int clone_security(struct xfrm_state *x, struct xfrm_sec_ctx *secu
|
|||
}
|
||||
|
||||
static struct xfrm_state *xfrm_state_clone_and_setup(struct xfrm_state *orig,
|
||||
const struct xfrm_encap_tmpl *encap,
|
||||
const struct xfrm_migrate *m)
|
||||
{
|
||||
struct net *net = xs_net(orig);
|
||||
|
|
@ -2008,8 +2007,8 @@ static struct xfrm_state *xfrm_state_clone_and_setup(struct xfrm_state *orig,
|
|||
}
|
||||
x->props.calgo = orig->props.calgo;
|
||||
|
||||
if (encap) {
|
||||
x->encap = kmemdup(encap, sizeof(*x->encap), GFP_KERNEL);
|
||||
if (m->encap) {
|
||||
x->encap = kmemdup(m->encap, sizeof(*x->encap), GFP_KERNEL);
|
||||
if (!x->encap)
|
||||
goto error;
|
||||
x->mapping_maxage = orig->mapping_maxage;
|
||||
|
|
@ -2122,14 +2121,12 @@ EXPORT_SYMBOL(xfrm_migrate_state_find);
|
|||
|
||||
struct xfrm_state *xfrm_state_migrate_create(struct xfrm_state *x,
|
||||
const struct xfrm_migrate *m,
|
||||
const struct xfrm_encap_tmpl *encap,
|
||||
struct net *net,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xfrm_state *xc;
|
||||
|
||||
xc = xfrm_state_clone_and_setup(x, encap, m);
|
||||
xc = xfrm_state_clone_and_setup(x, m);
|
||||
if (!xc) {
|
||||
NL_SET_ERR_MSG(extack, "Failed to clone and setup state");
|
||||
return NULL;
|
||||
|
|
@ -2141,7 +2138,7 @@ struct xfrm_state *xfrm_state_migrate_create(struct xfrm_state *x,
|
|||
}
|
||||
|
||||
/* configure the hardware if offload is requested */
|
||||
if (xuo && xfrm_dev_state_add(net, xc, xuo, extack))
|
||||
if (m->xuo && xfrm_dev_state_add(net, xc, m->xuo, extack))
|
||||
goto error;
|
||||
|
||||
return xc;
|
||||
|
|
@ -2155,7 +2152,6 @@ EXPORT_SYMBOL(xfrm_state_migrate_create);
|
|||
int xfrm_state_migrate_install(const struct xfrm_state *x,
|
||||
struct xfrm_state *xc,
|
||||
const struct xfrm_migrate *m,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
if (m->new_family == m->old_family &&
|
||||
|
|
@ -2168,7 +2164,7 @@ int xfrm_state_migrate_install(const struct xfrm_state *x,
|
|||
} else {
|
||||
if (xfrm_state_add(xc) < 0) {
|
||||
NL_SET_ERR_MSG(extack, "Failed to add migrated state");
|
||||
if (xuo)
|
||||
if (m->xuo)
|
||||
xfrm_dev_state_delete(xc);
|
||||
xc->km.state = XFRM_STATE_DEAD;
|
||||
xfrm_state_put(xc);
|
||||
|
|
@ -2182,20 +2178,18 @@ EXPORT_SYMBOL(xfrm_state_migrate_install);
|
|||
|
||||
struct xfrm_state *xfrm_state_migrate(struct xfrm_state *x,
|
||||
struct xfrm_migrate *m,
|
||||
struct xfrm_encap_tmpl *encap,
|
||||
struct net *net,
|
||||
struct xfrm_user_offload *xuo,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct xfrm_state *xc;
|
||||
|
||||
xc = xfrm_state_migrate_create(x, m, encap, net, xuo, extack);
|
||||
xc = xfrm_state_migrate_create(x, m, net, extack);
|
||||
if (!xc)
|
||||
return NULL;
|
||||
|
||||
xfrm_migrate_sync(xc, x);
|
||||
|
||||
if (xfrm_state_migrate_install(x, xc, m, xuo, extack) < 0)
|
||||
if (xfrm_state_migrate_install(x, xc, m, extack) < 0)
|
||||
return NULL;
|
||||
|
||||
return xc;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user