diff options
author | Ryo Kataoka <ryo.kataoka.wt@renesas.com> | 2019-03-22 20:50:13 +0900 |
---|---|---|
committer | Ryo Kataoka <ryo.kataoka.wt@renesas.com> | 2019-03-22 20:50:13 +0900 |
commit | a72b1f9180542c5ff64e2e2ca4c8fe3ebd0250d6 (patch) | |
tree | fbeb2bb61b009353dbb5d77d2a81a1ce3f9c0ace | |
parent | 21f292435bf7381d0efb23696d7f275acdb3cabc (diff) | |
parent | 940b2f6016df46b976c05b4fb6365d93d81a1952 (diff) | |
download | renesas-bsp-a72b1f9180542c5ff64e2e2ca4c8fe3ebd0250d6.tar.gz |
Merge branch 'rcar-3.9.2/optee-rcar.rc2' into v4.14.75-ltsi/rcar-3.9.3
* rcar-3.9.2/optee-rcar.rc2:
tee: optee: Modify duration of spinlock for list
tee: optee: Change wait to interruptible
-rw-r--r-- | drivers/tee/optee/rcar.c | 19 | ||||
-rw-r--r-- | drivers/tee/optee/rcar_version.h | 4 |
2 files changed, 15 insertions, 8 deletions
diff --git a/drivers/tee/optee/rcar.c b/drivers/tee/optee/rcar.c index c34d959f4c63d4..f7f907b112d41f 100644 --- a/drivers/tee/optee/rcar.c +++ b/drivers/tee/optee/rcar.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, Renesas Electronics Corporation + * Copyright (c) 2015-2019, Renesas Electronics Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License Version 2 as @@ -52,25 +52,32 @@ static int debug_log_kthread(void *arg) { struct rcar_debug_log_info *dlog; struct rcar_debug_log_node *node; - struct rcar_debug_log_node *ntmp; bool thread_exit = false; dlog = (struct rcar_debug_log_info *)arg; while (1) { - list_for_each_entry_safe(node, ntmp, &dlog->queue, list) { + spin_lock(&dlog->q_lock); + while (!list_empty(&dlog->queue)) { + node = list_first_entry(&dlog->queue, + struct rcar_debug_log_node, + list); + spin_unlock(&dlog->q_lock); + if (node->logmsg) pr_alert("%s", node->logmsg); else thread_exit = true; + spin_lock(&dlog->q_lock); list_del(&node->list); - spin_unlock(&dlog->q_lock); kfree(node); } + spin_unlock(&dlog->q_lock); if (thread_exit) break; - wait_event(dlog->waitq, !list_empty(&dlog->queue)); + wait_event_interruptible(dlog->waitq, + !list_empty(&dlog->queue)); } pr_info("%s Exit\n", __func__); @@ -103,7 +110,7 @@ void handle_rpc_func_cmd_debug_log(struct optee_msg_arg *arg) spin_lock(&dlog->q_lock); list_add_tail(&node->list, &dlog->queue); spin_unlock(&dlog->q_lock); - wake_up(&dlog->waitq); + wake_up_interruptible(&dlog->waitq); arg->ret = TEEC_SUCCESS; } else { arg->ret = TEEC_ERROR_OUT_OF_MEMORY; diff --git a/drivers/tee/optee/rcar_version.h b/drivers/tee/optee/rcar_version.h index be0bca2e040136..3cea9dd8a88c95 100644 --- a/drivers/tee/optee/rcar_version.h +++ b/drivers/tee/optee/rcar_version.h @@ -1,11 +1,11 @@ /* - * Copyright (c) 2015-2018, Renesas Electronics Corporation + * Copyright (c) 2015-2019, Renesas Electronics Corporation * All rights reserved. */ #ifndef RCAR_VERSION_H #define RCAR_VERSION_H -#define VERSION_OF_RENESAS "1.0.9" +#define VERSION_OF_RENESAS "1.0.10" #endif /* RCAR_VERSION_H */ |