[LTP] [PATCH 1/1] lib: Skip tst_{disable, enable}_oom_protection() for non-root

Petr Vorel pvorel@suse.cz
Tue Dec 21 20:35:00 CET 2021


If needed to set value also for non-root, use set_oom_score_adj().

Fixes: 8a0827766d ("lib: add functions to adjust oom score")

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 include/tst_memutils.h | 11 ++++++++++-
 lib/tst_memutils.c     |  6 ++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/include/tst_memutils.h b/include/tst_memutils.h
index 68a6e37714..e6f946ac0c 100644
--- a/include/tst_memutils.h
+++ b/include/tst_memutils.h
@@ -30,11 +30,15 @@ long long tst_available_mem(void);
  *   echo -1000 >/proc/$PID/oom_score_adj
  * If the pid is 0 which means it will set on current(self) process.
  *
+ * WARNING:
+ *  Do nothing for non-root, because setting value < 0 requires root.
+    If you want to set value also for non-root, use set_oom_score_adj().
+ *
  * Note:
  *  This exported tst_enable_oom_protection function can be used at anywhere
  *  you want to protect, but please remember that if you do enable protection
  *  on a process($PID) that all the children will inherit its score and be
- *  ignored by OOM Killer as well. So that's why tst_disable_oom_protection
+ *  ignored by OOM Killer as well. So that's why tst_disable_oom_protection()
  *  to be used in combination.
  */
 void tst_enable_oom_protection(pid_t pid);
@@ -42,6 +46,11 @@ void tst_enable_oom_protection(pid_t pid);
 /*
  * Disable the OOM protection for the process($PID).
  *   echo 0 >/proc/$PID/oom_score_adj
+ *
+ * WARNING:
+ *  Do nothing for non-root, because it's expected to be cleanup after
+ *  tst_enable_oom_protection(). Use set_oom_score_adj(), if you want to set
+ *  value also for non-root.
  */
 void tst_disable_oom_protection(pid_t pid);
 
diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c
index 4346508d9a..f0695e026a 100644
--- a/lib/tst_memutils.c
+++ b/lib/tst_memutils.c
@@ -126,10 +126,16 @@ static void set_oom_score_adj(pid_t pid, int value)
 
 void tst_enable_oom_protection(pid_t pid)
 {
+	if (geteuid() != 0)
+		return;
+
 	set_oom_score_adj(pid, -1000);
 }
 
 void tst_disable_oom_protection(pid_t pid)
 {
+	if (geteuid() != 0)
+		return;
+
 	set_oom_score_adj(pid, 0);
 }
-- 
2.34.1



More information about the ltp mailing list