diff options
author | Tobias Koch <tobias.koch@nonterra.com> | 2020-03-05 21:24:00 +0100 |
---|---|---|
committer | Laurent Vivier <laurent@vivier.eu> | 2020-03-20 15:51:54 +0100 |
commit | 055d92f8673c9e2bc284a5976e69664c87f18cae (patch) | |
tree | 96dbdb7026a55afa36ad09eb4decc6d6ed064e50 | |
parent | e0d1673d39c1768f5372a43771d3776354eb3f96 (diff) |
linux-user: do prlimit selectively
Analogous to what commit 5dfa88f7 did for setrlimit, this commit
selectively ignores limits for memory-related resources in prlimit64
calls. This is to prevent too restrictive limits from causing QEMU
itself to malfunction.
Signed-off-by: Tobias Koch <tobias.koch@nonterra.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20200305202400.27574-1-tobias.koch@nonterra.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r-- | linux-user/syscall.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8d27d10807..4f2f9eb12b 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -11871,7 +11871,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, struct target_rlimit64 *target_rnew, *target_rold; struct host_rlimit64 rnew, rold, *rnewp = 0; int resource = target_to_host_resource(arg2); - if (arg3) { + + if (arg3 && (resource != RLIMIT_AS && + resource != RLIMIT_DATA && + resource != RLIMIT_STACK)) { if (!lock_user_struct(VERIFY_READ, target_rnew, arg3, 1)) { return -TARGET_EFAULT; } |