summaryrefslogtreecommitdiffhomepage
path: root/test/syscalls/linux/rlimits.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/syscalls/linux/rlimits.cc')
-rw-r--r--test/syscalls/linux/rlimits.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/test/syscalls/linux/rlimits.cc b/test/syscalls/linux/rlimits.cc
index 5a6174d99..7b255d0f6 100644
--- a/test/syscalls/linux/rlimits.cc
+++ b/test/syscalls/linux/rlimits.cc
@@ -29,6 +29,12 @@ TEST(RlimitTest, SetRlimitHigher) {
struct rlimit rl = {};
EXPECT_THAT(getrlimit(RLIMIT_NOFILE, &rl), SyscallSucceeds());
+ // Lower the rlimit first, as it may be equal to /proc/sys/fs/nr_open, in
+ // which case even users with CAP_SYS_RESOURCE can't raise it.
+ rl.rlim_cur--;
+ rl.rlim_max--;
+ ASSERT_THAT(setrlimit(RLIMIT_NOFILE, &rl), SyscallSucceeds());
+
rl.rlim_max++;
EXPECT_THAT(setrlimit(RLIMIT_NOFILE, &rl), SyscallSucceeds());
}