lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <173546390206.399.11436272113063109060.tip-bot2@tip-bot2>
Date: Sun, 29 Dec 2024 09:18:21 -0000
From: "tip-bot2 for Chen Ridong" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Chen Ridong <chenridong@...wei.com>,
 "Peter Zijlstra (Intel)" <peterz@...radead.org>,
 Ingo Molnar <mingo@...nel.org>, Tejun Heo <tj@...nel.org>, mkoutny@...e.com,
 x86@...nel.org, linux-kernel@...r.kernel.org
Subject:
 [tip: sched/urgent] freezer, sched: Report frozen tasks as 'D' instead of 'R'

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

Commit-ID:     f718faf3940e95d5d34af9041f279f598396ab7d
Gitweb:        https://git.kernel.org/tip/f718faf3940e95d5d34af9041f279f598396ab7d
Author:        Chen Ridong <chenridong@...wei.com>
AuthorDate:    Tue, 17 Dec 2024 00:48:18 
Committer:     Ingo Molnar <mingo@...nel.org>
CommitterDate: Sun, 29 Dec 2024 10:14:20 +01:00

freezer, sched: Report frozen tasks as 'D' instead of 'R'

Before commit:

  f5d39b020809 ("freezer,sched: Rewrite core freezer logic")

the frozen task stat was reported as 'D' in cgroup v1.

However, after rewriting the core freezer logic, the frozen task stat is
reported as 'R'. This is confusing, especially when a task with stat of
'S' is frozen.

This bug can be reproduced with these steps:

	$ cd /sys/fs/cgroup/freezer/
	$ mkdir test
	$ sleep 1000 &
	[1] 739         // task whose stat is 'S'
	$ echo 739 > test/cgroup.procs
	$ echo FROZEN > test/freezer.state
	$ ps -aux | grep 739
	root     739  0.1  0.0   8376  1812 pts/0    R    10:56   0:00 sleep 1000

As shown above, a task whose stat is 'S' was changed to 'R' when it was
frozen.

To solve this regression, simply maintain the same reported state as
before the rewrite.

[ mingo: Enhanced the changelog and comments ]

Fixes: f5d39b020809 ("freezer,sched: Rewrite core freezer logic")
Signed-off-by: Chen Ridong <chenridong@...wei.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
Signed-off-by: Ingo Molnar <mingo@...nel.org>
Acked-by: Tejun Heo <tj@...nel.org>
Acked-by: Michal Koutný <mkoutny@...e.com>
Link: https://lore.kernel.org/r/20241217004818.3200515-1-chenridong@huaweicloud.com
---
 include/linux/sched.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index 66b311f..64934e0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1637,8 +1637,9 @@ static inline unsigned int __task_state_index(unsigned int tsk_state,
 	 * We're lying here, but rather than expose a completely new task state
 	 * to userspace, we can make this appear as if the task has gone through
 	 * a regular rt_mutex_lock() call.
+	 * Report frozen tasks as uninterruptible.
 	 */
-	if (tsk_state & TASK_RTLOCK_WAIT)
+	if ((tsk_state & TASK_RTLOCK_WAIT) || (tsk_state & TASK_FROZEN))
 		state = TASK_UNINTERRUPTIBLE;
 
 	return fls(state);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ