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