aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyo Kataoka <ryo.kataoka.wt@renesas.com>2019-03-22 20:50:13 +0900
committerRyo Kataoka <ryo.kataoka.wt@renesas.com>2019-03-22 20:50:13 +0900
commita72b1f9180542c5ff64e2e2ca4c8fe3ebd0250d6 (patch)
treefbeb2bb61b009353dbb5d77d2a81a1ce3f9c0ace
parent21f292435bf7381d0efb23696d7f275acdb3cabc (diff)
parent940b2f6016df46b976c05b4fb6365d93d81a1952 (diff)
downloadrenesas-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.c19
-rw-r--r--drivers/tee/optee/rcar_version.h4
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 */