From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012051.outbound.protection.outlook.com [40.107.200.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5C5643E097 for ; Thu, 30 Jul 2026 13:59:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.200.51 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785419957; cv=fail; b=s7xA6SuaCqjwPZxedGRLUnKgBrzTaTE+tOOSp4P3+gLnYV/4e/bSa6YvlcWZBD0KnG4DLXZlwuTDCMCoPtJ+dHcyNEpi8Pf5P8AJAZv9KznnuVbGI7yvD6b61x6dmU2Jb8EqEfDAvdP4KJidS+PFGTXpFogunb9bQIClKloHrvo= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785419957; c=relaxed/simple; bh=vRya0/2ShPnoUCqMyXprfvU++xrx2tQJonf47BjPyWg=; h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=oBm4q5Y7EWZu8tfsSpCkoXkEcEkEIH7yEbAR+/55QfhD//af4Qv8bp0dVeO/ykdy7cXYfwcnRkyBF5L0qqo9qJsl/fvzky4Vz5+zcBLK0iTXZ8tkBA0yc0FYS23g0VVV18Wbq8c0F2pQtm5fuElzVtpkR+CMafzMPnJjWeWI+yE= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=HmrF2MCi; arc=fail smtp.client-ip=40.107.200.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="HmrF2MCi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lvxWwDxZD405P7F6DCXEg9nRD18zs9FRxAqsqe66OYUFJUNhv154BIC8kBrr+2Leehh40YtbioVIFQgjJoPWpqi+uvz+0mfNPen0xf1amGIfhPTj+sdTvs8f1ZGM9aI/TaUCmx+jm/NtAchg1EHlnjeLX9h87g2TgeTay5gb7+FchnBf/YPgfLxK38jnRaHrUw6ldw6D8VrbtCrd4ausGJ9IyaEtkA9cD+nxZjLLFQCobFrihwZQhm3cf50d3LyOMOJW8zG0/qYABEBq3/7ana4UN8eMElixMmhdhI1jIulmAw86wixQxSrRu8rRwTKRWMDpdp+Ick4pGg1VnOD3ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e/8g+rNGM1PkuXjzlJ0ug0CyS/zH0mbmVnu6iDu6Uzs=; b=dSwhj8i9AU2IIERIQg7tk+pEmiM5OC1BHI2yPw6gzg9yLj6tNl2tYh4Lkc+lwMiHwkXyORoxTzbKdstDbdNFIcH0xMd3dvAdPUjKDDNhuESllGJxH6d1Nn0q/aKaQ05/7fL03DAo5YZddu28s1oeCWfWzduDH2/frxATcIgi0LCvDFjrqxiEYYfzv0zi5m4Gh8IY2HdT+bMfJPnyXLLwEK4CGf8800iEYqd+DFCigWTb1eImFHi018iMycfSuB67mH2F8Aoi+6jIiLPExwoiC31thD+MhgzA79QrBM6c4bMx+F0kx6luhJOQpBoLvoX57B2VRoxNK4xLLZJWhHGPwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e/8g+rNGM1PkuXjzlJ0ug0CyS/zH0mbmVnu6iDu6Uzs=; b=HmrF2MCiOQyGmLJlaPDv8WnrqWHuQqvrKpzlePBlVPQdsAn6kX2QKqVCVT8CwBmZB2JpJNxnox1FQiMjy1F8NFiuP8qEh1lZbk/EW+NrfFUwqC9Ku3WoMLgag0TrByyge1tIMMewx7VFfuK5/CDhJJBCyKfuep6j1jTz5oQViXcHdunHpvVtJ4i5dWeIQZhbL03OEoskstHH3oW/i7PuHo/kdeeEE7L9lm1oEDRmCtSzKUiZHR9lfrnvumhl9I/hSaY497Yae1EKEXsWV8h7WG0aoT8GrHA1JCjqj0E3L3JQUFBi4/5GFhEgK3GmyBI+d5mJCcRV0oFWhkjqSxn2jw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) by SA3PR12MB7860.namprd12.prod.outlook.com (2603:10b6:806:307::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.14; Thu, 30 Jul 2026 13:59:09 +0000 Received: from DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c]) by DM6PR12MB4827.namprd12.prod.outlook.com ([fe80::6261:3040:864b:159c%5]) with mapi id 15.21.0270.012; Thu, 30 Jul 2026 13:59:09 +0000 From: Andrea Righi To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot Cc: Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , Tejun Heo , Patrick Bellasi , linux-kernel@vger.kernel.org Subject: [PATCH v2] sched: Reject policy changes with SCHED_FLAG_KEEP_PARAMS Date: Thu, 30 Jul 2026 15:58:58 +0200 Message-ID: <20260730135858.2460751-1-arighi@nvidia.com> X-Mailer: git-send-email 2.55.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: ZR0P278CA0213.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::19) To DM6PR12MB4827.namprd12.prod.outlook.com (2603:10b6:5:1d6::14) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR12MB4827:EE_|SA3PR12MB7860:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a81e123-9479-4210-f348-08deee42ba19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|23010399003|1800799024|366016|6133799003|10067099003|11063799006|56012099006|18002099003|3023799007; X-Microsoft-Antispam-Message-Info: 2kiwrTUhMPJGMvCRxjTsT1gfL6SnFf6mdVToS23MEhu7Sk7RL9U1q+CnqWRKeC50SR3L5LkPuyKSpk/RYwTQtH7bVKbCP7EACdBA/+RTKg2j6rzuvVbJ0fWMzBQGEFY+7hzxlnsX+1f0utwVkuVtDdrDOrwGHJ+KDGXTmic5jnv+SwS3hagSBAVQFRR3Mh7Z3+PySZ1XDCIXvkNuRGnprGeqNVfStevFTx/hl2QxT5N1RGu/aw9TEzwOmnJ8u/jhb4MscT25u8rH+5iNoJoZq/gXFvgmC0oR5S0+uuJQZsZDBtozm57p5r4DnnM6xlUszrdNCLwHRGXGxpMV0GI1je52lqiHHSRZgCRlbLXF/MPSJa79o/clCllssBxI/IA+ptksfY6uQw2Y2JuzjepWwcHZH4TfL+6VIJMxss9jCPHoB9gM/dBAiEPguzK5yQNuLggFL6eA06Vs/x2+YESK3o9yF6hzDC75Au2xrXo7i1R4kPkxQ4vgrlQ7mTlJx/TvHrBgKSj1gPpQ+pHL04O5rBNFAl4tZB4ierH9+JDOuziMmoHKVZl9c6jZks6bqxJBLpj7EymG4INFsIgEIstE79TAdDBYhlBkgfCqndBmoY8Irg3uBbSz0Ug6eApX+eq8qdBdkCiXhg7AwtNztykrv5/r/8EcOtMsQPHsZHv63Zs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4827.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(23010399003)(1800799024)(366016)(6133799003)(10067099003)(11063799006)(56012099006)(18002099003)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4IENW34QxGmHNp8Z4objA0762fkfp0tU7o+rVKHtlZtLwsQl5w9TStkt3W9X?= =?us-ascii?Q?ZC1ZRn7sdS1Hp3u4Ha6jD6OapHmhebU2Y2D9XEjrCFPiveJ7ZU2KWVSSB/Yc?= =?us-ascii?Q?4WernS78Eezq9H5vti8lunNL1T/rDLgwOkNDa30n7j7CuecOHvIQdm28RC/9?= =?us-ascii?Q?a8cOpOIrzwyGrLCfQ3VaEXCI6oAvjalD3lcjTanc5TgZ+v1rlWYsdJWP/757?= =?us-ascii?Q?2DnCrReL6WgrTyGTtsFxYxIIaFthH1yLHtNfU0myRWlB4Vx2au6/0vrtN1fY?= =?us-ascii?Q?INOjXylj8hwXz8qTmupdnbaDjO36d2yTznGR7QvStCEKMcA2nRfEUwubnbJ5?= =?us-ascii?Q?3eH2AMfQd5fmzijk8CKNoHyKXAtUR7O2WxQjrm5cMR0wr1VNXavRhO/AwhIP?= =?us-ascii?Q?ydbtoPQbasepYJep1KGmP9Sy51P7gjowQcpc1YNGBbChyGoZlNjoKSsFjUpi?= =?us-ascii?Q?QkeeCOdljTbpc0x5glvZIigjQf0UPVSnuGA+qeOHA3B635WuyTWENEIKYphd?= =?us-ascii?Q?vECK2chL93pjbWvRlQCO++tENfqoXPLg33kPjii2IsDcIo9bhsDyVmCv3WVe?= =?us-ascii?Q?ZHE8aj2UJJtLAEUU6mNWtJQEHXyeYzyv3+zo9l9MKSKXF4Vlar/N30CXzdQX?= =?us-ascii?Q?25WZRRZIRkQm9xdl9vyrZDkMLvWfkE0R1o1YEPeqCT9Tos63a6Nhy4XHILgU?= =?us-ascii?Q?9HhOGIZEvuofbs3llL3YQtgVv0kb48sVxRfeAQza+kTgoKKzMhZRWmHwPMjF?= =?us-ascii?Q?/ZKd7k8o21ZnoaoxcF+AGZ/J+CPlc6V48npcKGFAYPI4oAoIi9yEZJysAb9a?= =?us-ascii?Q?wcMaXVb5TG2n1CRYXzH+LOfWYpvhabrhaS00zu5cAEBmX6RvezNlDZ8zaZvO?= =?us-ascii?Q?3bmn/KpAheMXZlomGp7lIEjYgNlQp4qEG8hXhjh0QjKAN7situSkoRwRcBxn?= =?us-ascii?Q?dWXEkRk1w+JAOtX560IysLhscCunzcnsrzx1TWP2r7dlC/bT/D+WSjvInsIp?= =?us-ascii?Q?vqRWkryC2g0qouskqvEJuJvqlkv977KD+kVOjO1ngyyzHItXPyAWQSKZHRPt?= =?us-ascii?Q?IFnktZE8KOYTRFWA9YKzIrcV/gXL7JWjtwUBM+sSWL4Y7Q7j5ULQuE4ttZio?= =?us-ascii?Q?BISOhyhc6tNn8BYH9ff35XYl3HEcVuzPECm5rc9TpnpFnyDPunuBPcq6XZME?= =?us-ascii?Q?T2jcSZgXVSpNT7ch1y8alOeuU3ZtlIjtt0l0sh5lS6sFMmITgjqb4ZTAhqTa?= =?us-ascii?Q?2GMnMLnaIisVgrVfEnPEN5WfSzTLdP5dk2N/Vn8Da8MsquuiCSQ76hDPLoeg?= =?us-ascii?Q?ly3osSwxOMZthsURlNhIwDu8Ka6KvmDPyVdXq/sCvCj74O9mDAsdwyfWR7cI?= =?us-ascii?Q?zVEyPHDSlYIPi6NAI3Cn+om5nIYXTBWtyrtQGSr600N6KrhXrRpaf0qhNHDe?= =?us-ascii?Q?c0cof3SxlsVPhqe1dEEaGI69oMDv9eyO8Ixbuk1lOCufAoEcT3EneQpinYr2?= =?us-ascii?Q?3g1h93kPOuzyOd58/GyGWXj9g7cdnh2TphW7PUgx77hfYdSVstw2/AElYyjD?= =?us-ascii?Q?e5JJ7BMBjyK1sF4adc/jXtZd08HxFbWeJlBuL6JbyLJu3OeFdFCv1E43t3Yg?= =?us-ascii?Q?HihokA0H5IMVk2P15OKK+lPbycI1xZLuO1oYxXIoZ5mbrf9nTzRzzpZKIWQu?= =?us-ascii?Q?/h2+fmyRov7EqaiZjG6dXM/VznZYbKxIgp7gmqdx6V2DnRcoYMvDJWDa2AA1?= =?us-ascii?Q?yEPcBbZDnQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a81e123-9479-4210-f348-08deee42ba19 X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4827.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jul 2026 13:59:09.5247 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qru1n7yJWHYScHrNnbUDjU/lWy74SiFBPQpsuWghev7t1LIDhlcEaWjCo6WWB9zNGgvn2NNIEgpBtidqhtDgiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7860 SCHED_FLAG_KEEP_PARAMS prevents __sched_setscheduler() from applying the requested scheduler parameters, policy and class. However, a different requested policy can still trigger deadline bandwidth accounting and scheduling class callbacks. Reject policy changes with SCHED_FLAG_KEEP_PARAMS while holding the task's rq lock. Also skip deadline bandwidth accounting and class transition callbacks when the guarded scheduler update cannot apply the corresponding changes. This prevents deadline bandwidth from being accounted without changing the task and avoids class callbacks when p->sched_class remains unchanged. Fixes: a509a7cd7974 ("sched/uclamp: Extend sched_setattr() to support utilization clamping") Fixes: 637b0682821b ("sched: Fold sched_class::switch{ing,ed}_{to,from}() into the change pattern") Suggested-by: Peter Zijlstra Cc: K Prateek Nayak Signed-off-by: Andrea Righi --- Changes in v2: - Reject policy changes with SCHED_FLAG_KEEP_PARAMS (Peter Zijlstra) - Perform the policy check under the rq lock to avoid racing with a concurrent policy change - Link to v1: https://lore.kernel.org/all/20260730055011.2267333-1-arighi@nvidia.com/ kernel/sched/syscalls.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c index b215b0ead9a60..8fb8474d0a0ec 100644 --- a/kernel/sched/syscalls.c +++ b/kernel/sched/syscalls.c @@ -645,12 +645,19 @@ int __sched_setscheduler(struct task_struct *p, goto recheck; } + /* KEEP_PARAMS only makes sense if the scheduling policy is unchanged */ + if ((attr->sched_flags & SCHED_FLAG_KEEP_PARAMS) && policy != p->policy) { + retval = -EINVAL; + goto unlock; + } + /* * If setscheduling to SCHED_DEADLINE (or changing the parameters * of a SCHED_DEADLINE task) we need to check if enough bandwidth * is available. */ - if ((dl_policy(policy) || dl_task(p)) && sched_dl_overflow(p, policy, attr)) { + if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS) && + (dl_policy(policy) || dl_task(p)) && sched_dl_overflow(p, policy, attr)) { retval = -EBUSY; goto unlock; } @@ -675,7 +682,7 @@ int __sched_setscheduler(struct task_struct *p, prev_class = p->sched_class; next_class = __setscheduler_class(policy, newprio); - if (prev_class != next_class) + if (!(attr->sched_flags & SCHED_FLAG_KEEP_PARAMS) && prev_class != next_class) queue_flags |= DEQUEUE_CLASS; scoped_guard (sched_change, p, queue_flags) { -- 2.55.0