diff options
Diffstat (limited to 'desktop/slock/patches/0007-Slightly-safer-OOM-killer-disablement-in-linux.patch')
-rw-r--r-- | desktop/slock/patches/0007-Slightly-safer-OOM-killer-disablement-in-linux.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/desktop/slock/patches/0007-Slightly-safer-OOM-killer-disablement-in-linux.patch b/desktop/slock/patches/0007-Slightly-safer-OOM-killer-disablement-in-linux.patch new file mode 100644 index 0000000000..8fbde2c31d --- /dev/null +++ b/desktop/slock/patches/0007-Slightly-safer-OOM-killer-disablement-in-linux.patch @@ -0,0 +1,45 @@ +From 0edbd2e0164a8c6cbad415e38083469041f29996 Mon Sep 17 00:00:00 2001 +From: David Phillips <dbphillipsnz@gmail.com> +Date: Fri, 19 Jun 2015 23:42:15 +1200 +Subject: [PATCH 7/9] Slightly safer OOM killer disablement in linux + +--- + slock.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/slock.c b/slock.c +index d6053af..b3bee92 100644 +--- a/slock.c ++++ b/slock.c +@@ -60,16 +60,27 @@ 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) + return; +- if (fd < 0 || write(fd, "-1000\n", 6) != 6 || close(fd) != 0) ++ ++ /* 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\n"); + } + #endif +-- +2.6.4 + |