mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Merge commit 'sebastian/mlockall'
This commit is contained in:
commit
51377ae1bb
@ -2297,30 +2297,18 @@ tor_set_max_memlock(void)
|
||||
*/
|
||||
|
||||
struct rlimit limit;
|
||||
int ret;
|
||||
|
||||
/* Do we want to report current limits first? This is not really needed. */
|
||||
ret = getrlimit(RLIMIT_MEMLOCK, &limit);
|
||||
if (ret == -1) {
|
||||
log_warn(LD_GENERAL, "Could not get RLIMIT_MEMLOCK: %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* RLIM_INFINITY is -1 on some platforms. */
|
||||
limit.rlim_cur = RLIM_INFINITY;
|
||||
limit.rlim_max = RLIM_INFINITY;
|
||||
|
||||
ret = setrlimit(RLIMIT_MEMLOCK, &limit);
|
||||
if (ret == -1) {
|
||||
if (setrlimit(RLIMIT_MEMLOCK, &limit) == -1) {
|
||||
if (errno == EPERM) {
|
||||
log_warn(LD_GENERAL, "You appear to lack permissions to change memory "
|
||||
"limits. Are you root?");
|
||||
log_warn(LD_GENERAL, "Unable to raise RLIMIT_MEMLOCK: %s",
|
||||
strerror(errno));
|
||||
} else {
|
||||
log_warn(LD_GENERAL, "Could not raise RLIMIT_MEMLOCK: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
log_warn(LD_GENERAL, "Unable to raise RLIMIT_MEMLOCK: %s",
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2353,12 +2341,11 @@ tor_mlockall(void)
|
||||
|
||||
#if defined(HAVE_MLOCKALL) && HAVE_DECL_MLOCKALL && defined(RLIMIT_MEMLOCK)
|
||||
if (tor_set_max_memlock() == 0) {
|
||||
/* Perhaps we only want to log this if we're in a verbose mode? */
|
||||
log_notice(LD_GENERAL, "RLIMIT_MEMLOCK is now set to RLIM_INFINITY.");
|
||||
log_debug(LD_GENERAL, "RLIMIT_MEMLOCK is now set to RLIM_INFINITY.");
|
||||
}
|
||||
|
||||
if (mlockall(MCL_CURRENT|MCL_FUTURE) == 0) {
|
||||
log_notice(LD_GENERAL, "Insecure OS paging is effectively disabled.");
|
||||
log_info(LD_GENERAL, "Insecure OS paging is effectively disabled.");
|
||||
return 0;
|
||||
} else {
|
||||
if (errno == ENOSYS) {
|
||||
|
Loading…
Reference in New Issue
Block a user