chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
udev: reset /proc/self/oom_score_adj in worker processes
[elogind.git]
/
src
/
udev
/
udevd.c
diff --git
a/src/udev/udevd.c
b/src/udev/udevd.c
index 8ad1eccac14a573eef077bdc844d64a3053248db..2ac9fde04914508e9617eb41f8a79d9fc2fd2e98 100644
(file)
--- a/
src/udev/udevd.c
+++ b/
src/udev/udevd.c
@@
-262,6
+262,9
@@
static void worker_new(struct event *event)
/* request TERM signal if parent exits */
prctl(PR_SET_PDEATHSIG, SIGTERM);
/* request TERM signal if parent exits */
prctl(PR_SET_PDEATHSIG, SIGTERM);
+ /* reset OOM score, we only protect the main daemon */
+ write_one_line_file("/proc/self/oom_score_adj", "0");
+
for (;;) {
struct udev_event *udev_event;
struct worker_message msg;
for (;;) {
struct udev_event *udev_event;
struct worker_message msg;
@@
-1230,7
+1233,6
@@
int main(int argc, char *argv[])
if (daemonize) {
pid_t pid;
if (daemonize) {
pid_t pid;
- int fd;
pid = fork();
switch (pid) {
pid = fork();
switch (pid) {
@@
-1247,11
+1249,7
@@
int main(int argc, char *argv[])
setsid();
setsid();
- fd = open("/proc/self/oom_score_adj", O_RDWR|O_CLOEXEC);
- if (fd >= 0) {
- write(fd, "-1000", 5);
- close(fd);
- }
+ write_one_line_file("/proc/self/oom_score_adj", "-1000");
} else {
sd_notify(1, "READY=1");
}
} else {
sd_notify(1, "READY=1");
}