diff options
author | Jiri Slaby <jslaby@suse.cz> | 2016-03-31 04:49:28 -0400 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2016-04-04 09:46:47 -0400 |
commit | 0bf676d1fd5144e66ac06939fa3c7c12086c3b18 (patch) | |
tree | 2f47c4a3192ba0e63ac5133247c94abca94c1cfd /kernel/audit_tree.c | |
parent | b562e44f507e863c6792946e4e1b1449fbbac85d (diff) |
audit: cleanup prune_tree_thread
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>
Diffstat (limited to 'kernel/audit_tree.c')
-rw-r--r-- | kernel/audit_tree.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index 5efe9b299a12..25772476fa4a 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c | |||
@@ -661,10 +661,10 @@ static int tag_mount(struct vfsmount *mnt, void *arg) | |||
661 | static int prune_tree_thread(void *unused) | 661 | static int prune_tree_thread(void *unused) |
662 | { | 662 | { |
663 | for (;;) { | 663 | for (;;) { |
664 | set_current_state(TASK_INTERRUPTIBLE); | 664 | if (list_empty(&prune_list)) { |
665 | if (list_empty(&prune_list)) | 665 | set_current_state(TASK_INTERRUPTIBLE); |
666 | schedule(); | 666 | schedule(); |
667 | __set_current_state(TASK_RUNNING); | 667 | } |
668 | 668 | ||
669 | mutex_lock(&audit_cmd_mutex); | 669 | mutex_lock(&audit_cmd_mutex); |
670 | mutex_lock(&audit_filter_mutex); | 670 | mutex_lock(&audit_filter_mutex); |
@@ -693,16 +693,14 @@ static int audit_launch_prune(void) | |||
693 | { | 693 | { |
694 | if (prune_thread) | 694 | if (prune_thread) |
695 | return 0; | 695 | return 0; |
696 | prune_thread = kthread_create(prune_tree_thread, NULL, | 696 | prune_thread = kthread_run(prune_tree_thread, NULL, |
697 | "audit_prune_tree"); | 697 | "audit_prune_tree"); |
698 | if (IS_ERR(prune_thread)) { | 698 | if (IS_ERR(prune_thread)) { |
699 | pr_err("cannot start thread audit_prune_tree"); | 699 | pr_err("cannot start thread audit_prune_tree"); |
700 | prune_thread = NULL; | 700 | prune_thread = NULL; |
701 | return -ENOMEM; | 701 | return -ENOMEM; |
702 | } else { | ||
703 | wake_up_process(prune_thread); | ||
704 | return 0; | ||
705 | } | 702 | } |
703 | return 0; | ||
706 | } | 704 | } |
707 | 705 | ||
708 | /* called with audit_filter_mutex */ | 706 | /* called with audit_filter_mutex */ |