lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 12 Feb 2019 11:21:29 +0100 From: Michal Hocko <mhocko@...nel.org> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>, David Rientjes <rientjes@...gle.com>, Johannes Weiner <hannes@...xchg.org>, Linus Torvalds <torvalds@...ux-foundation.org>, Yong-Taek Lee <ytk.lee@...sung.com>, <linux-mm@...ck.org>, LKML <linux-kernel@...r.kernel.org>, Michal Hocko <mhocko@...e.com>, Tetsuo Handa <penguin-kernel@...ove.sakura.ne.jp> Subject: [PATCH] proc, oom: do not report alien mms when setting oom_score_adj From: Michal Hocko <mhocko@...e.com> Tetsuo has reported that creating a thousands of processes sharing MM without SIGHAND (aka alien threads) and setting /proc/<pid>/oom_score_adj will swamp the kernel log and takes ages [1] to finish. This is especially worrisome that all that printing is done under RCU lock and this can potentially trigger RCU stall or softlockup detector. The primary reason for the printk was to catch potential users who might depend on the behavior prior to 44a70adec910 ("mm, oom_adj: make sure processes sharing mm have same view of oom_score_adj") but after more than 2 years without a single report I guess it is safe to simply remove the printk altogether. The next step should be moving oom_score_adj over to the mm struct and remove all the tasks crawling as suggested by [2] [1] http://lkml.kernel.org/r/97fce864-6f75-bca5-14bc-12c9f890e740@i-love.sakura.ne.jp [2] http://lkml.kernel.org/r/20190117155159.GA4087@dhcp22.suse.cz Reported-by: Tetsuo Handa <penguin-kernel@...ove.sakura.ne.jp> Signed-off-by: Michal Hocko <mhocko@...e.com> --- fs/proc/base.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fs/proc/base.c b/fs/proc/base.c index 633a63462573..f5ed9512d193 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1086,10 +1086,6 @@ static int __set_oom_adj(struct file *file, int oom_adj, bool legacy) task_lock(p); if (!p->vfork_done && process_shares_mm(p, mm)) { - pr_info("updating oom_score_adj for %d (%s) from %d to %d because it shares mm with %d (%s). Report if this is unexpected.\n", - task_pid_nr(p), p->comm, - p->signal->oom_score_adj, oom_adj, - task_pid_nr(task), task->comm); p->signal->oom_score_adj = oom_adj; if (!legacy && has_capability_noaudit(current, CAP_SYS_RESOURCE)) p->signal->oom_score_adj_min = (short)oom_adj; -- 2.20.1
Powered by blists - more mailing lists