diff options
-rw-r--r-- | kernel/kthread.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/kernel/kthread.c b/kernel/kthread.c index c013bf000ce6..4ebaf8519abf 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c | |||
@@ -97,19 +97,10 @@ static void create_kthread(struct kthread_create_info *create) | |||
97 | 97 | ||
98 | /* We want our own signal handler (we take no signals by default). */ | 98 | /* We want our own signal handler (we take no signals by default). */ |
99 | pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); | 99 | pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); |
100 | if (pid < 0) { | 100 | if (pid < 0) |
101 | create->result = ERR_PTR(pid); | 101 | create->result = ERR_PTR(pid); |
102 | } else { | 102 | else |
103 | struct sched_param param = { .sched_priority = 0 }; | ||
104 | wait_for_completion(&create->started); | 103 | wait_for_completion(&create->started); |
105 | /* | ||
106 | * root may have changed our (kthreadd's) priority or CPU mask. | ||
107 | * The kernel thread should not inherit these properties. | ||
108 | */ | ||
109 | sched_setscheduler(create->result, SCHED_NORMAL, ¶m); | ||
110 | set_user_nice(create->result, KTHREAD_NICE_LEVEL); | ||
111 | set_cpus_allowed_ptr(create->result, cpu_all_mask); | ||
112 | } | ||
113 | complete(&create->done); | 104 | complete(&create->done); |
114 | } | 105 | } |
115 | 106 | ||
@@ -152,11 +143,20 @@ struct task_struct *kthread_create(int (*threadfn)(void *data), | |||
152 | wait_for_completion(&create.done); | 143 | wait_for_completion(&create.done); |
153 | 144 | ||
154 | if (!IS_ERR(create.result)) { | 145 | if (!IS_ERR(create.result)) { |
146 | struct sched_param param = { .sched_priority = 0 }; | ||
155 | va_list args; | 147 | va_list args; |
148 | |||
156 | va_start(args, namefmt); | 149 | va_start(args, namefmt); |
157 | vsnprintf(create.result->comm, sizeof(create.result->comm), | 150 | vsnprintf(create.result->comm, sizeof(create.result->comm), |
158 | namefmt, args); | 151 | namefmt, args); |
159 | va_end(args); | 152 | va_end(args); |
153 | /* | ||
154 | * root may have changed our (kthreadd's) priority or CPU mask. | ||
155 | * The kernel thread should not inherit these properties. | ||
156 | */ | ||
157 | sched_setscheduler_nocheck(create.result, SCHED_NORMAL, ¶m); | ||
158 | set_user_nice(create.result, KTHREAD_NICE_LEVEL); | ||
159 | set_cpus_allowed_ptr(create.result, cpu_all_mask); | ||
160 | } | 160 | } |
161 | return create.result; | 161 | return create.result; |
162 | } | 162 | } |