Track maximum size of core dump written, presented in /proc/self/limits. Signed-off-by: Topi Miettinen <toiwoton@xxxxxxxxx> --- fs/coredump.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/coredump.c b/fs/coredump.c index 281b768..abedc99 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -784,20 +784,25 @@ int dump_emit(struct coredump_params *cprm, const void *addr, int nr) struct file *file = cprm->file; loff_t pos = file->f_pos; ssize_t n; + int r = 0; + if (cprm->written + nr > cprm->limit) return 0; while (nr) { if (dump_interrupted()) - return 0; + goto err; n = __kernel_write(file, addr, nr, &pos); if (n <= 0) - return 0; + goto err; file->f_pos = pos; cprm->written += n; cprm->pos += n; nr -= n; } - return 1; + r = 1; + err: + bump_rlimit(RLIMIT_CORE, cprm->written); + return r; } EXPORT_SYMBOL(dump_emit); -- 2.8.1 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html