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: Mon, 11 Jan 2010 14:40:34 +0800 From: Xiaotian Feng <dfeng@...hat.com> To: linux-kernel@...r.kernel.org Cc: Xiaotian Feng <dfeng@...hat.com>, Andrew Morton <akpm@...ux-foundation.org>, Michal Schmidt <mschmidt@...hat.com>, David Howells <dhowells@...hat.com>, Serge Hallyn <serue@...ibm.com>, Heiko Carstens <heiko.carstens@...ibm.com>, Frans Pop <elendil@...net.nl> Subject: [RFC PATCH] accouting: account if a task was killed by OOM killer This patch introduces a new accounting flag which is set when a task was killed by OOM killer. taskstats can tell users when a job has been killed by the oomkiller. Signed-off-by: Xiaotian Feng <dfeng@...hat.com> Cc: Andrew Morton <akpm@...ux-foundation.org> Cc: Michal Schmidt <mschmidt@...hat.com> Cc: David Howells <dhowells@...hat.com> Cc: Serge Hallyn <serue@...ibm.com> Cc: Heiko Carstens <heiko.carstens@...ibm.com> Cc: Frans Pop <elendil@...net.nl> --- Documentation/accounting/taskstats-struct.txt | 2 +- include/linux/acct.h | 1 + include/linux/taskstats.h | 2 +- kernel/acct.c | 2 ++ kernel/tsacct.c | 2 ++ 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Documentation/accounting/taskstats-struct.txt b/Documentation/accounting/taskstats-struct.txt index e7512c0..c3cf3cf 100644 --- a/Documentation/accounting/taskstats-struct.txt +++ b/Documentation/accounting/taskstats-struct.txt @@ -45,7 +45,7 @@ struct taskstats { __u32 ac_exitcode; /* Exit status */ /* The accounting flags of a task as defined in <linux/acct.h> - * Defined values are AFORK, ASU, ACOMPAT, ACORE, and AXSIG. + * Defined values are AFORK, ASU, ACOMPAT, ACORE, AXSIG, and AXOOM. */ __u8 ac_flag; /* Record flags */ diff --git a/include/linux/acct.h b/include/linux/acct.h index 882dc72..bbb5d7c 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h @@ -106,6 +106,7 @@ struct acct_v3 #define ACOMPAT 0x04 /* ... used compatibility mode (VAX only not used) */ #define ACORE 0x08 /* ... dumped core */ #define AXSIG 0x10 /* ... was killed by a signal */ +#define AXOOM 0x20 /* ... was killed by OOM killer */ #ifdef __BIG_ENDIAN #define ACCT_BYTEORDER 0x80 /* accounting file is big endian */ diff --git a/include/linux/taskstats.h b/include/linux/taskstats.h index 341dddb..9d57f68 100644 --- a/include/linux/taskstats.h +++ b/include/linux/taskstats.h @@ -47,7 +47,7 @@ struct taskstats { __u32 ac_exitcode; /* Exit status */ /* The accounting flags of a task as defined in <linux/acct.h> - * Defined values are AFORK, ASU, ACOMPAT, ACORE, and AXSIG. + * Defined values are AFORK, ASU, ACOMPAT, ACORE, AXSIG, and AXOOM. */ __u8 ac_flag; /* Record flags */ __u8 ac_nice; /* task_nice */ diff --git a/kernel/acct.c b/kernel/acct.c index a6605ca..5830423 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -632,6 +632,8 @@ void acct_collect(long exitcode, int group_dead) pacct->ac_flag |= ACORE; if (current->flags & PF_SIGNALED) pacct->ac_flag |= AXSIG; + if (test_tsk_thread_flag(current, TIF_MEMDIE)) + pacct->ac_flag |= AXOOM; pacct->ac_utime = cputime_add(pacct->ac_utime, current->utime); pacct->ac_stime = cputime_add(pacct->ac_stime, current->stime); pacct->ac_minflt += current->min_flt; diff --git a/kernel/tsacct.c b/kernel/tsacct.c index 00d59d0..46a816a 100644 --- a/kernel/tsacct.c +++ b/kernel/tsacct.c @@ -52,6 +52,8 @@ void bacct_add_tsk(struct taskstats *stats, struct task_struct *tsk) stats->ac_flag |= ACORE; if (tsk->flags & PF_SIGNALED) stats->ac_flag |= AXSIG; + if (test_tsk_thread_flag(current, TIF_MEMDIE)) + stats->ac_flag |= AXOOM; stats->ac_nice = task_nice(tsk); stats->ac_sched = tsk->policy; stats->ac_pid = tsk->pid; -- 1.6.5.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists