audit: cleanup prune_tree_thread
authorJiri Slaby <jslaby@suse.cz>
Thu, 31 Mar 2016 08:49:28 +0000 (10:49 +0200)
committerPaul Moore <paul@paul-moore.com>
Mon, 4 Apr 2016 13:46:47 +0000 (09:46 -0400)
We can use kthread_run instead of kthread_create+wake_up_process for
creating the thread.

We do not need to set the task state to TASK_RUNNING after schedule(),
the process is in that state already.

And we do not need to set the state to TASK_INTERRUPTIBLE when not
doing schedule() as we set the state to TASK_RUNNING immediately
afterwards.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Paul Moore <paul@paul-moore.com>
Cc: Eric Paris <eparis@redhat.com>
Cc: <linux-audit@redhat.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
kernel/audit_tree.c

index 5efe9b299a12876242648d41acc1950291b7a166..25772476fa4afcfec54210527f548588c402c109 100644 (file)
@@ -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 */