libceph: fix auth_signature buffer allocation in secure mode
authorIlya Dryomov <idryomov@gmail.com>
Tue, 15 Dec 2020 15:40:59 +0000 (16:40 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 28 Dec 2020 19:34:32 +0000 (20:34 +0100)
auth_signature frame is 68 bytes in plain mode and 96 bytes in
secure mode but we are requesting 68 bytes in both modes.  By luck,
this doesn't actually result in any invalid memory accesses because
the allocation is satisfied out of kmalloc-96 slab and so exactly
96 bytes are allocated, but KASAN rightfully complains.

Fixes: cd1a677cad99 ("libceph, ceph: implement msgr2.1 protocol (crc and secure modes)")
Reported-by: Luis Henriques <lhenriques@suse.de>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/messenger_v2.c

index c1ebb2a..4f938fc 100644 (file)
@@ -1333,7 +1333,8 @@ static int prepare_auth_signature(struct ceph_connection *con)
        void *buf;
        int ret;
 
        void *buf;
        int ret;
 
-       buf = alloc_conn_buf(con, head_onwire_len(SHA256_DIGEST_SIZE, false));
+       buf = alloc_conn_buf(con, head_onwire_len(SHA256_DIGEST_SIZE,
+                                                 con_secure(con)));
        if (!buf)
                return -ENOMEM;
 
        if (!buf)
                return -ENOMEM;