1 /* Kernel thread helper functions. 2 * Copyright (C) 2004 IBM Corporation, Rusty Russell. 3 * 4 * Creation is done via kthreadd, so that we get a clean environment 5 * even if we're invoked from userspace (think modprobe, hotplug cpu, 6 * etc.). 7 */ 8 #include <linux/sched.h> 9 #include <linux/kthread.h> 10 #include <linux/completion.h> 11 #include <linux/err.h> 12 #include <linux/cpuset.h> 13 #include <linux/unistd.h> 14 #include <linux/file.h> 15 #include <linux/export.h> 16 #include <linux/mutex.h> 17 #include <linux/slab.h> 18 #include <linux/freezer.h> 19 #include <linux/ptrace.h> 20 #include <linux/uaccess.h> 21 #include <trace/events/sched.h> 22 23 static DEFINE_SPINLOCK(kthread_create_lock); 24 static LIST_HEAD(kthread_create_list); 25 struct task_struct *kthreadd_task; 26 27 struct kthread_create_info 28 { 29 /* Information passed to kthread() from kthreadd. */ 30 int (*threadfn)(void *data); 31 void *data; 32 int node; 33 34 /* Result passed back to kthread_create() from kthreadd. */ 35 struct task_struct *result; 36 struct completion *done; 37 38 struct list_head list; 39 }; 40 41 struct kthread { 42 unsigned long flags; 43 unsigned int cpu; 44 void *data; 45 struct completion parked; 46 struct completion exited; 47 }; 48 49 enum KTHREAD_BITS { 50 KTHREAD_IS_PER_CPU = 0, 51 KTHREAD_SHOULD_STOP, 52 KTHREAD_SHOULD_PARK, 53 KTHREAD_IS_PARKED, 54 }; 55 56 #define __to_kthread(vfork) \ 57 container_of(vfork, struct kthread, exited) 58 59 static inline struct kthread *to_kthread(struct task_struct *k) 60 { 61 return __to_kthread(k->vfork_done); 62 } 63 64 static struct kthread *to_live_kthread(struct task_struct *k) 65 { 66 struct completion *vfork = ACCESS_ONCE(k->vfork_done); 67 if (likely(vfork)) 68 return __to_kthread(vfork); 69 return NULL; 70 } 71 72 /** 73 * kthread_should_stop - should this kthread return now? 74 * 75 * When someone calls kthread_stop() on your kthread, it will be woken 76 * and this will return true. You should then return, and your return 77 * value will be passed through to kthread_stop(). 78 */ 79 bool kthread_should_stop(void) 80 { 81 return test_bit(KTHREAD_SHOULD_STOP, &to_kthread(current)->flags); 82 } 83 EXPORT_SYMBOL(kthread_should_stop); 84 85 /** 86 * kthread_should_park - should this kthread park now? 87 * 88 * When someone calls kthread_park() on your kthread, it will be woken 89 * and this will return true. You should then do the necessary 90 * cleanup and call kthread_parkme() 91 * 92 * Similar to kthread_should_stop(), but this keeps the thread alive 93 * and in a park position. kthread_unpark() "restarts" the thread and 94 * calls the thread function again. 95 */ 96 bool kthread_should_park(void) 97 { 98 return test_bit(KTHREAD_SHOULD_PARK, &to_kthread(current)->flags); 99 } 100 EXPORT_SYMBOL_GPL(kthread_should_park); 101 102 /** 103 * kthread_freezable_should_stop - should this freezable kthread return now? 104 * @was_frozen: optional out parameter, indicates whether %current was frozen 105 * 106 * kthread_should_stop() for freezable kthreads, which will enter 107 * refrigerator if necessary. This function is safe from kthread_stop() / 108 * freezer deadlock and freezable kthreads should use this function instead 109 * of calling try_to_freeze() directly. 110 */ 111 bool kthread_freezable_should_stop(bool *was_frozen) 112 { 113 bool frozen = false; 114 115 might_sleep(); 116 117 if (unlikely(freezing(current))) 118 frozen = __refrigerator(true); 119 120 if (was_frozen) 121 *was_frozen = frozen; 122 123 return kthread_should_stop(); 124 } 125 EXPORT_SYMBOL_GPL(kthread_freezable_should_stop); 126 127 /** 128 * kthread_data - return data value specified on kthread creation 129 * @task: kthread task in question 130 * 131 * Return the data value specified when kthread @task was created. 132 * The caller is responsible for ensuring the validity of @task when 133 * calling this function. 134 */ 135 void *kthread_data(struct task_struct *task) 136 { 137 return to_kthread(task)->data; 138 } 139 140 /** 141 * probe_kthread_data - speculative version of kthread_data() 142 * @task: possible kthread task in question 143 * 144 * @task could be a kthread task. Return the data value specified when it 145 * was created if accessible. If @task isn't a kthread task or its data is 146 * inaccessible for any reason, %NULL is returned. This function requires 147 * that @task itself is safe to dereference. 148 */ 149 void *probe_kthread_data(struct task_struct *task) 150 { 151 struct kthread *kthread = to_kthread(task); 152 void *data = NULL; 153 154 probe_kernel_read(&data, &kthread->data, sizeof(data)); 155 return data; 156 } 157 158 static void __kthread_parkme(struct kthread *self) 159 { 160 __set_current_state(TASK_PARKED); 161 while (test_bit(KTHREAD_SHOULD_PARK, &self->flags)) { 162 if (!test_and_set_bit(KTHREAD_IS_PARKED, &self->flags)) 163 complete(&self->parked); 164 schedule(); 165 __set_current_state(TASK_PARKED); 166 } 167 clear_bit(KTHREAD_IS_PARKED, &self->flags); 168 __set_current_state(TASK_RUNNING); 169 } 170 171 void kthread_parkme(void) 172 { 173 __kthread_parkme(to_kthread(current)); 174 } 175 EXPORT_SYMBOL_GPL(kthread_parkme); 176 177 static int kthread(void *_create) 178 { 179 /* Copy data: it's on kthread's stack */ 180 struct kthread_create_info *create = _create; 181 int (*threadfn)(void *data) = create->threadfn; 182 void *data = create->data; 183 struct completion *done; 184 struct kthread self; 185 int ret; 186 187 self.flags = 0; 188 self.data = data; 189 init_completion(&self.exited); 190 init_completion(&self.parked); 191 current->vfork_done = &self.exited; 192 193 /* If user was SIGKILLed, I release the structure. */ 194 done = xchg(&create->done, NULL); 195 if (!done) { 196 kfree(create); 197 do_exit(-EINTR); 198 } 199 /* OK, tell user we're spawned, wait for stop or wakeup */ 200 __set_current_state(TASK_UNINTERRUPTIBLE); 201 create->result = current; 202 complete(done); 203 schedule(); 204 205 ret = -EINTR; 206 207 if (!test_bit(KTHREAD_SHOULD_STOP, &self.flags)) { 208 __kthread_parkme(&self); 209 ret = threadfn(data); 210 } 211 /* we can't just return, we must preserve "self" on stack */ 212 do_exit(ret); 213 } 214 215 /* called from do_fork() to get node information for about to be created task */ 216 int tsk_fork_get_node(struct task_struct *tsk) 217 { 218 #ifdef CONFIG_NUMA 219 if (tsk == kthreadd_task) 220 return tsk->pref_node_fork; 221 #endif 222 return NUMA_NO_NODE; 223 } 224 225 static void create_kthread(struct kthread_create_info *create) 226 { 227 int pid; 228 229 #ifdef CONFIG_NUMA 230 current->pref_node_fork = create->node; 231 #endif 232 /* We want our own signal handler (we take no signals by default). */ 233 pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); 234 if (pid < 0) { 235 /* If user was SIGKILLed, I release the structure. */ 236 struct completion *done = xchg(&create->done, NULL); 237 238 if (!done) { 239 kfree(create); 240 return; 241 } 242 create->result = ERR_PTR(pid); 243 complete(done); 244 } 245 } 246 247 /** 248 * kthread_create_on_node - create a kthread. 249 * @threadfn: the function to run until signal_pending(current). 250 * @data: data ptr for @threadfn. 251 * @node: memory node number. 252 * @namefmt: printf-style name for the thread. 253 * 254 * Description: This helper function creates and names a kernel 255 * thread. The thread will be stopped: use wake_up_process() to start 256 * it. See also kthread_run(). 257 * 258 * If thread is going to be bound on a particular cpu, give its node 259 * in @node, to get NUMA affinity for kthread stack, or else give -1. 260 * When woken, the thread will run @threadfn() with @data as its 261 * argument. @threadfn() can either call do_exit() directly if it is a 262 * standalone thread for which no one will call kthread_stop(), or 263 * return when 'kthread_should_stop()' is true (which means 264 * kthread_stop() has been called). The return value should be zero 265 * or a negative error number; it will be passed to kthread_stop(). 266 * 267 * Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR). 268 */ 269 struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), 270 void *data, int node, 271 const char namefmt[], 272 ...) 273 { 274 DECLARE_COMPLETION_ONSTACK(done); 275 struct task_struct *task; 276 struct kthread_create_info *create = kmalloc(sizeof(*create), 277 GFP_KERNEL); 278 279 if (!create) 280 return ERR_PTR(-ENOMEM); 281 create->threadfn = threadfn; 282 create->data = data; 283 create->node = node; 284 create->done = &done; 285 286 spin_lock(&kthread_create_lock); 287 list_add_tail(&create->list, &kthread_create_list); 288 spin_unlock(&kthread_create_lock); 289 290 wake_up_process(kthreadd_task); 291 /* 292 * Wait for completion in killable state, for I might be chosen by 293 * the OOM killer while kthreadd is trying to allocate memory for 294 * new kernel thread. 295 */ 296 if (unlikely(wait_for_completion_killable(&done))) { 297 /* 298 * If I was SIGKILLed before kthreadd (or new kernel thread) 299 * calls complete(), leave the cleanup of this structure to 300 * that thread. 301 */ 302 if (xchg(&create->done, NULL)) 303 return ERR_PTR(-EINTR); 304 /* 305 * kthreadd (or new kernel thread) will call complete() 306 * shortly. 307 */ 308 wait_for_completion(&done); 309 } 310 task = create->result; 311 if (!IS_ERR(task)) { 312 static const struct sched_param param = { .sched_priority = 0 }; 313 va_list args; 314 315 va_start(args, namefmt); 316 vsnprintf(task->comm, sizeof(task->comm), namefmt, args); 317 va_end(args); 318 /* 319 * root may have changed our (kthreadd's) priority or CPU mask. 320 * The kernel thread should not inherit these properties. 321 */ 322 sched_setscheduler_nocheck(task, SCHED_NORMAL, ¶m); 323 set_cpus_allowed_ptr(task, cpu_all_mask); 324 } 325 kfree(create); 326 return task; 327 } 328 EXPORT_SYMBOL(kthread_create_on_node); 329 330 static void __kthread_bind_mask(struct task_struct *p, const struct cpumask *mask, long state) 331 { 332 unsigned long flags; 333 334 if (!wait_task_inactive(p, state)) { 335 WARN_ON(1); 336 return; 337 } 338 339 /* It's safe because the task is inactive. */ 340 raw_spin_lock_irqsave(&p->pi_lock, flags); 341 do_set_cpus_allowed(p, mask); 342 p->flags |= PF_NO_SETAFFINITY; 343 raw_spin_unlock_irqrestore(&p->pi_lock, flags); 344 } 345 346 static void __kthread_bind(struct task_struct *p, unsigned int cpu, long state) 347 { 348 __kthread_bind_mask(p, cpumask_of(cpu), state); 349 } 350 351 void kthread_bind_mask(struct task_struct *p, const struct cpumask *mask) 352 { 353 __kthread_bind_mask(p, mask, TASK_UNINTERRUPTIBLE); 354 } 355 356 /** 357 * kthread_bind - bind a just-created kthread to a cpu. 358 * @p: thread created by kthread_create(). 359 * @cpu: cpu (might not be online, must be possible) for @k to run on. 360 * 361 * Description: This function is equivalent to set_cpus_allowed(), 362 * except that @cpu doesn't need to be online, and the thread must be 363 * stopped (i.e., just returned from kthread_create()). 364 */ 365 void kthread_bind(struct task_struct *p, unsigned int cpu) 366 { 367 __kthread_bind(p, cpu, TASK_UNINTERRUPTIBLE); 368 } 369 EXPORT_SYMBOL(kthread_bind); 370 371 /** 372 * kthread_create_on_cpu - Create a cpu bound kthread 373 * @threadfn: the function to run until signal_pending(current). 374 * @data: data ptr for @threadfn. 375 * @cpu: The cpu on which the thread should be bound, 376 * @namefmt: printf-style name for the thread. Format is restricted 377 * to "name.*%u". Code fills in cpu number. 378 * 379 * Description: This helper function creates and names a kernel thread 380 * The thread will be woken and put into park mode. 381 */ 382 struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), 383 void *data, unsigned int cpu, 384 const char *namefmt) 385 { 386 struct task_struct *p; 387 388 p = kthread_create_on_node(threadfn, data, cpu_to_node(cpu), namefmt, 389 cpu); 390 if (IS_ERR(p)) 391 return p; 392 set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags); 393 to_kthread(p)->cpu = cpu; 394 /* Park the thread to get it out of TASK_UNINTERRUPTIBLE state */ 395 kthread_park(p); 396 return p; 397 } 398 399 static void __kthread_unpark(struct task_struct *k, struct kthread *kthread) 400 { 401 clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags); 402 /* 403 * We clear the IS_PARKED bit here as we don't wait 404 * until the task has left the park code. So if we'd 405 * park before that happens we'd see the IS_PARKED bit 406 * which might be about to be cleared. 407 */ 408 if (test_and_clear_bit(KTHREAD_IS_PARKED, &kthread->flags)) { 409 if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags)) 410 __kthread_bind(k, kthread->cpu, TASK_PARKED); 411 wake_up_state(k, TASK_PARKED); 412 } 413 } 414 415 /** 416 * kthread_unpark - unpark a thread created by kthread_create(). 417 * @k: thread created by kthread_create(). 418 * 419 * Sets kthread_should_park() for @k to return false, wakes it, and 420 * waits for it to return. If the thread is marked percpu then its 421 * bound to the cpu again. 422 */ 423 void kthread_unpark(struct task_struct *k) 424 { 425 struct kthread *kthread = to_live_kthread(k); 426 427 if (kthread) 428 __kthread_unpark(k, kthread); 429 } 430 EXPORT_SYMBOL_GPL(kthread_unpark); 431 432 /** 433 * kthread_park - park a thread created by kthread_create(). 434 * @k: thread created by kthread_create(). 435 * 436 * Sets kthread_should_park() for @k to return true, wakes it, and 437 * waits for it to return. This can also be called after kthread_create() 438 * instead of calling wake_up_process(): the thread will park without 439 * calling threadfn(). 440 * 441 * Returns 0 if the thread is parked, -ENOSYS if the thread exited. 442 * If called by the kthread itself just the park bit is set. 443 */ 444 int kthread_park(struct task_struct *k) 445 { 446 struct kthread *kthread = to_live_kthread(k); 447 int ret = -ENOSYS; 448 449 if (kthread) { 450 if (!test_bit(KTHREAD_IS_PARKED, &kthread->flags)) { 451 set_bit(KTHREAD_SHOULD_PARK, &kthread->flags); 452 if (k != current) { 453 wake_up_process(k); 454 wait_for_completion(&kthread->parked); 455 } 456 } 457 ret = 0; 458 } 459 return ret; 460 } 461 EXPORT_SYMBOL_GPL(kthread_park); 462 463 /** 464 * kthread_stop - stop a thread created by kthread_create(). 465 * @k: thread created by kthread_create(). 466 * 467 * Sets kthread_should_stop() for @k to return true, wakes it, and 468 * waits for it to exit. This can also be called after kthread_create() 469 * instead of calling wake_up_process(): the thread will exit without 470 * calling threadfn(). 471 * 472 * If threadfn() may call do_exit() itself, the caller must ensure 473 * task_struct can't go away. 474 * 475 * Returns the result of threadfn(), or %-EINTR if wake_up_process() 476 * was never called. 477 */ 478 int kthread_stop(struct task_struct *k) 479 { 480 struct kthread *kthread; 481 int ret; 482 483 trace_sched_kthread_stop(k); 484 485 get_task_struct(k); 486 kthread = to_live_kthread(k); 487 if (kthread) { 488 set_bit(KTHREAD_SHOULD_STOP, &kthread->flags); 489 __kthread_unpark(k, kthread); 490 wake_up_process(k); 491 wait_for_completion(&kthread->exited); 492 } 493 ret = k->exit_code; 494 put_task_struct(k); 495 496 trace_sched_kthread_stop_ret(ret); 497 return ret; 498 } 499 EXPORT_SYMBOL(kthread_stop); 500 501 int kthreadd(void *unused) 502 { 503 struct task_struct *tsk = current; 504 505 /* Setup a clean context for our children to inherit. */ 506 set_task_comm(tsk, "kthreadd"); 507 ignore_signals(tsk); 508 set_cpus_allowed_ptr(tsk, cpu_all_mask); 509 set_mems_allowed(node_states[N_MEMORY]); 510 511 current->flags |= PF_NOFREEZE; 512 513 for (;;) { 514 set_current_state(TASK_INTERRUPTIBLE); 515 if (list_empty(&kthread_create_list)) 516 schedule(); 517 __set_current_state(TASK_RUNNING); 518 519 spin_lock(&kthread_create_lock); 520 while (!list_empty(&kthread_create_list)) { 521 struct kthread_create_info *create; 522 523 create = list_entry(kthread_create_list.next, 524 struct kthread_create_info, list); 525 list_del_init(&create->list); 526 spin_unlock(&kthread_create_lock); 527 528 create_kthread(create); 529 530 spin_lock(&kthread_create_lock); 531 } 532 spin_unlock(&kthread_create_lock); 533 } 534 535 return 0; 536 } 537 538 void __init_kthread_worker(struct kthread_worker *worker, 539 const char *name, 540 struct lock_class_key *key) 541 { 542 spin_lock_init(&worker->lock); 543 lockdep_set_class_and_name(&worker->lock, key, name); 544 INIT_LIST_HEAD(&worker->work_list); 545 worker->task = NULL; 546 } 547 EXPORT_SYMBOL_GPL(__init_kthread_worker); 548 549 /** 550 * kthread_worker_fn - kthread function to process kthread_worker 551 * @worker_ptr: pointer to initialized kthread_worker 552 * 553 * This function can be used as @threadfn to kthread_create() or 554 * kthread_run() with @worker_ptr argument pointing to an initialized 555 * kthread_worker. The started kthread will process work_list until 556 * the it is stopped with kthread_stop(). A kthread can also call 557 * this function directly after extra initialization. 558 * 559 * Different kthreads can be used for the same kthread_worker as long 560 * as there's only one kthread attached to it at any given time. A 561 * kthread_worker without an attached kthread simply collects queued 562 * kthread_works. 563 */ 564 int kthread_worker_fn(void *worker_ptr) 565 { 566 struct kthread_worker *worker = worker_ptr; 567 struct kthread_work *work; 568 569 WARN_ON(worker->task); 570 worker->task = current; 571 repeat: 572 set_current_state(TASK_INTERRUPTIBLE); /* mb paired w/ kthread_stop */ 573 574 if (kthread_should_stop()) { 575 __set_current_state(TASK_RUNNING); 576 spin_lock_irq(&worker->lock); 577 worker->task = NULL; 578 spin_unlock_irq(&worker->lock); 579 return 0; 580 } 581 582 work = NULL; 583 spin_lock_irq(&worker->lock); 584 if (!list_empty(&worker->work_list)) { 585 work = list_first_entry(&worker->work_list, 586 struct kthread_work, node); 587 list_del_init(&work->node); 588 } 589 worker->current_work = work; 590 spin_unlock_irq(&worker->lock); 591 592 if (work) { 593 __set_current_state(TASK_RUNNING); 594 work->func(work); 595 } else if (!freezing(current)) 596 schedule(); 597 598 try_to_freeze(); 599 goto repeat; 600 } 601 EXPORT_SYMBOL_GPL(kthread_worker_fn); 602 603 /* insert @work before @pos in @worker */ 604 static void insert_kthread_work(struct kthread_worker *worker, 605 struct kthread_work *work, 606 struct list_head *pos) 607 { 608 lockdep_assert_held(&worker->lock); 609 610 list_add_tail(&work->node, pos); 611 work->worker = worker; 612 if (!worker->current_work && likely(worker->task)) 613 wake_up_process(worker->task); 614 } 615 616 /** 617 * queue_kthread_work - queue a kthread_work 618 * @worker: target kthread_worker 619 * @work: kthread_work to queue 620 * 621 * Queue @work to work processor @task for async execution. @task 622 * must have been created with kthread_worker_create(). Returns %true 623 * if @work was successfully queued, %false if it was already pending. 624 */ 625 bool queue_kthread_work(struct kthread_worker *worker, 626 struct kthread_work *work) 627 { 628 bool ret = false; 629 unsigned long flags; 630 631 spin_lock_irqsave(&worker->lock, flags); 632 if (list_empty(&work->node)) { 633 insert_kthread_work(worker, work, &worker->work_list); 634 ret = true; 635 } 636 spin_unlock_irqrestore(&worker->lock, flags); 637 return ret; 638 } 639 EXPORT_SYMBOL_GPL(queue_kthread_work); 640 641 struct kthread_flush_work { 642 struct kthread_work work; 643 struct completion done; 644 }; 645 646 static void kthread_flush_work_fn(struct kthread_work *work) 647 { 648 struct kthread_flush_work *fwork = 649 container_of(work, struct kthread_flush_work, work); 650 complete(&fwork->done); 651 } 652 653 /** 654 * flush_kthread_work - flush a kthread_work 655 * @work: work to flush 656 * 657 * If @work is queued or executing, wait for it to finish execution. 658 */ 659 void flush_kthread_work(struct kthread_work *work) 660 { 661 struct kthread_flush_work fwork = { 662 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), 663 COMPLETION_INITIALIZER_ONSTACK(fwork.done), 664 }; 665 struct kthread_worker *worker; 666 bool noop = false; 667 668 retry: 669 worker = work->worker; 670 if (!worker) 671 return; 672 673 spin_lock_irq(&worker->lock); 674 if (work->worker != worker) { 675 spin_unlock_irq(&worker->lock); 676 goto retry; 677 } 678 679 if (!list_empty(&work->node)) 680 insert_kthread_work(worker, &fwork.work, work->node.next); 681 else if (worker->current_work == work) 682 insert_kthread_work(worker, &fwork.work, worker->work_list.next); 683 else 684 noop = true; 685 686 spin_unlock_irq(&worker->lock); 687 688 if (!noop) 689 wait_for_completion(&fwork.done); 690 } 691 EXPORT_SYMBOL_GPL(flush_kthread_work); 692 693 /** 694 * flush_kthread_worker - flush all current works on a kthread_worker 695 * @worker: worker to flush 696 * 697 * Wait until all currently executing or pending works on @worker are 698 * finished. 699 */ 700 void flush_kthread_worker(struct kthread_worker *worker) 701 { 702 struct kthread_flush_work fwork = { 703 KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), 704 COMPLETION_INITIALIZER_ONSTACK(fwork.done), 705 }; 706 707 queue_kthread_work(worker, &fwork.work); 708 wait_for_completion(&fwork.done); 709 } 710 EXPORT_SYMBOL_GPL(flush_kthread_worker); 711