|
@@ -661,10 +661,10 @@ static int tag_mount(struct vfsmount *mnt, void *arg)
|
|
|
static int prune_tree_thread(void *unused)
|
|
|
{
|
|
|
for (;;) {
|
|
|
- set_current_state(TASK_INTERRUPTIBLE);
|
|
|
- if (list_empty(&prune_list))
|
|
|
+ if (list_empty(&prune_list)) {
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
schedule();
|
|
|
- __set_current_state(TASK_RUNNING);
|
|
|
+ }
|
|
|
|
|
|
mutex_lock(&audit_cmd_mutex);
|
|
|
mutex_lock(&audit_filter_mutex);
|
|
@@ -693,16 +693,14 @@ static int audit_launch_prune(void)
|
|
|
{
|
|
|
if (prune_thread)
|
|
|
return 0;
|
|
|
- prune_thread = kthread_create(prune_tree_thread, NULL,
|
|
|
+ prune_thread = kthread_run(prune_tree_thread, NULL,
|
|
|
"audit_prune_tree");
|
|
|
if (IS_ERR(prune_thread)) {
|
|
|
pr_err("cannot start thread audit_prune_tree");
|
|
|
prune_thread = NULL;
|
|
|
return -ENOMEM;
|
|
|
- } else {
|
|
|
- wake_up_process(prune_thread);
|
|
|
- return 0;
|
|
|
}
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/* called with audit_filter_mutex */
|