Re: [PATCH] libceph: Remove obsolete session key alignment logic

From: Ilya Dryomov

Date: Mon Mar 16 2026 - 06:37:33 EST


On Sat, Mar 14, 2026 at 10:26 PM Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
>
> Since the call to crypto_shash_setkey() was replaced with
> hmac_sha256_preparekey() which doesn't allocate memory regardless of the
> alignment of the input key, remove the session key alignment logic from
> process_auth_done(). Also remove the inclusion of crypto/hash.h, which
> is no longer needed since crypto_shash is no longer used.
>
> Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> ---
> net/ceph/messenger_v2.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/net/ceph/messenger_v2.c b/net/ceph/messenger_v2.c
> index 50f65820f623f..865a9221315b0 100644
> --- a/net/ceph/messenger_v2.c
> +++ b/net/ceph/messenger_v2.c
> @@ -6,11 +6,10 @@
> */
>
> #include <linux/ceph/ceph_debug.h>
>
> #include <crypto/aead.h>
> -#include <crypto/hash.h>
> #include <crypto/sha2.h>
> #include <crypto/utils.h>
> #include <linux/bvec.h>
> #include <linux/crc32c.h>
> #include <linux/net.h>
> @@ -2350,20 +2349,18 @@ static int process_auth_reply_more(struct ceph_connection *con,
> pr_err("failed to decode auth_reply_more\n");
> return -EINVAL;
> }
>
> /*
> - * Align session_key and con_secret to avoid GFP_ATOMIC allocation
> - * inside crypto_shash_setkey() and crypto_aead_setkey() called from
> - * setup_crypto(). __aligned(16) isn't guaranteed to work for stack
> + * Align con_secret to avoid GFP_ATOMIC allocation inside crypto_aead_setkey()
> + * called from setup_crypto(). __aligned(16) isn't guaranteed to work for stack
> * objects, so do it by hand.
> */
> static int process_auth_done(struct ceph_connection *con, void *p, void *end)
> {
> - u8 session_key_buf[CEPH_MAX_KEY_LEN + 16];
> + u8 session_key[CEPH_MAX_KEY_LEN];
> u8 con_secret_buf[CEPH_MAX_CON_SECRET_LEN + 16];
> - u8 *session_key = PTR_ALIGN(&session_key_buf[0], 16);
> u8 *con_secret = PTR_ALIGN(&con_secret_buf[0], 16);
> int session_key_len, con_secret_len;
> int payload_len;
> u64 global_id;
> int ret;
> @@ -2413,11 +2410,11 @@ static int process_auth_done(struct ceph_connection *con, void *p, void *end)
> }
>
> con->state = CEPH_CON_S_V2_AUTH_SIGNATURE;
>
> out:
> - memzero_explicit(session_key_buf, sizeof(session_key_buf));
> + memzero_explicit(session_key, sizeof(session_key));
> memzero_explicit(con_secret_buf, sizeof(con_secret_buf));
> return ret;
>
> bad:
> pr_err("failed to decode auth_done\n");
>
> base-commit: 1c9982b4961334c1edb0745a04cabd34bc2de675
> --
> 2.53.0
>

Applied.

Thanks,

Ilya