[PATCH 12/18] SUNRPC: Remove wrap/unwrap function pointers from enctype table

From: Chuck Lever

Date: Mon Apr 27 2026 - 10:01:20 EST


From: Chuck Lever <chuck.lever@xxxxxxxxxx>

Every enctype points .wrap and .unwrap at gss_krb5_wrap_v2()
and gss_krb5_unwrap_v2(). As with get_mic/verify_mic, the
indirection dates from when v1 enctypes had different wrap
implementations. Call the functions directly and remove the
pointers from struct gss_krb5_enctype.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---
net/sunrpc/auth_gss/gss_krb5_internal.h | 5 -----
net/sunrpc/auth_gss/gss_krb5_mech.c | 18 ++----------------
2 files changed, 2 insertions(+), 21 deletions(-)

diff --git a/net/sunrpc/auth_gss/gss_krb5_internal.h b/net/sunrpc/auth_gss/gss_krb5_internal.h
index a63f8d465b63..92b0baed920c 100644
--- a/net/sunrpc/auth_gss/gss_krb5_internal.h
+++ b/net/sunrpc/auth_gss/gss_krb5_internal.h
@@ -44,11 +44,6 @@ struct gss_krb5_enctype {
struct xdr_buf *buf, struct page **pages);
u32 (*decrypt)(struct krb5_ctx *kctx, u32 offset, u32 len,
struct xdr_buf *buf, u32 *headskip, u32 *tailskip);
- u32 (*wrap)(struct krb5_ctx *kctx, int offset,
- struct xdr_buf *buf, struct page **pages);
- u32 (*unwrap)(struct krb5_ctx *kctx, int offset, int len,
- struct xdr_buf *buf, unsigned int *slack,
- unsigned int *align);
};

/* krb5_ctx flags definitions */
diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
index 511e19e0e786..d027ddab132f 100644
--- a/net/sunrpc/auth_gss/gss_krb5_mech.c
+++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
@@ -46,9 +46,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
-
.signalg = -1,
.sealalg = -1,
.keybytes = 16,
@@ -73,9 +70,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
-
.signalg = -1,
.sealalg = -1,
.keybytes = 32,
@@ -110,8 +104,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
},
/*
* Camellia-256 with CMAC (RFC 6803)
@@ -134,8 +126,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
},
#endif

@@ -161,8 +151,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
},
/*
* AES-256 with SHA-384 (RFC 8009)
@@ -185,8 +173,6 @@ static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
.encrypt = gss_krb5_aead_encrypt,
.decrypt = gss_krb5_aead_decrypt,

- .wrap = gss_krb5_wrap_v2,
- .unwrap = gss_krb5_unwrap_v2,
},
#endif
};
@@ -631,7 +617,7 @@ static u32 gss_krb5_wrap(struct gss_ctx *gctx, int offset,
{
struct krb5_ctx *kctx = gctx->internal_ctx_id;

- return kctx->gk5e->wrap(kctx, offset, buf, pages);
+ return gss_krb5_wrap_v2(kctx, offset, buf, pages);
}

/**
@@ -653,7 +639,7 @@ static u32 gss_krb5_unwrap(struct gss_ctx *gctx, int offset,
{
struct krb5_ctx *kctx = gctx->internal_ctx_id;

- return kctx->gk5e->unwrap(kctx, offset, len, buf,
+ return gss_krb5_unwrap_v2(kctx, offset, len, buf,
&gctx->slack, &gctx->align);
}


--
2.53.0