summaryrefslogtreecommitdiff
path: root/desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch')
-rw-r--r--desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch b/desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch
new file mode 100644
index 0000000000..993cab2491
--- /dev/null
+++ b/desktop/slock/patches/0001-Simplify-the-oom-taming-function.patch
@@ -0,0 +1,60 @@
+From 3abbffa4934a62146e995ee7c2cf3ba50991b4ad Mon Sep 17 00:00:00 2001
+From: FRIGN <dev@frign.de>
+Date: Sun, 14 Feb 2016 01:28:37 +0100
+Subject: [PATCH 1/7] Simplify the oom-taming-function
+
+There really is no need to source a defined variable from a linux
+header. The OOM-rank ranges from -1000 to 1000, so we can safely
+hardcode -1000, which is a sane thing to do given slock is suid and
+we don't want to play around too much here anyway.
+
+On another notice, let's not forget that this still is a shitty
+heuristic. The OOM-killer still can kill us (thus I also changed
+the wording in the error-message. We do not disable the OOM-killer,
+we're just hiding.
+---
+ slock.c | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+diff --git a/slock.c b/slock.c
+index cf49555..3188ff7 100644
+--- a/slock.c
++++ b/slock.c
+@@ -60,28 +60,20 @@ die(const char *errstr, ...)
+
+ #ifdef __linux__
+ #include <fcntl.h>
+-#include <linux/oom.h>
+
+ static void
+ dontkillme(void)
+ {
+ int fd;
+- int length;
+- char value[64];
+
+ fd = open("/proc/self/oom_score_adj", O_WRONLY);
+- if (fd < 0 && errno == ENOENT)
++ if (fd < 0 && errno == ENOENT) {
+ return;
+-
+- /* convert OOM_SCORE_ADJ_MIN to string for writing */
+- length = snprintf(value, sizeof(value), "%d\n", OOM_SCORE_ADJ_MIN);
+-
+- /* bail on truncation */
+- if (length >= sizeof(value))
+- die("buffer too small\n");
+-
+- if (fd < 0 || write(fd, value, length) != length || close(fd) != 0)
+- die("cannot disable the out-of-memory killer for this process (make sure to suid or sgid slock)\n");
++ }
++ if (fd < 0 || write(fd, "-1000\n", (sizeof("-1000\n") - 1)) !=
++ (sizeof("-1000\n") - 1) || close(fd) != 0) {
++ die("can't tame the oom-killer. is suid or sgid set?\n");
++ }
+ }
+ #endif
+
+--
+2.9.2
+