diff options
Diffstat (limited to 'testing/slock/safer-oom-killer-disablement.patch')
-rw-r--r-- | testing/slock/safer-oom-killer-disablement.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/testing/slock/safer-oom-killer-disablement.patch b/testing/slock/safer-oom-killer-disablement.patch new file mode 100644 index 0000000000..276e7d5ef4 --- /dev/null +++ b/testing/slock/safer-oom-killer-disablement.patch @@ -0,0 +1,30 @@ +--- slock-1.2.orig/slock.c ++++ slock-1.2/slock.c +@@ -48,15 +48,26 @@ + + #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 |