Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6d6b8b9

Browse files
kjain101Ingo Molnar
authored and
Ingo Molnar
committed
perf: Fix task_function_call() error handling
The error handling introduced by commit:2ed6edd ("perf: Add cond_resched() to task_function_call()")looses any return value from smp_call_function_single() that is not{0, -EINVAL}. This is a problem because it will return -EXNIO when thetarget CPU is offline. Worse, in that case it'll turn into an infiniteloop.Fixes:2ed6edd ("perf: Add cond_resched() to task_function_call()")Reported-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>Signed-off-by: Kajol Jain <kjain@linux.ibm.com>Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>Signed-off-by: Ingo Molnar <mingo@kernel.org>Reviewed-by: Barret Rhoden <brho@google.com>Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>Link:https://lkml.kernel.org/r/20200827064732.20860-1-kjain@linux.ibm.com
1 parentc85fb28 commit6d6b8b9

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

‎kernel/events/core.c‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static void remote_function(void *data)
9999
* retry due to any failures in smp_call_function_single(), such as if the
100100
* task_cpu() goes offline concurrently.
101101
*
102-
* returns @func return value or -ESRCH when the process isn't running
102+
* returns @func return value or -ESRCHor -ENXIOwhen the process isn't running
103103
*/
104104
staticint
105105
task_function_call(structtask_struct*p,remote_function_ffunc,void*info)
@@ -115,7 +115,8 @@ task_function_call(struct task_struct *p, remote_function_f func, void *info)
115115
for (;;) {
116116
ret=smp_call_function_single(task_cpu(p),remote_function,
117117
&data,1);
118-
ret= !ret ?data.ret :-EAGAIN;
118+
if (!ret)
119+
ret=data.ret;
119120

120121
if (ret!=-EAGAIN)
121122
break;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp