linux/kernel/kthread.c
<<
>>
Prefs
   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 <uapi/linux/sched/types.h>
   9#include <linux/sched.h>
  10#include <linux/sched/task.h>
  11#include <linux/kthread.h>
  12#include <linux/completion.h>
  13#include <linux/err.h>
  14#include <linux/cpuset.h>
  15#include <linux/unistd.h>
  16#include <linux/file.h>
  17#include <linux/export.h>
  18#include <linux/mutex.h>
  19#include <linux/slab.h>
  20#include <linux/freezer.h>
  21#include <linux/ptrace.h>
  22#include <linux/uaccess.h>
  23#include <linux/cgroup.h>
  24#include <trace/events/sched.h>
  25
  26static DEFINE_SPINLOCK(kthread_create_lock);
  27static LIST_HEAD(kthread_create_list);
  28struct task_struct *kthreadd_task;
  29
  30struct kthread_create_info
  31{
  32        /* Information passed to kthread() from kthreadd. */
  33        int (*threadfn)(void *data);
  34        void *data;
  35        int node;
  36
  37        /* Result passed back to kthread_create() from kthreadd. */
  38        struct task_struct *result;
  39        struct completion *done;
  40
  41        struct list_head list;
  42};
  43
  44struct kthread {
  45        unsigned long flags;
  46        unsigned int cpu;
  47        void *data;
  48        struct completion parked;
  49        struct completion exited;
  50};
  51
  52enum KTHREAD_BITS {
  53        KTHREAD_IS_PER_CPU = 0,
  54        KTHREAD_SHOULD_STOP,
  55        KTHREAD_SHOULD_PARK,
  56        KTHREAD_IS_PARKED,
  57};
  58
  59static inline void set_kthread_struct(void *kthread)
  60{
  61        /*
  62         * We abuse ->set_child_tid to avoid the new member and because it
  63         * can't be wrongly copied by copy_process(). We also rely on fact
  64         * that the caller can't exec, so PF_KTHREAD can't be cleared.
  65         */
  66        current->set_child_tid = (__force void __user *)kthread;
  67}
  68
  69static inline struct kthread *to_kthread(struct task_struct *k)
  70{
  71        WARN_ON(!(k->flags & PF_KTHREAD));
  72        return (__force void *)k->set_child_tid;
  73}
  74
  75void free_kthread_struct(struct task_struct *k)
  76{
  77        /*
  78         * Can be NULL if this kthread was created by kernel_thread()
  79         * or if kmalloc() in kthread() failed.
  80         */
  81        kfree(to_kthread(k));
  82}
  83
  84/**
  85 * kthread_should_stop - should this kthread return now?
  86 *
  87 * When someone calls kthread_stop() on your kthread, it will be woken
  88 * and this will return true.  You should then return, and your return
  89 * value will be passed through to kthread_stop().
  90 */
  91bool kthread_should_stop(void)
  92{
  93        return test_bit(KTHREAD_SHOULD_STOP, &to_kthread(current)->flags);
  94}
  95EXPORT_SYMBOL(kthread_should_stop);
  96
  97/**
  98 * kthread_should_park - should this kthread park now?
  99 *
 100 * When someone calls kthread_park() on your kthread, it will be woken
 101 * and this will return true.  You should then do the necessary
 102 * cleanup and call kthread_parkme()
 103 *
 104 * Similar to kthread_should_stop(), but this keeps the thread alive
 105 * and in a park position. kthread_unpark() "restarts" the thread and
 106 * calls the thread function again.
 107 */
 108bool kthread_should_park(void)
 109{
 110        return test_bit(KTHREAD_SHOULD_PARK, &to_kthread(current)->flags);
 111}
 112EXPORT_SYMBOL_GPL(kthread_should_park);
 113
 114/**
 115 * kthread_freezable_should_stop - should this freezable kthread return now?
 116 * @was_frozen: optional out parameter, indicates whether %current was frozen
 117 *
 118 * kthread_should_stop() for freezable kthreads, which will enter
 119 * refrigerator if necessary.  This function is safe from kthread_stop() /
 120 * freezer deadlock and freezable kthreads should use this function instead
 121 * of calling try_to_freeze() directly.
 122 */
 123bool kthread_freezable_should_stop(bool *was_frozen)
 124{
 125        bool frozen = false;
 126
 127        might_sleep();
 128
 129        if (unlikely(freezing(current)))
 130                frozen = __refrigerator(true);
 131
 132        if (was_frozen)
 133                *was_frozen = frozen;
 134
 135        return kthread_should_stop();
 136}
 137EXPORT_SYMBOL_GPL(kthread_freezable_should_stop);
 138
 139/**
 140 * kthread_data - return data value specified on kthread creation
 141 * @task: kthread task in question
 142 *
 143 * Return the data value specified when kthread @task was created.
 144 * The caller is responsible for ensuring the validity of @task when
 145 * calling this function.
 146 */
 147void *kthread_data(struct task_struct *task)
 148{
 149        return to_kthread(task)->data;
 150}
 151
 152/**
 153 * kthread_probe_data - speculative version of kthread_data()
 154 * @task: possible kthread task in question
 155 *
 156 * @task could be a kthread task.  Return the data value specified when it
 157 * was created if accessible.  If @task isn't a kthread task or its data is
 158 * inaccessible for any reason, %NULL is returned.  This function requires
 159 * that @task itself is safe to dereference.
 160 */
 161void *kthread_probe_data(struct task_struct *task)
 162{
 163        struct kthread *kthread = to_kthread(task);
 164        void *data = NULL;
 165
 166        probe_kernel_read(&data, &kthread->data, sizeof(data));
 167        return data;
 168}
 169
 170static void __kthread_parkme(struct kthread *self)
 171{
 172        __set_current_state(TASK_PARKED);
 173        while (test_bit(KTHREAD_SHOULD_PARK, &self->flags)) {
 174                if (!test_and_set_bit(KTHREAD_IS_PARKED, &self->flags))
 175                        complete(&self->parked);
 176                schedule();
 177                __set_current_state(TASK_PARKED);
 178        }
 179        clear_bit(KTHREAD_IS_PARKED, &self->flags);
 180        __set_current_state(TASK_RUNNING);
 181}
 182
 183void kthread_parkme(void)
 184{
 185        __kthread_parkme(to_kthread(current));
 186}
 187EXPORT_SYMBOL_GPL(kthread_parkme);
 188
 189static int kthread(void *_create)
 190{
 191        /* Copy data: it's on kthread's stack */
 192        struct kthread_create_info *create = _create;
 193        int (*threadfn)(void *data) = create->threadfn;
 194        void *data = create->data;
 195        struct completion *done;
 196        struct kthread *self;
 197        int ret;
 198
 199        self = kmalloc(sizeof(*self), GFP_KERNEL);
 200        set_kthread_struct(self);
 201
 202        /* If user was SIGKILLed, I release the structure. */
 203        done = xchg(&create->done, NULL);
 204        if (!done) {
 205                kfree(create);
 206                do_exit(-EINTR);
 207        }
 208
 209        if (!self) {
 210                create->result = ERR_PTR(-ENOMEM);
 211                complete(done);
 212                do_exit(-ENOMEM);
 213        }
 214
 215        self->flags = 0;
 216        self->data = data;
 217        init_completion(&self->exited);
 218        init_completion(&self->parked);
 219        current->vfork_done = &self->exited;
 220
 221        /* OK, tell user we're spawned, wait for stop or wakeup */
 222        __set_current_state(TASK_UNINTERRUPTIBLE);
 223        create->result = current;
 224        complete(done);
 225        schedule();
 226
 227        ret = -EINTR;
 228        if (!test_bit(KTHREAD_SHOULD_STOP, &self->flags)) {
 229                cgroup_kthread_ready();
 230                __kthread_parkme(self);
 231                ret = threadfn(data);
 232        }
 233        do_exit(ret);
 234}
 235
 236/* called from do_fork() to get node information for about to be created task */
 237int tsk_fork_get_node(struct task_struct *tsk)
 238{
 239#ifdef CONFIG_NUMA
 240        if (tsk == kthreadd_task)
 241                return tsk->pref_node_fork;
 242#endif
 243        return NUMA_NO_NODE;
 244}
 245
 246static void create_kthread(struct kthread_create_info *create)
 247{
 248        int pid;
 249
 250#ifdef CONFIG_NUMA
 251        current->pref_node_fork = create->node;
 252#endif
 253        /* We want our own signal handler (we take no signals by default). */
 254        pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD);
 255        if (pid < 0) {
 256                /* If user was SIGKILLed, I release the structure. */
 257                struct completion *done = xchg(&create->done, NULL);
 258
 259                if (!done) {
 260                        kfree(create);
 261                        return;
 262                }
 263                create->result = ERR_PTR(pid);
 264                complete(done);
 265        }
 266}
 267
 268static __printf(4, 0)
 269struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data),
 270                                                    void *data, int node,
 271                                                    const char namefmt[],
 272                                                    va_list args)
 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
 314                vsnprintf(task->comm, sizeof(task->comm), namefmt, args);
 315                /*
 316                 * root may have changed our (kthreadd's) priority or CPU mask.
 317                 * The kernel thread should not inherit these properties.
 318                 */
 319                sched_setscheduler_nocheck(task, SCHED_NORMAL, &param);
 320                set_cpus_allowed_ptr(task, cpu_all_mask);
 321        }
 322        kfree(create);
 323        return task;
 324}
 325
 326/**
 327 * kthread_create_on_node - create a kthread.
 328 * @threadfn: the function to run until signal_pending(current).
 329 * @data: data ptr for @threadfn.
 330 * @node: task and thread structures for the thread are allocated on this node
 331 * @namefmt: printf-style name for the thread.
 332 *
 333 * Description: This helper function creates and names a kernel
 334 * thread.  The thread will be stopped: use wake_up_process() to start
 335 * it.  See also kthread_run().  The new thread has SCHED_NORMAL policy and
 336 * is affine to all CPUs.
 337 *
 338 * If thread is going to be bound on a particular cpu, give its node
 339 * in @node, to get NUMA affinity for kthread stack, or else give NUMA_NO_NODE.
 340 * When woken, the thread will run @threadfn() with @data as its
 341 * argument. @threadfn() can either call do_exit() directly if it is a
 342 * standalone thread for which no one will call kthread_stop(), or
 343 * return when 'kthread_should_stop()' is true (which means
 344 * kthread_stop() has been called).  The return value should be zero
 345 * or a negative error number; it will be passed to kthread_stop().
 346 *
 347 * Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR).
 348 */
 349struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
 350                                           void *data, int node,
 351                                           const char namefmt[],
 352                                           ...)
 353{
 354        struct task_struct *task;
 355        va_list args;
 356
 357        va_start(args, namefmt);
 358        task = __kthread_create_on_node(threadfn, data, node, namefmt, args);
 359        va_end(args);
 360
 361        return task;
 362}
 363EXPORT_SYMBOL(kthread_create_on_node);
 364
 365static void __kthread_bind_mask(struct task_struct *p, const struct cpumask *mask, long state)
 366{
 367        unsigned long flags;
 368
 369        if (!wait_task_inactive(p, state)) {
 370                WARN_ON(1);
 371                return;
 372        }
 373
 374        /* It's safe because the task is inactive. */
 375        raw_spin_lock_irqsave(&p->pi_lock, flags);
 376        do_set_cpus_allowed(p, mask);
 377        p->flags |= PF_NO_SETAFFINITY;
 378        raw_spin_unlock_irqrestore(&p->pi_lock, flags);
 379}
 380
 381static void __kthread_bind(struct task_struct *p, unsigned int cpu, long state)
 382{
 383        __kthread_bind_mask(p, cpumask_of(cpu), state);
 384}
 385
 386void kthread_bind_mask(struct task_struct *p, const struct cpumask *mask)
 387{
 388        __kthread_bind_mask(p, mask, TASK_UNINTERRUPTIBLE);
 389}
 390
 391/**
 392 * kthread_bind - bind a just-created kthread to a cpu.
 393 * @p: thread created by kthread_create().
 394 * @cpu: cpu (might not be online, must be possible) for @k to run on.
 395 *
 396 * Description: This function is equivalent to set_cpus_allowed(),
 397 * except that @cpu doesn't need to be online, and the thread must be
 398 * stopped (i.e., just returned from kthread_create()).
 399 */
 400void kthread_bind(struct task_struct *p, unsigned int cpu)
 401{
 402        __kthread_bind(p, cpu, TASK_UNINTERRUPTIBLE);
 403}
 404EXPORT_SYMBOL(kthread_bind);
 405
 406/**
 407 * kthread_create_on_cpu - Create a cpu bound kthread
 408 * @threadfn: the function to run until signal_pending(current).
 409 * @data: data ptr for @threadfn.
 410 * @cpu: The cpu on which the thread should be bound,
 411 * @namefmt: printf-style name for the thread. Format is restricted
 412 *           to "name.*%u". Code fills in cpu number.
 413 *
 414 * Description: This helper function creates and names a kernel thread
 415 * The thread will be woken and put into park mode.
 416 */
 417struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
 418                                          void *data, unsigned int cpu,
 419                                          const char *namefmt)
 420{
 421        struct task_struct *p;
 422
 423        p = kthread_create_on_node(threadfn, data, cpu_to_node(cpu), namefmt,
 424                                   cpu);
 425        if (IS_ERR(p))
 426                return p;
 427        kthread_bind(p, cpu);
 428        /* CPU hotplug need to bind once again when unparking the thread. */
 429        set_bit(KTHREAD_IS_PER_CPU, &to_kthread(p)->flags);
 430        to_kthread(p)->cpu = cpu;
 431        return p;
 432}
 433
 434/**
 435 * kthread_unpark - unpark a thread created by kthread_create().
 436 * @k:          thread created by kthread_create().
 437 *
 438 * Sets kthread_should_park() for @k to return false, wakes it, and
 439 * waits for it to return. If the thread is marked percpu then its
 440 * bound to the cpu again.
 441 */
 442void kthread_unpark(struct task_struct *k)
 443{
 444        struct kthread *kthread = to_kthread(k);
 445
 446        clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags);
 447        /*
 448         * We clear the IS_PARKED bit here as we don't wait
 449         * until the task has left the park code. So if we'd
 450         * park before that happens we'd see the IS_PARKED bit
 451         * which might be about to be cleared.
 452         */
 453        if (test_and_clear_bit(KTHREAD_IS_PARKED, &kthread->flags)) {
 454                /*
 455                 * Newly created kthread was parked when the CPU was offline.
 456                 * The binding was lost and we need to set it again.
 457                 */
 458                if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags))
 459                        __kthread_bind(k, kthread->cpu, TASK_PARKED);
 460                wake_up_state(k, TASK_PARKED);
 461        }
 462}
 463EXPORT_SYMBOL_GPL(kthread_unpark);
 464
 465/**
 466 * kthread_park - park a thread created by kthread_create().
 467 * @k: thread created by kthread_create().
 468 *
 469 * Sets kthread_should_park() for @k to return true, wakes it, and
 470 * waits for it to return. This can also be called after kthread_create()
 471 * instead of calling wake_up_process(): the thread will park without
 472 * calling threadfn().
 473 *
 474 * Returns 0 if the thread is parked, -ENOSYS if the thread exited.
 475 * If called by the kthread itself just the park bit is set.
 476 */
 477int kthread_park(struct task_struct *k)
 478{
 479        struct kthread *kthread = to_kthread(k);
 480
 481        if (WARN_ON(k->flags & PF_EXITING))
 482                return -ENOSYS;
 483
 484        if (!test_bit(KTHREAD_IS_PARKED, &kthread->flags)) {
 485                set_bit(KTHREAD_SHOULD_PARK, &kthread->flags);
 486                if (k != current) {
 487                        wake_up_process(k);
 488                        wait_for_completion(&kthread->parked);
 489                }
 490        }
 491
 492        return 0;
 493}
 494EXPORT_SYMBOL_GPL(kthread_park);
 495
 496/**
 497 * kthread_stop - stop a thread created by kthread_create().
 498 * @k: thread created by kthread_create().
 499 *
 500 * Sets kthread_should_stop() for @k to return true, wakes it, and
 501 * waits for it to exit. This can also be called after kthread_create()
 502 * instead of calling wake_up_process(): the thread will exit without
 503 * calling threadfn().
 504 *
 505 * If threadfn() may call do_exit() itself, the caller must ensure
 506 * task_struct can't go away.
 507 *
 508 * Returns the result of threadfn(), or %-EINTR if wake_up_process()
 509 * was never called.
 510 */
 511int kthread_stop(struct task_struct *k)
 512{
 513        struct kthread *kthread;
 514        int ret;
 515
 516        trace_sched_kthread_stop(k);
 517
 518        get_task_struct(k);
 519        kthread = to_kthread(k);
 520        set_bit(KTHREAD_SHOULD_STOP, &kthread->flags);
 521        kthread_unpark(k);
 522        wake_up_process(k);
 523        wait_for_completion(&kthread->exited);
 524        ret = k->exit_code;
 525        put_task_struct(k);
 526
 527        trace_sched_kthread_stop_ret(ret);
 528        return ret;
 529}
 530EXPORT_SYMBOL(kthread_stop);
 531
 532int kthreadd(void *unused)
 533{
 534        struct task_struct *tsk = current;
 535
 536        /* Setup a clean context for our children to inherit. */
 537        set_task_comm(tsk, "kthreadd");
 538        ignore_signals(tsk);
 539        set_cpus_allowed_ptr(tsk, cpu_all_mask);
 540        set_mems_allowed(node_states[N_MEMORY]);
 541
 542        current->flags |= PF_NOFREEZE;
 543        cgroup_init_kthreadd();
 544
 545        for (;;) {
 546                set_current_state(TASK_INTERRUPTIBLE);
 547                if (list_empty(&kthread_create_list))
 548                        schedule();
 549                __set_current_state(TASK_RUNNING);
 550
 551                spin_lock(&kthread_create_lock);
 552                while (!list_empty(&kthread_create_list)) {
 553                        struct kthread_create_info *create;
 554
 555                        create = list_entry(kthread_create_list.next,
 556                                            struct kthread_create_info, list);
 557                        list_del_init(&create->list);
 558                        spin_unlock(&kthread_create_lock);
 559
 560                        create_kthread(create);
 561
 562                        spin_lock(&kthread_create_lock);
 563                }
 564                spin_unlock(&kthread_create_lock);
 565        }
 566
 567        return 0;
 568}
 569
 570void __kthread_init_worker(struct kthread_worker *worker,
 571                                const char *name,
 572                                struct lock_class_key *key)
 573{
 574        memset(worker, 0, sizeof(struct kthread_worker));
 575        spin_lock_init(&worker->lock);
 576        lockdep_set_class_and_name(&worker->lock, key, name);
 577        INIT_LIST_HEAD(&worker->work_list);
 578        INIT_LIST_HEAD(&worker->delayed_work_list);
 579}
 580EXPORT_SYMBOL_GPL(__kthread_init_worker);
 581
 582/**
 583 * kthread_worker_fn - kthread function to process kthread_worker
 584 * @worker_ptr: pointer to initialized kthread_worker
 585 *
 586 * This function implements the main cycle of kthread worker. It processes
 587 * work_list until it is stopped with kthread_stop(). It sleeps when the queue
 588 * is empty.
 589 *
 590 * The works are not allowed to keep any locks, disable preemption or interrupts
 591 * when they finish. There is defined a safe point for freezing when one work
 592 * finishes and before a new one is started.
 593 *
 594 * Also the works must not be handled by more than one worker at the same time,
 595 * see also kthread_queue_work().
 596 */
 597int kthread_worker_fn(void *worker_ptr)
 598{
 599        struct kthread_worker *worker = worker_ptr;
 600        struct kthread_work *work;
 601
 602        /*
 603         * FIXME: Update the check and remove the assignment when all kthread
 604         * worker users are created using kthread_create_worker*() functions.
 605         */
 606        WARN_ON(worker->task && worker->task != current);
 607        worker->task = current;
 608
 609        if (worker->flags & KTW_FREEZABLE)
 610                set_freezable();
 611
 612repeat:
 613        set_current_state(TASK_INTERRUPTIBLE);  /* mb paired w/ kthread_stop */
 614
 615        if (kthread_should_stop()) {
 616                __set_current_state(TASK_RUNNING);
 617                spin_lock_irq(&worker->lock);
 618                worker->task = NULL;
 619                spin_unlock_irq(&worker->lock);
 620                return 0;
 621        }
 622
 623        work = NULL;
 624        spin_lock_irq(&worker->lock);
 625        if (!list_empty(&worker->work_list)) {
 626                work = list_first_entry(&worker->work_list,
 627                                        struct kthread_work, node);
 628                list_del_init(&work->node);
 629        }
 630        worker->current_work = work;
 631        spin_unlock_irq(&worker->lock);
 632
 633        if (work) {
 634                __set_current_state(TASK_RUNNING);
 635                work->func(work);
 636        } else if (!freezing(current))
 637                schedule();
 638
 639        try_to_freeze();
 640        goto repeat;
 641}
 642EXPORT_SYMBOL_GPL(kthread_worker_fn);
 643
 644static __printf(3, 0) struct kthread_worker *
 645__kthread_create_worker(int cpu, unsigned int flags,
 646                        const char namefmt[], va_list args)
 647{
 648        struct kthread_worker *worker;
 649        struct task_struct *task;
 650        int node = -1;
 651
 652        worker = kzalloc(sizeof(*worker), GFP_KERNEL);
 653        if (!worker)
 654                return ERR_PTR(-ENOMEM);
 655
 656        kthread_init_worker(worker);
 657
 658        if (cpu >= 0)
 659                node = cpu_to_node(cpu);
 660
 661        task = __kthread_create_on_node(kthread_worker_fn, worker,
 662                                                node, namefmt, args);
 663        if (IS_ERR(task))
 664                goto fail_task;
 665
 666        if (cpu >= 0)
 667                kthread_bind(task, cpu);
 668
 669        worker->flags = flags;
 670        worker->task = task;
 671        wake_up_process(task);
 672        return worker;
 673
 674fail_task:
 675        kfree(worker);
 676        return ERR_CAST(task);
 677}
 678
 679/**
 680 * kthread_create_worker - create a kthread worker
 681 * @flags: flags modifying the default behavior of the worker
 682 * @namefmt: printf-style name for the kthread worker (task).
 683 *
 684 * Returns a pointer to the allocated worker on success, ERR_PTR(-ENOMEM)
 685 * when the needed structures could not get allocated, and ERR_PTR(-EINTR)
 686 * when the worker was SIGKILLed.
 687 */
 688struct kthread_worker *
 689kthread_create_worker(unsigned int flags, const char namefmt[], ...)
 690{
 691        struct kthread_worker *worker;
 692        va_list args;
 693
 694        va_start(args, namefmt);
 695        worker = __kthread_create_worker(-1, flags, namefmt, args);
 696        va_end(args);
 697
 698        return worker;
 699}
 700EXPORT_SYMBOL(kthread_create_worker);
 701
 702/**
 703 * kthread_create_worker_on_cpu - create a kthread worker and bind it
 704 *      it to a given CPU and the associated NUMA node.
 705 * @cpu: CPU number
 706 * @flags: flags modifying the default behavior of the worker
 707 * @namefmt: printf-style name for the kthread worker (task).
 708 *
 709 * Use a valid CPU number if you want to bind the kthread worker
 710 * to the given CPU and the associated NUMA node.
 711 *
 712 * A good practice is to add the cpu number also into the worker name.
 713 * For example, use kthread_create_worker_on_cpu(cpu, "helper/%d", cpu).
 714 *
 715 * Returns a pointer to the allocated worker on success, ERR_PTR(-ENOMEM)
 716 * when the needed structures could not get allocated, and ERR_PTR(-EINTR)
 717 * when the worker was SIGKILLed.
 718 */
 719struct kthread_worker *
 720kthread_create_worker_on_cpu(int cpu, unsigned int flags,
 721                             const char namefmt[], ...)
 722{
 723        struct kthread_worker *worker;
 724        va_list args;
 725
 726        va_start(args, namefmt);
 727        worker = __kthread_create_worker(cpu, flags, namefmt, args);
 728        va_end(args);
 729
 730        return worker;
 731}
 732EXPORT_SYMBOL(kthread_create_worker_on_cpu);
 733
 734/*
 735 * Returns true when the work could not be queued at the moment.
 736 * It happens when it is already pending in a worker list
 737 * or when it is being cancelled.
 738 */
 739static inline bool queuing_blocked(struct kthread_worker *worker,
 740                                   struct kthread_work *work)
 741{
 742        lockdep_assert_held(&worker->lock);
 743
 744        return !list_empty(&work->node) || work->canceling;
 745}
 746
 747static void kthread_insert_work_sanity_check(struct kthread_worker *worker,
 748                                             struct kthread_work *work)
 749{
 750        lockdep_assert_held(&worker->lock);
 751        WARN_ON_ONCE(!list_empty(&work->node));
 752        /* Do not use a work with >1 worker, see kthread_queue_work() */
 753        WARN_ON_ONCE(work->worker && work->worker != worker);
 754}
 755
 756/* insert @work before @pos in @worker */
 757static void kthread_insert_work(struct kthread_worker *worker,
 758                                struct kthread_work *work,
 759                                struct list_head *pos)
 760{
 761        kthread_insert_work_sanity_check(worker, work);
 762
 763        list_add_tail(&work->node, pos);
 764        work->worker = worker;
 765        if (!worker->current_work && likely(worker->task))
 766                wake_up_process(worker->task);
 767}
 768
 769/**
 770 * kthread_queue_work - queue a kthread_work
 771 * @worker: target kthread_worker
 772 * @work: kthread_work to queue
 773 *
 774 * Queue @work to work processor @task for async execution.  @task
 775 * must have been created with kthread_worker_create().  Returns %true
 776 * if @work was successfully queued, %false if it was already pending.
 777 *
 778 * Reinitialize the work if it needs to be used by another worker.
 779 * For example, when the worker was stopped and started again.
 780 */
 781bool kthread_queue_work(struct kthread_worker *worker,
 782                        struct kthread_work *work)
 783{
 784        bool ret = false;
 785        unsigned long flags;
 786
 787        spin_lock_irqsave(&worker->lock, flags);
 788        if (!queuing_blocked(worker, work)) {
 789                kthread_insert_work(worker, work, &worker->work_list);
 790                ret = true;
 791        }
 792        spin_unlock_irqrestore(&worker->lock, flags);
 793        return ret;
 794}
 795EXPORT_SYMBOL_GPL(kthread_queue_work);
 796
 797/**
 798 * kthread_delayed_work_timer_fn - callback that queues the associated kthread
 799 *      delayed work when the timer expires.
 800 * @__data: pointer to the data associated with the timer
 801 *
 802 * The format of the function is defined by struct timer_list.
 803 * It should have been called from irqsafe timer with irq already off.
 804 */
 805void kthread_delayed_work_timer_fn(unsigned long __data)
 806{
 807        struct kthread_delayed_work *dwork =
 808                (struct kthread_delayed_work *)__data;
 809        struct kthread_work *work = &dwork->work;
 810        struct kthread_worker *worker = work->worker;
 811
 812        /*
 813         * This might happen when a pending work is reinitialized.
 814         * It means that it is used a wrong way.
 815         */
 816        if (WARN_ON_ONCE(!worker))
 817                return;
 818
 819        spin_lock(&worker->lock);
 820        /* Work must not be used with >1 worker, see kthread_queue_work(). */
 821        WARN_ON_ONCE(work->worker != worker);
 822
 823        /* Move the work from worker->delayed_work_list. */
 824        WARN_ON_ONCE(list_empty(&work->node));
 825        list_del_init(&work->node);
 826        kthread_insert_work(worker, work, &worker->work_list);
 827
 828        spin_unlock(&worker->lock);
 829}
 830EXPORT_SYMBOL(kthread_delayed_work_timer_fn);
 831
 832void __kthread_queue_delayed_work(struct kthread_worker *worker,
 833                                  struct kthread_delayed_work *dwork,
 834                                  unsigned long delay)
 835{
 836        struct timer_list *timer = &dwork->timer;
 837        struct kthread_work *work = &dwork->work;
 838
 839        WARN_ON_ONCE(timer->function != kthread_delayed_work_timer_fn ||
 840                     timer->data != (unsigned long)dwork);
 841
 842        /*
 843         * If @delay is 0, queue @dwork->work immediately.  This is for
 844         * both optimization and correctness.  The earliest @timer can
 845         * expire is on the closest next tick and delayed_work users depend
 846         * on that there's no such delay when @delay is 0.
 847         */
 848        if (!delay) {
 849                kthread_insert_work(worker, work, &worker->work_list);
 850                return;
 851        }
 852
 853        /* Be paranoid and try to detect possible races already now. */
 854        kthread_insert_work_sanity_check(worker, work);
 855
 856        list_add(&work->node, &worker->delayed_work_list);
 857        work->worker = worker;
 858        timer->expires = jiffies + delay;
 859        add_timer(timer);
 860}
 861
 862/**
 863 * kthread_queue_delayed_work - queue the associated kthread work
 864 *      after a delay.
 865 * @worker: target kthread_worker
 866 * @dwork: kthread_delayed_work to queue
 867 * @delay: number of jiffies to wait before queuing
 868 *
 869 * If the work has not been pending it starts a timer that will queue
 870 * the work after the given @delay. If @delay is zero, it queues the
 871 * work immediately.
 872 *
 873 * Return: %false if the @work has already been pending. It means that
 874 * either the timer was running or the work was queued. It returns %true
 875 * otherwise.
 876 */
 877bool kthread_queue_delayed_work(struct kthread_worker *worker,
 878                                struct kthread_delayed_work *dwork,
 879                                unsigned long delay)
 880{
 881        struct kthread_work *work = &dwork->work;
 882        unsigned long flags;
 883        bool ret = false;
 884
 885        spin_lock_irqsave(&worker->lock, flags);
 886
 887        if (!queuing_blocked(worker, work)) {
 888                __kthread_queue_delayed_work(worker, dwork, delay);
 889                ret = true;
 890        }
 891
 892        spin_unlock_irqrestore(&worker->lock, flags);
 893        return ret;
 894}
 895EXPORT_SYMBOL_GPL(kthread_queue_delayed_work);
 896
 897struct kthread_flush_work {
 898        struct kthread_work     work;
 899        struct completion       done;
 900};
 901
 902static void kthread_flush_work_fn(struct kthread_work *work)
 903{
 904        struct kthread_flush_work *fwork =
 905                container_of(work, struct kthread_flush_work, work);
 906        complete(&fwork->done);
 907}
 908
 909/**
 910 * kthread_flush_work - flush a kthread_work
 911 * @work: work to flush
 912 *
 913 * If @work is queued or executing, wait for it to finish execution.
 914 */
 915void kthread_flush_work(struct kthread_work *work)
 916{
 917        struct kthread_flush_work fwork = {
 918                KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn),
 919                COMPLETION_INITIALIZER_ONSTACK(fwork.done),
 920        };
 921        struct kthread_worker *worker;
 922        bool noop = false;
 923
 924        worker = work->worker;
 925        if (!worker)
 926                return;
 927
 928        spin_lock_irq(&worker->lock);
 929        /* Work must not be used with >1 worker, see kthread_queue_work(). */
 930        WARN_ON_ONCE(work->worker != worker);
 931
 932        if (!list_empty(&work->node))
 933                kthread_insert_work(worker, &fwork.work, work->node.next);
 934        else if (worker->current_work == work)
 935                kthread_insert_work(worker, &fwork.work,
 936                                    worker->work_list.next);
 937        else
 938                noop = true;
 939
 940        spin_unlock_irq(&worker->lock);
 941
 942        if (!noop)
 943                wait_for_completion(&fwork.done);
 944}
 945EXPORT_SYMBOL_GPL(kthread_flush_work);
 946
 947/*
 948 * This function removes the work from the worker queue. Also it makes sure
 949 * that it won't get queued later via the delayed work's timer.
 950 *
 951 * The work might still be in use when this function finishes. See the
 952 * current_work proceed by the worker.
 953 *
 954 * Return: %true if @work was pending and successfully canceled,
 955 *      %false if @work was not pending
 956 */
 957static bool __kthread_cancel_work(struct kthread_work *work, bool is_dwork,
 958                                  unsigned long *flags)
 959{
 960        /* Try to cancel the timer if exists. */
 961        if (is_dwork) {
 962                struct kthread_delayed_work *dwork =
 963                        container_of(work, struct kthread_delayed_work, work);
 964                struct kthread_worker *worker = work->worker;
 965
 966                /*
 967                 * del_timer_sync() must be called to make sure that the timer
 968                 * callback is not running. The lock must be temporary released
 969                 * to avoid a deadlock with the callback. In the meantime,
 970                 * any queuing is blocked by setting the canceling counter.
 971                 */
 972                work->canceling++;
 973                spin_unlock_irqrestore(&worker->lock, *flags);
 974                del_timer_sync(&dwork->timer);
 975                spin_lock_irqsave(&worker->lock, *flags);
 976                work->canceling--;
 977        }
 978
 979        /*
 980         * Try to remove the work from a worker list. It might either
 981         * be from worker->work_list or from worker->delayed_work_list.
 982         */
 983        if (!list_empty(&work->node)) {
 984                list_del_init(&work->node);
 985                return true;
 986        }
 987
 988        return false;
 989}
 990
 991/**
 992 * kthread_mod_delayed_work - modify delay of or queue a kthread delayed work
 993 * @worker: kthread worker to use
 994 * @dwork: kthread delayed work to queue
 995 * @delay: number of jiffies to wait before queuing
 996 *
 997 * If @dwork is idle, equivalent to kthread_queue_delayed_work(). Otherwise,
 998 * modify @dwork's timer so that it expires after @delay. If @delay is zero,
 999 * @work is guaranteed to be queued immediately.
1000 *
1001 * Return: %true if @dwork was pending and its timer was modified,
1002 * %false otherwise.
1003 *
1004 * A special case is when the work is being canceled in parallel.
1005 * It might be caused either by the real kthread_cancel_delayed_work_sync()
1006 * or yet another kthread_mod_delayed_work() call. We let the other command
1007 * win and return %false here. The caller is supposed to synchronize these
1008 * operations a reasonable way.
1009 *
1010 * This function is safe to call from any context including IRQ handler.
1011 * See __kthread_cancel_work() and kthread_delayed_work_timer_fn()
1012 * for details.
1013 */
1014bool kthread_mod_delayed_work(struct kthread_worker *worker,
1015                              struct kthread_delayed_work *dwork,
1016                              unsigned long delay)
1017{
1018        struct kthread_work *work = &dwork->work;
1019        unsigned long flags;
1020        int ret = false;
1021
1022        spin_lock_irqsave(&worker->lock, flags);
1023
1024        /* Do not bother with canceling when never queued. */
1025        if (!work->worker)
1026                goto fast_queue;
1027
1028        /* Work must not be used with >1 worker, see kthread_queue_work() */
1029        WARN_ON_ONCE(work->worker != worker);
1030
1031        /* Do not fight with another command that is canceling this work. */
1032        if (work->canceling)
1033                goto out;
1034
1035        ret = __kthread_cancel_work(work, true, &flags);
1036fast_queue:
1037        __kthread_queue_delayed_work(worker, dwork, delay);
1038out:
1039        spin_unlock_irqrestore(&worker->lock, flags);
1040        return ret;
1041}
1042EXPORT_SYMBOL_GPL(kthread_mod_delayed_work);
1043
1044static bool __kthread_cancel_work_sync(struct kthread_work *work, bool is_dwork)
1045{
1046        struct kthread_worker *worker = work->worker;
1047        unsigned long flags;
1048        int ret = false;
1049
1050        if (!worker)
1051                goto out;
1052
1053        spin_lock_irqsave(&worker->lock, flags);
1054        /* Work must not be used with >1 worker, see kthread_queue_work(). */
1055        WARN_ON_ONCE(work->worker != worker);
1056
1057        ret = __kthread_cancel_work(work, is_dwork, &flags);
1058
1059        if (worker->current_work != work)
1060                goto out_fast;
1061
1062        /*
1063         * The work is in progress and we need to wait with the lock released.
1064         * In the meantime, block any queuing by setting the canceling counter.
1065         */
1066        work->canceling++;
1067        spin_unlock_irqrestore(&worker->lock, flags);
1068        kthread_flush_work(work);
1069        spin_lock_irqsave(&worker->lock, flags);
1070        work->canceling--;
1071
1072out_fast:
1073        spin_unlock_irqrestore(&worker->lock, flags);
1074out:
1075        return ret;
1076}
1077
1078/**
1079 * kthread_cancel_work_sync - cancel a kthread work and wait for it to finish
1080 * @work: the kthread work to cancel
1081 *
1082 * Cancel @work and wait for its execution to finish.  This function
1083 * can be used even if the work re-queues itself. On return from this
1084 * function, @work is guaranteed to be not pending or executing on any CPU.
1085 *
1086 * kthread_cancel_work_sync(&delayed_work->work) must not be used for
1087 * delayed_work's. Use kthread_cancel_delayed_work_sync() instead.
1088 *
1089 * The caller must ensure that the worker on which @work was last
1090 * queued can't be destroyed before this function returns.
1091 *
1092 * Return: %true if @work was pending, %false otherwise.
1093 */
1094bool kthread_cancel_work_sync(struct kthread_work *work)
1095{
1096        return __kthread_cancel_work_sync(work, false);
1097}
1098EXPORT_SYMBOL_GPL(kthread_cancel_work_sync);
1099
1100/**
1101 * kthread_cancel_delayed_work_sync - cancel a kthread delayed work and
1102 *      wait for it to finish.
1103 * @dwork: the kthread delayed work to cancel
1104 *
1105 * This is kthread_cancel_work_sync() for delayed works.
1106 *
1107 * Return: %true if @dwork was pending, %false otherwise.
1108 */
1109bool kthread_cancel_delayed_work_sync(struct kthread_delayed_work *dwork)
1110{
1111        return __kthread_cancel_work_sync(&dwork->work, true);
1112}
1113EXPORT_SYMBOL_GPL(kthread_cancel_delayed_work_sync);
1114
1115/**
1116 * kthread_flush_worker - flush all current works on a kthread_worker
1117 * @worker: worker to flush
1118 *
1119 * Wait until all currently executing or pending works on @worker are
1120 * finished.
1121 */
1122void kthread_flush_worker(struct kthread_worker *worker)
1123{
1124        struct kthread_flush_work fwork = {
1125                KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn),
1126                COMPLETION_INITIALIZER_ONSTACK(fwork.done),
1127        };
1128
1129        kthread_queue_work(worker, &fwork.work);
1130        wait_for_completion(&fwork.done);
1131}
1132EXPORT_SYMBOL_GPL(kthread_flush_worker);
1133
1134/**
1135 * kthread_destroy_worker - destroy a kthread worker
1136 * @worker: worker to be destroyed
1137 *
1138 * Flush and destroy @worker.  The simple flush is enough because the kthread
1139 * worker API is used only in trivial scenarios.  There are no multi-step state
1140 * machines needed.
1141 */
1142void kthread_destroy_worker(struct kthread_worker *worker)
1143{
1144        struct task_struct *task;
1145
1146        task = worker->task;
1147        if (WARN_ON(!task))
1148                return;
1149
1150        kthread_flush_worker(worker);
1151        kthread_stop(task);
1152        WARN_ON(!list_empty(&worker->work_list));
1153        kfree(worker);
1154}
1155EXPORT_SYMBOL(kthread_destroy_worker);
1156