]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
buffer: raw_zeros mprotects the zeros
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 4 Sep 2024 09:04:47 +0000 (09:04 +0000)
committerAlex Ainscow <aainscow@uk.ibm.com>
Thu, 4 Sep 2025 21:08:52 +0000 (22:08 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit e928779faa4157cb5f93d87f38c0c188c5ba4257)

src/common/buffer.cc

index ee502e25b204d9de86fddd9efd9ad9462df559e0..6a6a8cbe5ba7539a934d76bcac28895b42b4e3e5 100644 (file)
@@ -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;