From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59EB918FDBE for ; Tue, 12 May 2026 01:08:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778548111; cv=none; b=O8SURuzBlDXOgzWi3+8a/6ehiURBEwxF98/CSQb13NTIE21DpPAvpzhbmom0LlW9vy0J/nS/vvHRmZJ82piSC1pqQN7hsrbohoDmz+0mxBp82l9c+L7z+uTj6ZiSTankWqkF2VlK6I+AEHPRqxhLWzTDsrckP8T5Sy1e8fl/PIw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778548111; c=relaxed/simple; bh=gYTvsgURl7shF+lIZ8z0Owg8p4eNrAvsnEK+m+NzaU4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=mw+ycxIIcJm9PWZ5OJbeOGFAUZh2GWWuB7RhdWAoLGnt8wQGjRvGLbXLPQJr6p335NpG1EAONTFk4Z9jjhDyui/tKbKzqKDidT6XAFpGaP/KCJEoZI1cLfujqkwDQabvld854B9r+cP/kXgM/A1y1vpnf1Lkhlo1+Q5JJART17U= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mOyYFUC6; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mOyYFUC6" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2ba6485d219so31774065ad.3 for ; Mon, 11 May 2026 18:08:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778548109; x=1779152909; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aILpCgEqT0N8e2IAjrKER7y6CRdisH4VAq5ophgt1vk=; b=mOyYFUC6Kcs6afCkXms7u33EQHlPq8wS7q00RAc152X4RlvTeWje2oYiiBn9AJSEO8 4oXm/mFfTxp4PL2qP+cHMl31RipzboiXE0B0Bq9owjn6ZEBWF+zMheW64mR2+HfZQ+mp F0TYjlRG4m444WW52/39KCpGt8oNb5KGSZ2XgvV7c9kyZINS+DSYvoRSasDcdGhainRg P93IfDbhArWP6b+pAn1g+NI519dQmsRfIPX1WOR+2eigeRWB/nN5PMtnMhsOh0mPK5Om fx220XsvGeSzeNys85iJ4VNBtT51ntgxpE0l/Sa93NBmrlyCoFXXTLQUfvkHzH3muAIH 2O6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778548109; x=1779152909; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=aILpCgEqT0N8e2IAjrKER7y6CRdisH4VAq5ophgt1vk=; b=fUF5MZn8si6WtDulLo0as/pVZrlIZ+Ue1P8e9WWjOMeaZBdrFOO2Su3ufo039Vy62c lWkt69bp/GDGZtcgF5FmUDGugug3PWs8K10nPIA9NdHB0Y9uVBYwMYjZZDjOj7KI27sL kixW7m0QZI9F7BmXKns72Inlq/cexHClK/Ou5SxqDRROG0UJ2vutyoATr5g8xJXF2E9D 9kfYaMwv3nft13AbcL2bddxcXuSJYCrM6Eyqh07iM69BcAI2NQsxbfS9604mXpvOLrZj H75z4JnuD0qfWsRFspbAcVt3wjyS0zPIW5KE/tkzU2QxXuhZb/+1TwspdIijfWNyqKeC 78wQ== X-Forwarded-Encrypted: i=1; AFNElJ+S9osnVWWd9GbxyC4ZrKrRItANa9qEVakRSL6dtzS/hGk2byFxxtYJjzhg3Px4HF6zetyo8g/x77SF8Os=@vger.kernel.org X-Gm-Message-State: AOJu0Yze4JfgdhKzW4sti+80/xglLSUrTv5SkYmdHvWp80/O+TCn3rXG rV6n5tU4Y7rCHmyUWNnJVAuZv57tbrZ8omG8QShudP8slS/FAvvts3x5 X-Gm-Gg: Acq92OFYgPCpkboC6+mPjjV/7zw3dIENkKHO441caCwG/xM3UdpYB68cF+8TLDAxWie UVCde7FXc71jGedpfCdDgumDha/VKysKld45UKKv/0klEzb8he+VZY+K3V+WFRzeUqjuKY+V/NB o/4hRoo5wfWNnD7txoqTMI1WdQ8talj+vLkiS1yRXgmr3o9X3NKQnt5oF5mSgK2yluy6EmZ4yoT cjMJ0Rk8j/3+d85VukcjN2PiQh+ROt9n5mM7yVInnDnUKvlX80ay/d9QhRyGOl+yyM12mw50q8P 8n5MizOHgeYTvR+Gsf/KZJNQ2G/qvDwmcHggm/rFBzCPClqjn1TX4Py0cUVcA44a7Dt7tlSS1Aa MmqYXYMC2DDDulyfQ6V6ebFUQQR//Bzd+o7wQiC8YybQjbotllaOoEtJP0UtTNWExYD65Ul7uxC 5550LAIvBmlj3+8OYCkiCISYbDhNwdMf3A9M+Vr2mmDwh1tgKj5qDZIGlSzDvdRTMyBF32Vvdj/ 72PeGZL/MW+XXWgZcqV9pFB07Lri795N50= X-Received: by 2002:a17:903:2f0d:b0:2bc:c089:ff10 with SMTP id d9443c01a7336-2bcc08a1233mr71808135ad.34.1778548109392; Mon, 11 May 2026 18:08:29 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1d40a65sm116438545ad.20.2026.05.11.18.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 18:08:28 -0700 (PDT) From: Rosen Penev To: sched-ext@lists.linux.dev Cc: Tejun Heo , David Vernet , Andrea Righi , Changwoo Min , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider , K Prateek Nayak , linux-kernel@vger.kernel.org (open list:SCHEDULER) Subject: [PATCH] sched/ext: Use flexible array for exit backtraces Date: Mon, 11 May 2026 18:08:11 -0700 Message-ID: <20260512010811.40754-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Store the fixed-size exit backtrace buffer in the sched_ext exit info allocation instead of allocating it separately. This ties the backtrace buffer lifetime directly to the exit info object and removes a separate allocation failure path. Assisted-by: Codex:GPT-5.5 Signed-off-by: Rosen Penev --- kernel/sched/ext.c | 6 ++---- kernel/sched/ext_internal.h | 8 ++++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 1d7f206941f0..f8d18406cfa6 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -5628,7 +5628,6 @@ static void free_exit_info(struct scx_exit_info *ei) { kvfree(ei->dump); kfree(ei->msg); - kfree(ei->bt); kfree(ei); } @@ -5636,16 +5635,15 @@ static struct scx_exit_info *alloc_exit_info(size_t exit_dump_len) { struct scx_exit_info *ei; - ei = kzalloc_obj(*ei); + ei = kzalloc_flex(*ei, bt, SCX_EXIT_BT_LEN); if (!ei) return NULL; ei->exit_cpu = -1; - ei->bt = kzalloc_objs(ei->bt[0], SCX_EXIT_BT_LEN); ei->msg = kzalloc(SCX_EXIT_MSG_LEN, GFP_KERNEL); ei->dump = kvzalloc(exit_dump_len, GFP_KERNEL); - if (!ei->bt || !ei->msg || !ei->dump) { + if (!ei->msg || !ei->dump) { free_exit_info(ei); return NULL; } diff --git a/kernel/sched/ext_internal.h b/kernel/sched/ext_internal.h index 0ed79bd891c7..9fde7f1eee01 100644 --- a/kernel/sched/ext_internal.h +++ b/kernel/sched/ext_internal.h @@ -80,15 +80,15 @@ struct scx_exit_info { /* textual representation of the above */ const char *reason; - /* backtrace if exiting due to an error */ - unsigned long *bt; - u32 bt_len; - /* informational message */ char *msg; /* debug dump */ char *dump; + + /* backtrace if exiting due to an error */ + u32 bt_len; + unsigned long bt[]; }; /* sched_ext_ops.flags */ -- 2.54.0