]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit
libceph: check reply num_data_items in setup_request_data()
authorIlya Dryomov <idryomov@gmail.com>
Wed, 17 Oct 2018 12:23:04 +0000 (14:23 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 22 Oct 2018 08:28:23 +0000 (10:28 +0200)
commit98c4bfe9d89b22d7bfddf6469241658920b6fafe
treeae744f24466851329323f80dc69164d1602c82bf
parent0d9c1ab3be4c0187663096a6a084421d0a1e45c6
libceph: check reply num_data_items in setup_request_data()

setup_request_data() adds message data items to both request and reply
messages, but only checks request num_data_items before proceeding with
the loop.  This is wrong because if an op doesn't have any request data
items but has a reply data item (e.g. read), a duplicate data item gets
added to the message on every resend attempt.

This went unnoticed for years but now that message data items are
preallocated, it promptly crashes in ceph_msg_data_add().  Amend the
signature to make it clear that setup_request_data() operates on both
request and reply messages.  Also, remove data_len assert -- we have
another one in prepare_write_message().

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/osd_client.c