From: Radoslaw Zarzynski Date: Wed, 4 Sep 2024 09:04:47 +0000 (+0000) Subject: buffer: raw_zeros mprotects the zeros X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e928779faa4157cb5f93d87f38c0c188c5ba4257;p=ceph.git buffer: raw_zeros mprotects the zeros Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/common/buffer.cc b/src/common/buffer.cc index ee502e25b204..6a6a8cbe5ba7 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -141,6 +141,19 @@ static ceph::spinlock debug_lock; raw_zeros(char *dataptr, unsigned l, int mempool) : raw_combined(dataptr, l, mempool) { memset(dataptr, 0, l); +#ifndef _WIN32 + if (mprotect(dataptr, l, PROT_READ) != 0) { + ceph_abort_msg("mprotect on raw_zeros failed"); + } +#endif + } + + ~raw_zeros() { +#ifndef _WIN32 + if (mprotect(data, len, PROT_WRITE | PROT_READ) != 0) { + ceph_abort_msg("mprotect on destroing raw_zeros failed"); + } +#endif } static constexpr unsigned ZERO_AREA_NUM_PAGES = 4;