[linux-yocto] [PATCH 3/5] ocf: use the correct kthread helper functions
Kevin Hao
kexin.hao at windriver.com
Sun Oct 20 20:12:39 PDT 2013
In the current kernel, the function kernel_thread() is not the right
API to create a kthread. So we should use the correct kthread helper
functions to create and stop a kthread.
Signed-off-by: Kevin Hao <kexin.hao at windriver.com>
---
crypto/ocf/random.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/crypto/ocf/random.c b/crypto/ocf/random.c
index 02eee6a8f8c4..2aea6ab32ed7 100644
--- a/crypto/ocf/random.c
+++ b/crypto/ocf/random.c
@@ -81,7 +81,7 @@ struct random_op {
static int random_proc(void *arg);
-static pid_t randomproc = (pid_t) -1;
+static struct task_struct *randomproc;
static spinlock_t random_lock;
/*
@@ -141,9 +141,10 @@ crypto_rregister(
spin_lock_irqsave(&random_lock, flags);
list_add_tail(&rops->random_list, &random_ops);
if (!started) {
- randomproc = kernel_thread(random_proc, NULL, CLONE_FS|CLONE_FILES);
- if (randomproc < 0) {
- ret = randomproc;
+ randomproc = kthread_run(random_proc, NULL, "ocf-random");
+ if (IS_ERR(randomproc)) {
+ ret = PTR_ERR(randomproc);
+ randomproc = NULL;
printk("crypto: crypto_rregister cannot start random thread; "
"error %d", ret);
} else
@@ -172,7 +173,7 @@ crypto_runregister_all(u_int32_t driverid)
spin_lock_irqsave(&random_lock, flags);
if (list_empty(&random_ops) && started)
- kill_proc(randomproc, SIGKILL, 1);
+ kthread_stop(randomproc);
spin_unlock_irqrestore(&random_lock, flags);
return(0);
}
@@ -229,7 +230,7 @@ random_proc(void *arg)
* have anything to do, if so exit or we will consume all the CPU
* doing nothing
*/
- while (!list_empty(&random_ops)) {
+ while (!list_empty(&random_ops) && !kthread_should_stop()) {
struct random_op *rops, *tmp;
#ifdef CONFIG_OCF_FIPS
@@ -307,7 +308,7 @@ random_proc(void *arg)
bad_alloc:
spin_lock_irq(&random_lock);
- randomproc = (pid_t) -1;
+ randomproc = NULL;
started = 0;
spin_unlock_irq(&random_lock);
--
1.8.3.1
More information about the linux-yocto
mailing list