diff options
Diffstat (limited to 'firefox/musl-sandbox-sched.patch')
| -rw-r--r-- | firefox/musl-sandbox-sched.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/firefox/musl-sandbox-sched.patch b/firefox/musl-sandbox-sched.patch new file mode 100644 index 00000000..87b6e660 --- /dev/null +++ b/firefox/musl-sandbox-sched.patch @@ -0,0 +1,57 @@ +diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp +--- a/security/sandbox/linux/SandboxFilter.cpp ++++ b/security/sandbox/linux/SandboxFilter.cpp +@@ -1759,16 +1759,24 @@ + return Allow(); + case __NR_sched_get_priority_min: + case __NR_sched_get_priority_max: + return Allow(); + case __NR_sched_getparam: +- case __NR_sched_getscheduler: +- case __NR_sched_setscheduler: { ++#if defined(LIBC_GLIBC) ++ case __NR_sched_setscheduler: ++#endif ++ case __NR_sched_getscheduler: { + Arg<pid_t> pid(0); + return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr)); + } + ++#if !defined(LIBC_GLIBC) ++ // For pthread_create(3) on musl; bug 1657849. ++ case __NR_sched_setscheduler: ++ return Allow(); ++#endif ++ + // For clock(3) on older glibcs; bug 1304220. + case __NR_times: + return Allow(); + + // Bug 1372428 +@@ -1950,17 +1958,25 @@ + case __NR_sched_getaffinity: + case __NR_sched_setaffinity: + case __NR_sched_getparam: + case __NR_sched_setparam: + case __NR_sched_getscheduler: ++#if defined(LIBC_GLIBC) + case __NR_sched_setscheduler: ++#endif + case __NR_sched_getattr: + case __NR_sched_setattr: { + Arg<pid_t> pid(0); + return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr)); + } + ++#if !defined(LIBC_GLIBC) ++ // For pthread_create(3) on musl; bug 1657849. ++ case __NR_sched_setscheduler: ++ return Allow(); ++#endif ++ + // The priority bounds are also used, sometimes (bug 1838675): + case __NR_sched_get_priority_min: + case __NR_sched_get_priority_max: + return Allow(); + + |