Simplify the oom-taming-function - slock - simple X display locker utility | |
git clone git://git.suckless.org/slock | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3abbffa4934a62146e995ee7c2cf3ba50991b4ad | |
parent 6a52a85a1ac87b29048863d599a8b0f0ee712482 | |
Author: FRIGN <[email protected]> | |
Date: Sun, 14 Feb 2016 01:28:37 +0100 | |
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. | |
Diffstat: | |
M slock.c | 20 ++++++-------------- | |
1 file changed, 6 insertions(+), 14 deletions(-) | |
--- | |
diff --git 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 … | |
+ } | |
+ 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 | |