Patch "libceph: rename and align ceph_x_authorizer::reply_buf" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
libceph: rename and align ceph_x_authorizer::reply_buf
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
libceph-rename-and-align-ceph_x_authorizer-reply_buf.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7882a26d2e2e520099e2961d5e2e870f8e4172dcMon Sep 17 00:00:00 2001
From: Ilya Dryomov <[email protected]>
Date: Fri, 2 Dec 2016 16:35:07 +0100
Subject: libceph: rename and align ceph_x_authorizer::reply_buf
From: Ilya Dryomov <[email protected]>
commit 7882a26d2e2e520099e2961d5e2e870f8e4172dc upstream.
It's going to be used as a temporary buffer for in-place en/decryption with ceph_crypt() instead of on-stack buffers, so rename to enc_buf. Ensure alignment to avoid GFP_ATOMIC allocations in the crypto stack.
--- net/ceph/auth_x.c | 10 +++++----- net/ceph/auth_x.h | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-)
net/ceph/auth_x.c +5 -5
@@ -603,8 +603,8 @@ static int ceph_x_create_authorizer( auth->authorizer = (struct ceph_authorizer *) au; auth->authorizer_buf = au->buf->vec.iov_base; auth->authorizer_buf_len = au->buf->vec.iov_len; - auth->authorizer_reply_buf = au->reply_buf; - auth->authorizer_reply_buf_len =sizeof (au->reply_buf); + auth->authorizer_reply_buf = au->enc_buf; + auth->authorizer_reply_buf_len =CEPHX_AU_ENC_BUF_LEN ; auth->sign_message = ac->ops->sign_message; auth->check_message_signature = ac->ops->check_message_signature;
@@ -638,10 +638,10 @@ static int ceph_x_verify_authorizer_replint ret =0 ;struct ceph_x_authorize_reply reply;void *preply = &reply; -void *p = au->reply_buf; -void *end = p +sizeof (au->reply_buf); +void *p = au->enc_buf; - ret =ceph_x_decrypt (&au->session_key, &p, end, &preply,sizeof (reply)); + ret =ceph_x_decrypt (&au->session_key, &p, p +CEPHX_AU_ENC_BUF_LEN , + &preply,sizeof (reply));if (ret <0 )return ret;if (ret !=sizeof (reply))
net/ceph/auth_x.h +2 -1
@@ -24,6 +24,7 @@ struct ceph_x_ticket_handler {unsigned long renew_after, expires; }; +#define CEPHX_AU_ENC_BUF_LEN 128/* big enough for encrypted blob */ struct ceph_x_authorizer {struct ceph_authorizer base;
@@ -32,7 +33,7 @@ struct ceph_x_authorizer {unsigned int service;u64 nonce;u64 secret_id; -char reply_buf[128 ];/* big enough for encrypted blob */ +char enc_buf[CEPHX_AU_ENC_BUF_LEN ]__aligned(8) ; };struct ceph_x_info {
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/libceph-switch-ceph_x_decrypt-to-ceph_crypt.patch queue-4.9/libceph-introduce-ceph_x_encrypt_offset.patch queue-4.9/libceph-rename-and-align-ceph_x_authorizer-reply_buf.patch queue-4.9/libceph-ceph_x_encrypt_buflen-takes-in_len.patch queue-4.9/libceph-introduce-ceph_crypt-for-in-place-en-decryption.patch queue-4.9/libceph-old_key-in-process_one_ticket-is-redundant.patch queue-4.9/libceph-tweak-calcu_signature-a-little.patch queue-4.9/libceph-remove-now-unused-ceph_-en-de-crypt-functions.patch queue-4.9/ceph-fix-bad-endianness-handling-in-parse_reply_info_extra.patch queue-4.9/libceph-switch-ceph_x_encrypt-to-ceph_crypt.patch