[tip: sched/urgent] sched/deadline: Reject SCHED_DEADLINE on exited tasks

From: tip-bot2 for Juri Lelli

Date: Tue Nov 03 2026 - 08:47:22 EST


The following commit has been merged into the sched/urgent branch of tip:

Commit-ID: a2b67e904401858d9f0ff6a0485c2fab506cc1bf
Gitweb: https://git.kernel.org/tip/a2b67e904401858d9f0ff6a0485c2fab506cc1bf
Author: Juri Lelli <juri.lelli@xxxxxxxxxx>
AuthorDate: Tue, 03 Nov 2026 12:26:32 +01:00
Committer: Ingo Molnar <mingo@xxxxxxxxxx>
CommitterDate: Tue, 03 Nov 2026 14:18:06 +01:00

sched/deadline: Reject SCHED_DEADLINE on exited tasks

sched_setattr(SCHED_DEADLINE) on a zombie task succeeds and charges
total_bw via sched_dl_overflow(), but the task has already done its
final schedule() and will never run again. Nothing releases the reserved
bandwidth. Repeating this fills total_bw to the admission cap, after
which sched_setattr(SCHED_DEADLINE) and CPU offline fail with -EBUSY.

Reject sched_setattr(SCHED_DEADLINE) on exited tasks with -ESRCH.

Reported-by: Weiheng Qiu <weihengqiuu@xxxxxxxxx>
Signed-off-by: Juri Lelli <juri.lelli@xxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Link: https://patch.msgid.link/20261103-b4-sched-dl-bw-fixes-v1-4-dd761fe005b4@xxxxxxxxxx
Closes: https://lore.kernel.org/all/3f6e6c87-645b-45fd-8fc6-8da5bc5b82d8@xxxxxxxxx/
---
kernel/sched/syscalls.c | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c
index be351f8..3fa447a 100644
--- a/kernel/sched/syscalls.c
+++ b/kernel/sched/syscalls.c
@@ -584,6 +584,16 @@ recheck:
goto unlock;

/*
+ * Reject SCHED_DEADLINE on exited tasks. A zombie will never be
+ * scheduled again, so sched_dl_overflow() would charge total_bw
+ * that nothing will ever release.
+ */
+ if (dl_policy(policy) && p->exit_state) {
+ retval = -ESRCH;
+ goto unlock;
+ }
+
+ /*
* If not changing anything there's no need to proceed further,
* but store a possible modification of reset_on_fork.
*/