Thread (30 messages) 30 messages, 9 authors, 2021-06-18

Re: [PATCH 6/6] sched: Change task_struct::state

From: Peter Zijlstra <peterz@infradead.org>
Date: 2021-06-02 14:20:57
Also in: dm-devel, kvm, linux-block, linux-fsdevel, linux-mm, linux-perf-users, linux-pm, linux-usb, lkml, netdev, rcu

On Wed, Jun 02, 2021 at 10:06:58AM -0400, Mathieu Desnoyers wrote:
----- On Jun 2, 2021, at 9:12 AM, Peter Zijlstra peterz@infradead.org wrote:
quoted
@@ -134,14 +134,14 @@ struct task_group;
	do {							\
		WARN_ON_ONCE(is_special_task_state(state_value));\
		current->task_state_change = _THIS_IP_;		\
-		current->state = (state_value);			\
+		WRITE_ONCE(current->__state, (state_value));	\
	} while (0)
Why not introduce set_task_state(p) and get_task_state(p) rather than sprinkle
READ_ONCE() and WRITE_ONCE() all over the kernel ?
set_task_state() is fundamentally unsound, there's very few sites that
_set_ state on anything other than current, and those sites are super
tricky, eg. ptrace.

Having get_task_state() would seem to suggest it's actually a sane thing
to do, it's not really. Inspecting remote state is full of races, and
some of that really wants cleaning up, but that's for another day.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help