Commit 156d0291 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'optee-rcu-sched-trace-for-v5.11' of...

Merge tag 'optee-rcu-sched-trace-for-v5.11' of git://git.linaro.org/people/jens.wiklander/linux-tee into arm/fixes

Fix rcu_sched trace from OP-TEE invoke

Replaces might_sleep() with a conditional call to cond_resched()
in order to avoid the rcu_sched trace in some corner cases.

* tag 'optee-rcu-sched-trace-for-v5.11' of git://git.linaro.org/people/jens.wiklander/linux-tee:
  tee: optee: replace might_sleep with cond_resched

Link: https://lore.kernel.org/r/20210122074234.GA1074747@jadeSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 8a996b2d dcb3b06d
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/sched.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/tee_drv.h> #include <linux/tee_drv.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -148,7 +149,8 @@ u32 optee_do_call_with_arg(struct tee_context *ctx, phys_addr_t parg) ...@@ -148,7 +149,8 @@ u32 optee_do_call_with_arg(struct tee_context *ctx, phys_addr_t parg)
*/ */
optee_cq_wait_for_completion(&optee->call_queue, &w); optee_cq_wait_for_completion(&optee->call_queue, &w);
} else if (OPTEE_SMC_RETURN_IS_RPC(res.a0)) { } else if (OPTEE_SMC_RETURN_IS_RPC(res.a0)) {
might_sleep(); if (need_resched())
cond_resched();
param.a0 = res.a0; param.a0 = res.a0;
param.a1 = res.a1; param.a1 = res.a1;
param.a2 = res.a2; param.a2 = res.a2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment