]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
common/buffer: adjust align before calling posix_memalign()
authorIlya Dryomov <idryomov@gmail.com>
Tue, 4 May 2021 13:50:05 +0000 (15:50 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 4 May 2021 20:17:07 +0000 (22:17 +0200)
commitaa31ddf0e70b3b8ef8012e09cb3158f3db4dea1b
tree07b41d9b5f054b255b407e5584dfef86387fe786
parent5f12e85d91543db5cd041ef2d840b8f4b98ce6be
common/buffer: adjust align before calling posix_memalign()

posix_memalign() requires alignment argument to be a multiple of
sizeof(void *).  Since it is an implementation detail of buffer,
it needs to be adjusted there -- buffer consumers have no way of
knowing that passing e.g. align == 4 is incorrect.

One place already does the adjustment, but only for align == 0.
The other just asserts.  Fix both and remove the "power of two"
assertion.  Let posix_memalign() return EINVAL and handle that
by throwing buffer::bad_alloc, as expected by the consumers.

Fixes: https://tracker.ceph.com/issues/50646
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
src/common/buffer.cc