From 5008a5056dc02e60de816c743adeea39fc1bbdaa Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Wed, 4 Sep 2024 09:04:47 +0000 Subject: [PATCH] buffer: raw_zeros mprotects the zeros Signed-off-by: Radoslaw Zarzynski (cherry picked from commit e928779faa4157cb5f93d87f38c0c188c5ba4257) --- src/common/buffer.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/common/buffer.cc b/src/common/buffer.cc index ee502e25b204d..6a6a8cbe5ba75 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; -- 2.39.5