crush: fix a bug in tree bucket decode
authorIlya Dryomov <idryomov@gmail.com>
Mon, 29 Jun 2015 16:30:23 +0000 (19:30 +0300)
committerDanny Wood <danwood76@gmail.com>
Tue, 29 Jan 2019 13:09:26 +0000 (13:09 +0000)
commit77dc7c590663900d11f25f4c288a25468c4839ad
treec63dfe61386a1d888b635976380d1172eab979b9
parent65d8a9ea43565e289b1304a24eb2e42f9a06a07a
crush: fix a bug in tree bucket decode

commit 82cd003a77173c91b9acad8033fb7931dac8d751 upstream.

struct crush_bucket_tree::num_nodes is u8, so ceph_decode_8_safe()
should be used.  -Wconversion catches this, but I guess it went
unnoticed in all the noise it spews.  The actual problem (at least for
common crushmaps) isn't the u32 -> u8 truncation though - it's the
advancement by 4 bytes instead of 1 in the crushmap buffer.

Fixes: http://tracker.ceph.com/issues/2759

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ceph/osdmap.c