summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2020-10-01 10:40:27 +0200
committerKarel Zak <kzak@redhat.com>2020-11-13 12:09:36 +0100
commit7be85971620b98f08b17ee9051689445837043bf (patch)
treeb75c89a823068aaae7ce05424e2ad85215b7d5c0
parent3007f56695743835c8733f64a2411493215ffd7c (diff)
downloadutil-linux-7be85971620b98f08b17ee9051689445837043bf.tar.gz
chrt: use SCHED_FLAG_RESET_ON_FORK for sched_setattr()
Reviewed by many people, used for years (but probably nobody uses SCHED_DEADLINE with reset-on-fork), but we all missed: - sched_setscheduler() uses SCHED_RESET_ON_FORK (0x40000000) - sched_setattr() uses SCHED_FLAG_RESET_ON_FORK (0x01) Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1883013 Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--schedutils/chrt.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/schedutils/chrt.c b/schedutils/chrt.c
index 299c99221..dbc630fc1 100644
--- a/schedutils/chrt.c
+++ b/schedutils/chrt.c
@@ -123,7 +123,7 @@ struct chrt_ctl {
uint64_t period;
unsigned int all_tasks : 1, /* all threads of the PID */
- reset_on_fork : 1, /* SCHED_RESET_ON_FORK */
+ reset_on_fork : 1, /* SCHED_RESET_ON_FORK or SCHED_FLAG_RESET_ON_FORK */
altered : 1, /* sched_set**() used */
verbose : 1; /* verbose output */
};
@@ -385,9 +385,10 @@ static int set_sched_one(struct chrt_ctl *ctl, pid_t pid)
sa.sched_period = ctl->period;
sa.sched_deadline = ctl->deadline;
-# ifdef SCHED_RESET_ON_FORK
+# ifdef SCHED_FLAG_RESET_ON_FORK
+ /* Don't use SCHED_RESET_ON_FORK for sched_setattr()! */
if (ctl->reset_on_fork)
- sa.sched_flags |= SCHED_RESET_ON_FORK;
+ sa.sched_flags |= SCHED_FLAG_RESET_ON_FORK;
# endif
errno = 0;
return sched_setattr(pid, &sa, 0);