Bug #50646
closedfix 32-bit/64-bit server/client interoperability under msgr2
0%
Description
Under msgr2, each message segment has a 16-bit align field. It is set to sizeof(void *) for header, front and middle segments and to PAGE_SIZE for data segment.
A 32-bit server/client would set it to 4 and if the other side is 64-bit, it faults upon receiving the first frame. The problem is posix_memalign(), which requires its alignment argument to be a multiple of sizeof(void *) and returns EINVAL otherwise. ProtocolV2 passes align to buffer::create_aligned() unmodified and is right to do so -- posix_memalign() is hidden deep in the buffer/bufferlist machinery.
This has been reported at least twice:
https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1746917.html
https://github.com/ceph/ceph-csi/issues/2048
Updated by Ilya Dryomov almost 3 years ago
- Status changed from In Progress to Fix Under Review
- Pull request ID set to 41143
Updated by Ilya Dryomov almost 3 years ago
- Backport set to nautilus,octopus,pacific
Updated by Kefu Chai almost 3 years ago
- Status changed from Fix Under Review to Pending Backport
Updated by Backport Bot almost 3 years ago
- Copied to Backport #50698: pacific: fix 32-bit/64-bit server/client interoperability under msgr2 added
Updated by Backport Bot almost 3 years ago
- Copied to Backport #50699: octopus: fix 32-bit/64-bit server/client interoperability under msgr2 added
Updated by Backport Bot almost 3 years ago
- Copied to Backport #50700: nautilus: fix 32-bit/64-bit server/client interoperability under msgr2 added
Updated by Loïc Dachary almost 3 years ago
- Status changed from Pending Backport to Resolved
While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".