generic: convert crypto-ocf from kernel_thread to kthread
recent kernels have finally stopped exporting kernel_thread, since a deprecation circa 2006. This patch attempts to convert to the newer kernel kthread API, particularly in random.c [juhosg: remove randomproc variable, it is not required after the patch] Signed-off-by: Russell Senior <russell@personaltelco.net> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 35456
This commit is contained in:
parent
7c87d28054
commit
4c223d7d4f
@ -49,6 +49,7 @@
|
|||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
#include <linux/poll.h>
|
#include <linux/poll.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
|
#include <linux/kthread.h>
|
||||||
#include <cryptodev.h>
|
#include <cryptodev.h>
|
||||||
|
|
||||||
#ifdef CONFIG_OCF_FIPS
|
#ifdef CONFIG_OCF_FIPS
|
||||||
@ -79,9 +80,9 @@ struct random_op {
|
|||||||
void *arg;
|
void *arg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct task_struct *random_thread;
|
||||||
static int random_proc(void *arg);
|
static int random_proc(void *arg);
|
||||||
|
|
||||||
static pid_t randomproc = (pid_t) -1;
|
|
||||||
static spinlock_t random_lock;
|
static spinlock_t random_lock;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -141,12 +142,10 @@ crypto_rregister(
|
|||||||
spin_lock_irqsave(&random_lock, flags);
|
spin_lock_irqsave(&random_lock, flags);
|
||||||
list_add_tail(&rops->random_list, &random_ops);
|
list_add_tail(&rops->random_list, &random_ops);
|
||||||
if (!started) {
|
if (!started) {
|
||||||
randomproc = kernel_thread(random_proc, NULL, CLONE_FS|CLONE_FILES);
|
random_thread = kthread_run(random_proc, NULL, "ocf-random");
|
||||||
if (randomproc < 0) {
|
if (IS_ERR(random_thread))
|
||||||
ret = randomproc;
|
ret = PTR_ERR(random_thread);
|
||||||
printk("crypto: crypto_rregister cannot start random thread; "
|
else
|
||||||
"error %d", ret);
|
|
||||||
} else
|
|
||||||
started = 1;
|
started = 1;
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&random_lock, flags);
|
spin_unlock_irqrestore(&random_lock, flags);
|
||||||
@ -172,7 +171,7 @@ crypto_runregister_all(u_int32_t driverid)
|
|||||||
|
|
||||||
spin_lock_irqsave(&random_lock, flags);
|
spin_lock_irqsave(&random_lock, flags);
|
||||||
if (list_empty(&random_ops) && started)
|
if (list_empty(&random_ops) && started)
|
||||||
kill_proc(randomproc, SIGKILL, 1);
|
kthread_stop(random_thread);
|
||||||
spin_unlock_irqrestore(&random_lock, flags);
|
spin_unlock_irqrestore(&random_lock, flags);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@ -203,7 +202,6 @@ random_proc(void *arg)
|
|||||||
sprintf(current->comm, "ocf-random");
|
sprintf(current->comm, "ocf-random");
|
||||||
#else
|
#else
|
||||||
daemonize("ocf-random");
|
daemonize("ocf-random");
|
||||||
allow_signal(SIGKILL);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
(void) get_fs();
|
(void) get_fs();
|
||||||
@ -306,12 +304,11 @@ random_proc(void *arg)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
|
|
||||||
bad_alloc:
|
bad_alloc:
|
||||||
spin_lock_irq(&random_lock);
|
spin_lock_irq(&random_lock);
|
||||||
randomproc = (pid_t) -1;
|
|
||||||
started = 0;
|
started = 0;
|
||||||
spin_unlock_irq(&random_lock);
|
spin_unlock_irq(&random_lock);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user