linux/kernel/fork.c
<<
>>
Prefs
   1/*
   2 *  linux/kernel/fork.c
   3 *
   4 *  Copyright (C) 1991, 1992  Linus Torvalds
   5 */
   6
   7/*
   8 *  'fork.c' contains the help-routines for the 'fork' system call
   9 * (see also entry.S and others).
  10 * Fork is rather simple, once you get the hang of it, but the memory
  11 * management can be a bitch. See 'mm/memory.c': 'copy_page_range()'
  12 */
  13
  14#include <linux/slab.h>
  15#include <linux/init.h>
  16#include <linux/unistd.h>
  17#include <linux/module.h>
  18#include <linux/vmalloc.h>
  19#include <linux/completion.h>
  20#include <linux/personality.h>
  21#include <linux/mempolicy.h>
  22#include <linux/sem.h>
  23#include <linux/file.h>
  24#include <linux/fdtable.h>
  25#include <linux/iocontext.h>
  26#include <linux/key.h>
  27#include <linux/binfmts.h>
  28#include <linux/mman.h>
  29#include <linux/mmu_notifier.h>
  30#include <linux/fs.h>
  31#include <linux/nsproxy.h>
  32#include <linux/capability.h>
  33#include <linux/cpu.h>
  34#include <linux/cgroup.h>
  35#include <linux/security.h>
  36#include <linux/hugetlb.h>
  37#include <linux/swap.h>
  38#include <linux/syscalls.h>
  39#include <linux/jiffies.h>
  40#include <linux/tracehook.h>
  41#include <linux/futex.h>
  42#include <linux/compat.h>
  43#include <linux/task_io_accounting_ops.h>
  44#include <linux/rcupdate.h>
  45#include <linux/ptrace.h>
  46#include <linux/mount.h>
  47#include <linux/audit.h>
  48#include <linux/memcontrol.h>
  49#include <linux/ftrace.h>
  50#include <linux/profile.h>
  51#include <linux/rmap.h>
  52#include <linux/ksm.h>
  53#include <linux/acct.h>
  54#include <linux/tsacct_kern.h>
  55#include <linux/cn_proc.h>
  56#include <linux/freezer.h>
  57#include <linux/delayacct.h>
  58#include <linux/taskstats_kern.h>
  59#include <linux/random.h>
  60#include <linux/tty.h>
  61#include <linux/proc_fs.h>
  62#include <linux/blkdev.h>
  63#include <linux/fs_struct.h>
  64#include <linux/magic.h>
  65#include <linux/perf_event.h>
  66#include <linux/posix-timers.h>
  67#include <linux/user-return-notifier.h>
  68
  69#include <asm/pgtable.h>
  70#include <asm/pgalloc.h>
  71#include <asm/uaccess.h>
  72#include <asm/mmu_context.h>
  73#include <asm/cacheflush.h>
  74#include <asm/tlbflush.h>
  75
  76#include <trace/events/sched.h>
  77
  78/*
  79 * Protected counters by write_lock_irq(&tasklist_lock)
  80 */
  81unsigned long total_forks;      /* Handle normal Linux uptimes. */
  82int nr_threads;                 /* The idle threads do not count.. */
  83
  84int max_threads;                /* tunable limit on nr_threads */
  85
  86DEFINE_PER_CPU(unsigned long, process_counts) = 0;
  87
  88__cacheline_aligned DEFINE_RWLOCK(tasklist_lock);  /* outer */
  89
  90int nr_processes(void)
  91{
  92        int cpu;
  93        int total = 0;
  94
  95        for_each_possible_cpu(cpu)
  96                total += per_cpu(process_counts, cpu);
  97
  98        return total;
  99}
 100
 101#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
 102# define alloc_task_struct()    kmem_cache_alloc(task_struct_cachep, GFP_KERNEL)
 103# define free_task_struct(tsk)  kmem_cache_free(task_struct_cachep, (tsk))
 104static struct kmem_cache *task_struct_cachep;
 105#endif
 106
 107#ifndef __HAVE_ARCH_THREAD_INFO_ALLOCATOR
 108static inline struct thread_info *alloc_thread_info(struct task_struct *tsk)
 109{
 110#ifdef CONFIG_DEBUG_STACK_USAGE
 111        gfp_t mask = GFP_KERNEL | __GFP_ZERO;
 112#else
 113        gfp_t mask = GFP_KERNEL;
 114#endif
 115        return (struct thread_info *)__get_free_pages(mask, THREAD_SIZE_ORDER);
 116}
 117
 118static inline void free_thread_info(struct thread_info *ti)
 119{
 120        free_pages((unsigned long)ti, THREAD_SIZE_ORDER);
 121}
 122#endif
 123
 124/* SLAB cache for signal_struct structures (tsk->signal) */
 125static struct kmem_cache *signal_cachep;
 126
 127/* SLAB cache for sighand_struct structures (tsk->sighand) */
 128struct kmem_cache *sighand_cachep;
 129
 130/* SLAB cache for files_struct structures (tsk->files) */
 131struct kmem_cache *files_cachep;
 132
 133/* SLAB cache for fs_struct structures (tsk->fs) */
 134struct kmem_cache *fs_cachep;
 135
 136/* SLAB cache for vm_area_struct structures */
 137struct kmem_cache *vm_area_cachep;
 138
 139/* SLAB cache for mm_struct structures (tsk->mm) */
 140static struct kmem_cache *mm_cachep;
 141
 142static void account_kernel_stack(struct thread_info *ti, int account)
 143{
 144        struct zone *zone = page_zone(virt_to_page(ti));
 145
 146        mod_zone_page_state(zone, NR_KERNEL_STACK, account);
 147}
 148
 149void free_task(struct task_struct *tsk)
 150{
 151        prop_local_destroy_single(&tsk->dirties);
 152        account_kernel_stack(tsk->stack, -1);
 153        free_thread_info(tsk->stack);
 154        rt_mutex_debug_task_free(tsk);
 155        ftrace_graph_exit_task(tsk);
 156        free_task_struct(tsk);
 157}
 158EXPORT_SYMBOL(free_task);
 159
 160void __put_task_struct(struct task_struct *tsk)
 161{
 162        WARN_ON(!tsk->exit_state);
 163        WARN_ON(atomic_read(&tsk->usage));
 164        WARN_ON(tsk == current);
 165
 166        exit_creds(tsk);
 167        delayacct_tsk_free(tsk);
 168
 169        if (!profile_handoff_task(tsk))
 170                free_task(tsk);
 171}
 172
 173/*
 174 * macro override instead of weak attribute alias, to workaround
 175 * gcc 4.1.0 and 4.1.1 bugs with weak attribute and empty functions.
 176 */
 177#ifndef arch_task_cache_init
 178#define arch_task_cache_init()
 179#endif
 180
 181void __init fork_init(unsigned long mempages)
 182{
 183#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
 184#ifndef ARCH_MIN_TASKALIGN
 185#define ARCH_MIN_TASKALIGN      L1_CACHE_BYTES
 186#endif
 187        /* create a slab on which task_structs can be allocated */
 188        task_struct_cachep =
 189                kmem_cache_create("task_struct", sizeof(struct task_struct),
 190                        ARCH_MIN_TASKALIGN, SLAB_PANIC | SLAB_NOTRACK, NULL);
 191#endif
 192
 193        /* do the arch specific task caches init */
 194        arch_task_cache_init();
 195
 196        /*
 197         * The default maximum number of threads is set to a safe
 198         * value: the thread structures can take up at most half
 199         * of memory.
 200         */
 201        max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
 202
 203        /*
 204         * we need to allow at least 20 threads to boot a system
 205         */
 206        if(max_threads < 20)
 207                max_threads = 20;
 208
 209        init_task.signal->rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
 210        init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
 211        init_task.signal->rlim[RLIMIT_SIGPENDING] =
 212                init_task.signal->rlim[RLIMIT_NPROC];
 213}
 214
 215int __attribute__((weak)) arch_dup_task_struct(struct task_struct *dst,
 216                                               struct task_struct *src)
 217{
 218        *dst = *src;
 219        return 0;
 220}
 221
 222static struct task_struct *dup_task_struct(struct task_struct *orig)
 223{
 224        struct task_struct *tsk;
 225        struct thread_info *ti;
 226        unsigned long *stackend;
 227
 228        int err;
 229
 230        prepare_to_copy(orig);
 231
 232        tsk = alloc_task_struct();
 233        if (!tsk)
 234                return NULL;
 235
 236        ti = alloc_thread_info(tsk);
 237        if (!ti) {
 238                free_task_struct(tsk);
 239                return NULL;
 240        }
 241
 242        err = arch_dup_task_struct(tsk, orig);
 243        if (err)
 244                goto out;
 245
 246        tsk->stack = ti;
 247
 248        err = prop_local_init_single(&tsk->dirties);
 249        if (err)
 250                goto out;
 251
 252        setup_thread_stack(tsk, orig);
 253        clear_user_return_notifier(tsk);
 254        stackend = end_of_stack(tsk);
 255        *stackend = STACK_END_MAGIC;    /* for overflow detection */
 256
 257#ifdef CONFIG_CC_STACKPROTECTOR
 258        tsk->stack_canary = get_random_int();
 259#endif
 260
 261        /* One for us, one for whoever does the "release_task()" (usually parent) */
 262        atomic_set(&tsk->usage,2);
 263        atomic_set(&tsk->fs_excl, 0);
 264#ifdef CONFIG_BLK_DEV_IO_TRACE
 265        tsk->btrace_seq = 0;
 266#endif
 267        tsk->splice_pipe = NULL;
 268
 269        account_kernel_stack(ti, 1);
 270
 271        return tsk;
 272
 273out:
 274        free_thread_info(ti);
 275        free_task_struct(tsk);
 276        return NULL;
 277}
 278
 279#ifdef CONFIG_MMU
 280static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
 281{
 282        struct vm_area_struct *mpnt, *tmp, **pprev;
 283        struct rb_node **rb_link, *rb_parent;
 284        int retval;
 285        unsigned long charge;
 286        struct mempolicy *pol;
 287
 288        down_write(&oldmm->mmap_sem);
 289        flush_cache_dup_mm(oldmm);
 290        /*
 291         * Not linked in yet - no deadlock potential:
 292         */
 293        down_write_nested(&mm->mmap_sem, SINGLE_DEPTH_NESTING);
 294
 295        mm->locked_vm = 0;
 296        mm->mmap = NULL;
 297        mm->mmap_cache = NULL;
 298        mm->free_area_cache = oldmm->mmap_base;
 299        mm->cached_hole_size = ~0UL;
 300        mm->map_count = 0;
 301        cpumask_clear(mm_cpumask(mm));
 302        mm->mm_rb = RB_ROOT;
 303        rb_link = &mm->mm_rb.rb_node;
 304        rb_parent = NULL;
 305        pprev = &mm->mmap;
 306        retval = ksm_fork(mm, oldmm);
 307        if (retval)
 308                goto out;
 309
 310        for (mpnt = oldmm->mmap; mpnt; mpnt = mpnt->vm_next) {
 311                struct file *file;
 312
 313                if (mpnt->vm_flags & VM_DONTCOPY) {
 314                        long pages = vma_pages(mpnt);
 315                        mm->total_vm -= pages;
 316                        vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file,
 317                                                                -pages);
 318                        continue;
 319                }
 320                charge = 0;
 321                if (mpnt->vm_flags & VM_ACCOUNT) {
 322                        unsigned int len = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
 323                        if (security_vm_enough_memory(len))
 324                                goto fail_nomem;
 325                        charge = len;
 326                }
 327                tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
 328                if (!tmp)
 329                        goto fail_nomem;
 330                *tmp = *mpnt;
 331                pol = mpol_dup(vma_policy(mpnt));
 332                retval = PTR_ERR(pol);
 333                if (IS_ERR(pol))
 334                        goto fail_nomem_policy;
 335                vma_set_policy(tmp, pol);
 336                tmp->vm_flags &= ~VM_LOCKED;
 337                tmp->vm_mm = mm;
 338                tmp->vm_next = NULL;
 339                anon_vma_link(tmp);
 340                file = tmp->vm_file;
 341                if (file) {
 342                        struct inode *inode = file->f_path.dentry->d_inode;
 343                        struct address_space *mapping = file->f_mapping;
 344
 345                        get_file(file);
 346                        if (tmp->vm_flags & VM_DENYWRITE)
 347                                atomic_dec(&inode->i_writecount);
 348                        spin_lock(&mapping->i_mmap_lock);
 349                        if (tmp->vm_flags & VM_SHARED)
 350                                mapping->i_mmap_writable++;
 351                        tmp->vm_truncate_count = mpnt->vm_truncate_count;
 352                        flush_dcache_mmap_lock(mapping);
 353                        /* insert tmp into the share list, just after mpnt */
 354                        vma_prio_tree_add(tmp, mpnt);
 355                        flush_dcache_mmap_unlock(mapping);
 356                        spin_unlock(&mapping->i_mmap_lock);
 357                }
 358
 359                /*
 360                 * Clear hugetlb-related page reserves for children. This only
 361                 * affects MAP_PRIVATE mappings. Faults generated by the child
 362                 * are not guaranteed to succeed, even if read-only
 363                 */
 364                if (is_vm_hugetlb_page(tmp))
 365                        reset_vma_resv_huge_pages(tmp);
 366
 367                /*
 368                 * Link in the new vma and copy the page table entries.
 369                 */
 370                *pprev = tmp;
 371                pprev = &tmp->vm_next;
 372
 373                __vma_link_rb(mm, tmp, rb_link, rb_parent);
 374                rb_link = &tmp->vm_rb.rb_right;
 375                rb_parent = &tmp->vm_rb;
 376
 377                mm->map_count++;
 378                retval = copy_page_range(mm, oldmm, mpnt);
 379
 380                if (tmp->vm_ops && tmp->vm_ops->open)
 381                        tmp->vm_ops->open(tmp);
 382
 383                if (retval)
 384                        goto out;
 385        }
 386        /* a new mm has just been created */
 387        arch_dup_mmap(oldmm, mm);
 388        retval = 0;
 389out:
 390        up_write(&mm->mmap_sem);
 391        flush_tlb_mm(oldmm);
 392        up_write(&oldmm->mmap_sem);
 393        return retval;
 394fail_nomem_policy:
 395        kmem_cache_free(vm_area_cachep, tmp);
 396fail_nomem:
 397        retval = -ENOMEM;
 398        vm_unacct_memory(charge);
 399        goto out;
 400}
 401
 402static inline int mm_alloc_pgd(struct mm_struct * mm)
 403{
 404        mm->pgd = pgd_alloc(mm);
 405        if (unlikely(!mm->pgd))
 406                return -ENOMEM;
 407        return 0;
 408}
 409
 410static inline void mm_free_pgd(struct mm_struct * mm)
 411{
 412        pgd_free(mm, mm->pgd);
 413}
 414#else
 415#define dup_mmap(mm, oldmm)     (0)
 416#define mm_alloc_pgd(mm)        (0)
 417#define mm_free_pgd(mm)
 418#endif /* CONFIG_MMU */
 419
 420__cacheline_aligned_in_smp DEFINE_SPINLOCK(mmlist_lock);
 421
 422#define allocate_mm()   (kmem_cache_alloc(mm_cachep, GFP_KERNEL))
 423#define free_mm(mm)     (kmem_cache_free(mm_cachep, (mm)))
 424
 425static unsigned long default_dump_filter = MMF_DUMP_FILTER_DEFAULT;
 426
 427static int __init coredump_filter_setup(char *s)
 428{
 429        default_dump_filter =
 430                (simple_strtoul(s, NULL, 0) << MMF_DUMP_FILTER_SHIFT) &
 431                MMF_DUMP_FILTER_MASK;
 432        return 1;
 433}
 434
 435__setup("coredump_filter=", coredump_filter_setup);
 436
 437#include <linux/init_task.h>
 438
 439static void mm_init_aio(struct mm_struct *mm)
 440{
 441#ifdef CONFIG_AIO
 442        spin_lock_init(&mm->ioctx_lock);
 443        INIT_HLIST_HEAD(&mm->ioctx_list);
 444#endif
 445}
 446
 447static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p)
 448{
 449        atomic_set(&mm->mm_users, 1);
 450        atomic_set(&mm->mm_count, 1);
 451        init_rwsem(&mm->mmap_sem);
 452        INIT_LIST_HEAD(&mm->mmlist);
 453        mm->flags = (current->mm) ?
 454                (current->mm->flags & MMF_INIT_MASK) : default_dump_filter;
 455        mm->core_state = NULL;
 456        mm->nr_ptes = 0;
 457        set_mm_counter(mm, file_rss, 0);
 458        set_mm_counter(mm, anon_rss, 0);
 459        spin_lock_init(&mm->page_table_lock);
 460        mm->free_area_cache = TASK_UNMAPPED_BASE;
 461        mm->cached_hole_size = ~0UL;
 462        mm_init_aio(mm);
 463        mm_init_owner(mm, p);
 464
 465        if (likely(!mm_alloc_pgd(mm))) {
 466                mm->def_flags = 0;
 467                mmu_notifier_mm_init(mm);
 468                return mm;
 469        }
 470
 471        free_mm(mm);
 472        return NULL;
 473}
 474
 475/*
 476 * Allocate and initialize an mm_struct.
 477 */
 478struct mm_struct * mm_alloc(void)
 479{
 480        struct mm_struct * mm;
 481
 482        mm = allocate_mm();
 483        if (mm) {
 484                memset(mm, 0, sizeof(*mm));
 485                mm = mm_init(mm, current);
 486        }
 487        return mm;
 488}
 489
 490/*
 491 * Called when the last reference to the mm
 492 * is dropped: either by a lazy thread or by
 493 * mmput. Free the page directory and the mm.
 494 */
 495void __mmdrop(struct mm_struct *mm)
 496{
 497        BUG_ON(mm == &init_mm);
 498        mm_free_pgd(mm);
 499        destroy_context(mm);
 500        mmu_notifier_mm_destroy(mm);
 501        free_mm(mm);
 502}
 503EXPORT_SYMBOL_GPL(__mmdrop);
 504
 505/*
 506 * Decrement the use count and release all resources for an mm.
 507 */
 508void mmput(struct mm_struct *mm)
 509{
 510        might_sleep();
 511
 512        if (atomic_dec_and_test(&mm->mm_users)) {
 513                exit_aio(mm);
 514                ksm_exit(mm);
 515                exit_mmap(mm);
 516                set_mm_exe_file(mm, NULL);
 517                if (!list_empty(&mm->mmlist)) {
 518                        spin_lock(&mmlist_lock);
 519                        list_del(&mm->mmlist);
 520                        spin_unlock(&mmlist_lock);
 521                }
 522                put_swap_token(mm);
 523                if (mm->binfmt)
 524                        module_put(mm->binfmt->module);
 525                mmdrop(mm);
 526        }
 527}
 528EXPORT_SYMBOL_GPL(mmput);
 529
 530/**
 531 * get_task_mm - acquire a reference to the task's mm
 532 *
 533 * Returns %NULL if the task has no mm.  Checks PF_KTHREAD (meaning
 534 * this kernel workthread has transiently adopted a user mm with use_mm,
 535 * to do its AIO) is not set and if so returns a reference to it, after
 536 * bumping up the use count.  User must release the mm via mmput()
 537 * after use.  Typically used by /proc and ptrace.
 538 */
 539struct mm_struct *get_task_mm(struct task_struct *task)
 540{
 541        struct mm_struct *mm;
 542
 543        task_lock(task);
 544        mm = task->mm;
 545        if (mm) {
 546                if (task->flags & PF_KTHREAD)
 547                        mm = NULL;
 548                else
 549                        atomic_inc(&mm->mm_users);
 550        }
 551        task_unlock(task);
 552        return mm;
 553}
 554EXPORT_SYMBOL_GPL(get_task_mm);
 555
 556/* Please note the differences between mmput and mm_release.
 557 * mmput is called whenever we stop holding onto a mm_struct,
 558 * error success whatever.
 559 *
 560 * mm_release is called after a mm_struct has been removed
 561 * from the current process.
 562 *
 563 * This difference is important for error handling, when we
 564 * only half set up a mm_struct for a new process and need to restore
 565 * the old one.  Because we mmput the new mm_struct before
 566 * restoring the old one. . .
 567 * Eric Biederman 10 January 1998
 568 */
 569void mm_release(struct task_struct *tsk, struct mm_struct *mm)
 570{
 571        struct completion *vfork_done = tsk->vfork_done;
 572
 573        /* Get rid of any futexes when releasing the mm */
 574#ifdef CONFIG_FUTEX
 575        if (unlikely(tsk->robust_list)) {
 576                exit_robust_list(tsk);
 577                tsk->robust_list = NULL;
 578        }
 579#ifdef CONFIG_COMPAT
 580        if (unlikely(tsk->compat_robust_list)) {
 581                compat_exit_robust_list(tsk);
 582                tsk->compat_robust_list = NULL;
 583        }
 584#endif
 585        if (unlikely(!list_empty(&tsk->pi_state_list)))
 586                exit_pi_state_list(tsk);
 587#endif
 588
 589        /* Get rid of any cached register state */
 590        deactivate_mm(tsk, mm);
 591
 592        /* notify parent sleeping on vfork() */
 593        if (vfork_done) {
 594                tsk->vfork_done = NULL;
 595                complete(vfork_done);
 596        }
 597
 598        /*
 599         * If we're exiting normally, clear a user-space tid field if
 600         * requested.  We leave this alone when dying by signal, to leave
 601         * the value intact in a core dump, and to save the unnecessary
 602         * trouble otherwise.  Userland only wants this done for a sys_exit.
 603         */
 604        if (tsk->clear_child_tid) {
 605                if (!(tsk->flags & PF_SIGNALED) &&
 606                    atomic_read(&mm->mm_users) > 1) {
 607                        /*
 608                         * We don't check the error code - if userspace has
 609                         * not set up a proper pointer then tough luck.
 610                         */
 611                        put_user(0, tsk->clear_child_tid);
 612                        sys_futex(tsk->clear_child_tid, FUTEX_WAKE,
 613                                        1, NULL, NULL, 0);
 614                }
 615                tsk->clear_child_tid = NULL;
 616        }
 617}
 618
 619/*
 620 * Allocate a new mm structure and copy contents from the
 621 * mm structure of the passed in task structure.
 622 */
 623struct mm_struct *dup_mm(struct task_struct *tsk)
 624{
 625        struct mm_struct *mm, *oldmm = current->mm;
 626        int err;
 627
 628        if (!oldmm)
 629                return NULL;
 630
 631        mm = allocate_mm();
 632        if (!mm)
 633                goto fail_nomem;
 634
 635        memcpy(mm, oldmm, sizeof(*mm));
 636
 637        /* Initializing for Swap token stuff */
 638        mm->token_priority = 0;
 639        mm->last_interval = 0;
 640
 641        if (!mm_init(mm, tsk))
 642                goto fail_nomem;
 643
 644        if (init_new_context(tsk, mm))
 645                goto fail_nocontext;
 646
 647        dup_mm_exe_file(oldmm, mm);
 648
 649        err = dup_mmap(mm, oldmm);
 650        if (err)
 651                goto free_pt;
 652
 653        mm->hiwater_rss = get_mm_rss(mm);
 654        mm->hiwater_vm = mm->total_vm;
 655
 656        if (mm->binfmt && !try_module_get(mm->binfmt->module))
 657                goto free_pt;
 658
 659        return mm;
 660
 661free_pt:
 662        /* don't put binfmt in mmput, we haven't got module yet */
 663        mm->binfmt = NULL;
 664        mmput(mm);
 665
 666fail_nomem:
 667        return NULL;
 668
 669fail_nocontext:
 670        /*
 671         * If init_new_context() failed, we cannot use mmput() to free the mm
 672         * because it calls destroy_context()
 673         */
 674        mm_free_pgd(mm);
 675        free_mm(mm);
 676        return NULL;
 677}
 678
 679static int copy_mm(unsigned long clone_flags, struct task_struct * tsk)
 680{
 681        struct mm_struct * mm, *oldmm;
 682        int retval;
 683
 684        tsk->min_flt = tsk->maj_flt = 0;
 685        tsk->nvcsw = tsk->nivcsw = 0;
 686#ifdef CONFIG_DETECT_HUNG_TASK
 687        tsk->last_switch_count = tsk->nvcsw + tsk->nivcsw;
 688#endif
 689
 690        tsk->mm = NULL;
 691        tsk->active_mm = NULL;
 692
 693        /*
 694         * Are we cloning a kernel thread?
 695         *
 696         * We need to steal a active VM for that..
 697         */
 698        oldmm = current->mm;
 699        if (!oldmm)
 700                return 0;
 701
 702        if (clone_flags & CLONE_VM) {
 703                atomic_inc(&oldmm->mm_users);
 704                mm = oldmm;
 705                goto good_mm;
 706        }
 707
 708        retval = -ENOMEM;
 709        mm = dup_mm(tsk);
 710        if (!mm)
 711                goto fail_nomem;
 712
 713good_mm:
 714        /* Initializing for Swap token stuff */
 715        mm->token_priority = 0;
 716        mm->last_interval = 0;
 717
 718        tsk->mm = mm;
 719        tsk->active_mm = mm;
 720        return 0;
 721
 722fail_nomem:
 723        return retval;
 724}
 725
 726static int copy_fs(unsigned long clone_flags, struct task_struct *tsk)
 727{
 728        struct fs_struct *fs = current->fs;
 729        if (clone_flags & CLONE_FS) {
 730                /* tsk->fs is already what we want */
 731                write_lock(&fs->lock);
 732                if (fs->in_exec) {
 733                        write_unlock(&fs->lock);
 734                        return -EAGAIN;
 735                }
 736                fs->users++;
 737                write_unlock(&fs->lock);
 738                return 0;
 739        }
 740        tsk->fs = copy_fs_struct(fs);
 741        if (!tsk->fs)
 742                return -ENOMEM;
 743        return 0;
 744}
 745
 746static int copy_files(unsigned long clone_flags, struct task_struct * tsk)
 747{
 748        struct files_struct *oldf, *newf;
 749        int error = 0;
 750
 751        /*
 752         * A background process may not have any files ...
 753         */
 754        oldf = current->files;
 755        if (!oldf)
 756                goto out;
 757
 758        if (clone_flags & CLONE_FILES) {
 759                atomic_inc(&oldf->count);
 760                goto out;
 761        }
 762
 763        newf = dup_fd(oldf, &error);
 764        if (!newf)
 765                goto out;
 766
 767        tsk->files = newf;
 768        error = 0;
 769out:
 770        return error;
 771}
 772
 773static int copy_io(unsigned long clone_flags, struct task_struct *tsk)
 774{
 775#ifdef CONFIG_BLOCK
 776        struct io_context *ioc = current->io_context;
 777
 778        if (!ioc)
 779                return 0;
 780        /*
 781         * Share io context with parent, if CLONE_IO is set
 782         */
 783        if (clone_flags & CLONE_IO) {
 784                tsk->io_context = ioc_task_link(ioc);
 785                if (unlikely(!tsk->io_context))
 786                        return -ENOMEM;
 787        } else if (ioprio_valid(ioc->ioprio)) {
 788                tsk->io_context = alloc_io_context(GFP_KERNEL, -1);
 789                if (unlikely(!tsk->io_context))
 790                        return -ENOMEM;
 791
 792                tsk->io_context->ioprio = ioc->ioprio;
 793        }
 794#endif
 795        return 0;
 796}
 797
 798static int copy_sighand(unsigned long clone_flags, struct task_struct *tsk)
 799{
 800        struct sighand_struct *sig;
 801
 802        if (clone_flags & CLONE_SIGHAND) {
 803                atomic_inc(&current->sighand->count);
 804                return 0;
 805        }
 806        sig = kmem_cache_alloc(sighand_cachep, GFP_KERNEL);
 807        rcu_assign_pointer(tsk->sighand, sig);
 808        if (!sig)
 809                return -ENOMEM;
 810        atomic_set(&sig->count, 1);
 811        memcpy(sig->action, current->sighand->action, sizeof(sig->action));
 812        return 0;
 813}
 814
 815void __cleanup_sighand(struct sighand_struct *sighand)
 816{
 817        if (atomic_dec_and_test(&sighand->count))
 818                kmem_cache_free(sighand_cachep, sighand);
 819}
 820
 821
 822/*
 823 * Initialize POSIX timer handling for a thread group.
 824 */
 825static void posix_cpu_timers_init_group(struct signal_struct *sig)
 826{
 827        /* Thread group counters. */
 828        thread_group_cputime_init(sig);
 829
 830        /* Expiration times and increments. */
 831        sig->it[CPUCLOCK_PROF].expires = cputime_zero;
 832        sig->it[CPUCLOCK_PROF].incr = cputime_zero;
 833        sig->it[CPUCLOCK_VIRT].expires = cputime_zero;
 834        sig->it[CPUCLOCK_VIRT].incr = cputime_zero;
 835
 836        /* Cached expiration times. */
 837        sig->cputime_expires.prof_exp = cputime_zero;
 838        sig->cputime_expires.virt_exp = cputime_zero;
 839        sig->cputime_expires.sched_exp = 0;
 840
 841        if (sig->rlim[RLIMIT_CPU].rlim_cur != RLIM_INFINITY) {
 842                sig->cputime_expires.prof_exp =
 843                        secs_to_cputime(sig->rlim[RLIMIT_CPU].rlim_cur);
 844                sig->cputimer.running = 1;
 845        }
 846
 847        /* The timer lists. */
 848        INIT_LIST_HEAD(&sig->cpu_timers[0]);
 849        INIT_LIST_HEAD(&sig->cpu_timers[1]);
 850        INIT_LIST_HEAD(&sig->cpu_timers[2]);
 851}
 852
 853static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
 854{
 855        struct signal_struct *sig;
 856
 857        if (clone_flags & CLONE_THREAD)
 858                return 0;
 859
 860        sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
 861        tsk->signal = sig;
 862        if (!sig)
 863                return -ENOMEM;
 864
 865        atomic_set(&sig->count, 1);
 866        atomic_set(&sig->live, 1);
 867        init_waitqueue_head(&sig->wait_chldexit);
 868        sig->flags = 0;
 869        if (clone_flags & CLONE_NEWPID)
 870                sig->flags |= SIGNAL_UNKILLABLE;
 871        sig->group_exit_code = 0;
 872        sig->group_exit_task = NULL;
 873        sig->group_stop_count = 0;
 874        sig->curr_target = tsk;
 875        init_sigpending(&sig->shared_pending);
 876        INIT_LIST_HEAD(&sig->posix_timers);
 877
 878        hrtimer_init(&sig->real_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 879        sig->it_real_incr.tv64 = 0;
 880        sig->real_timer.function = it_real_fn;
 881
 882        sig->leader = 0;        /* session leadership doesn't inherit */
 883        sig->tty_old_pgrp = NULL;
 884        sig->tty = NULL;
 885
 886        sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero;
 887        sig->gtime = cputime_zero;
 888        sig->cgtime = cputime_zero;
 889#ifndef CONFIG_VIRT_CPU_ACCOUNTING
 890        sig->prev_utime = sig->prev_stime = cputime_zero;
 891#endif
 892        sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0;
 893        sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;
 894        sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0;
 895        sig->maxrss = sig->cmaxrss = 0;
 896        task_io_accounting_init(&sig->ioac);
 897        sig->sum_sched_runtime = 0;
 898        taskstats_tgid_init(sig);
 899
 900        task_lock(current->group_leader);
 901        memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
 902        task_unlock(current->group_leader);
 903
 904        posix_cpu_timers_init_group(sig);
 905
 906        acct_init_pacct(&sig->pacct);
 907
 908        tty_audit_fork(sig);
 909
 910        sig->oom_adj = current->signal->oom_adj;
 911
 912        return 0;
 913}
 914
 915void __cleanup_signal(struct signal_struct *sig)
 916{
 917        thread_group_cputime_free(sig);
 918        tty_kref_put(sig->tty);
 919        kmem_cache_free(signal_cachep, sig);
 920}
 921
 922static void copy_flags(unsigned long clone_flags, struct task_struct *p)
 923{
 924        unsigned long new_flags = p->flags;
 925
 926        new_flags &= ~PF_SUPERPRIV;
 927        new_flags |= PF_FORKNOEXEC;
 928        new_flags |= PF_STARTING;
 929        p->flags = new_flags;
 930        clear_freeze_flag(p);
 931}
 932
 933SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
 934{
 935        current->clear_child_tid = tidptr;
 936
 937        return task_pid_vnr(current);
 938}
 939
 940static void rt_mutex_init_task(struct task_struct *p)
 941{
 942        raw_spin_lock_init(&p->pi_lock);
 943#ifdef CONFIG_RT_MUTEXES
 944        plist_head_init_raw(&p->pi_waiters, &p->pi_lock);
 945        p->pi_blocked_on = NULL;
 946#endif
 947}
 948
 949#ifdef CONFIG_MM_OWNER
 950void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
 951{
 952        mm->owner = p;
 953}
 954#endif /* CONFIG_MM_OWNER */
 955
 956/*
 957 * Initialize POSIX timer handling for a single task.
 958 */
 959static void posix_cpu_timers_init(struct task_struct *tsk)
 960{
 961        tsk->cputime_expires.prof_exp = cputime_zero;
 962        tsk->cputime_expires.virt_exp = cputime_zero;
 963        tsk->cputime_expires.sched_exp = 0;
 964        INIT_LIST_HEAD(&tsk->cpu_timers[0]);
 965        INIT_LIST_HEAD(&tsk->cpu_timers[1]);
 966        INIT_LIST_HEAD(&tsk->cpu_timers[2]);
 967}
 968
 969/*
 970 * This creates a new process as a copy of the old one,
 971 * but does not actually start it yet.
 972 *
 973 * It copies the registers, and all the appropriate
 974 * parts of the process environment (as per the clone
 975 * flags). The actual kick-off is left to the caller.
 976 */
 977static struct task_struct *copy_process(unsigned long clone_flags,
 978                                        unsigned long stack_start,
 979                                        struct pt_regs *regs,
 980                                        unsigned long stack_size,
 981                                        int __user *child_tidptr,
 982                                        struct pid *pid,
 983                                        int trace)
 984{
 985        int retval;
 986        struct task_struct *p;
 987        int cgroup_callbacks_done = 0;
 988
 989        if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
 990                return ERR_PTR(-EINVAL);
 991
 992        /*
 993         * Thread groups must share signals as well, and detached threads
 994         * can only be started up within the thread group.
 995         */
 996        if ((clone_flags & CLONE_THREAD) && !(clone_flags & CLONE_SIGHAND))
 997                return ERR_PTR(-EINVAL);
 998
 999        /*
1000         * Shared signal handlers imply shared VM. By way of the above,
1001         * thread groups also imply shared VM. Blocking this case allows
1002         * for various simplifications in other code.
1003         */
1004        if ((clone_flags & CLONE_SIGHAND) && !(clone_flags & CLONE_VM))
1005                return ERR_PTR(-EINVAL);
1006
1007        /*
1008         * Siblings of global init remain as zombies on exit since they are
1009         * not reaped by their parent (swapper). To solve this and to avoid
1010         * multi-rooted process trees, prevent global and container-inits
1011         * from creating siblings.
1012         */
1013        if ((clone_flags & CLONE_PARENT) &&
1014                                current->signal->flags & SIGNAL_UNKILLABLE)
1015                return ERR_PTR(-EINVAL);
1016
1017        retval = security_task_create(clone_flags);
1018        if (retval)
1019                goto fork_out;
1020
1021        retval = -ENOMEM;
1022        p = dup_task_struct(current);
1023        if (!p)
1024                goto fork_out;
1025
1026        ftrace_graph_init_task(p);
1027
1028        rt_mutex_init_task(p);
1029
1030#ifdef CONFIG_PROVE_LOCKING
1031        DEBUG_LOCKS_WARN_ON(!p->hardirqs_enabled);
1032        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
1033#endif
1034        retval = -EAGAIN;
1035        if (atomic_read(&p->real_cred->user->processes) >=
1036                        p->signal->rlim[RLIMIT_NPROC].rlim_cur) {
1037                if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
1038                    p->real_cred->user != INIT_USER)
1039                        goto bad_fork_free;
1040        }
1041
1042        retval = copy_creds(p, clone_flags);
1043        if (retval < 0)
1044                goto bad_fork_free;
1045
1046        /*
1047         * If multiple threads are within copy_process(), then this check
1048         * triggers too late. This doesn't hurt, the check is only there
1049         * to stop root fork bombs.
1050         */
1051        retval = -EAGAIN;
1052        if (nr_threads >= max_threads)
1053                goto bad_fork_cleanup_count;
1054
1055        if (!try_module_get(task_thread_info(p)->exec_domain->module))
1056                goto bad_fork_cleanup_count;
1057
1058        p->did_exec = 0;
1059        delayacct_tsk_init(p);  /* Must remain after dup_task_struct() */
1060        copy_flags(clone_flags, p);
1061        INIT_LIST_HEAD(&p->children);
1062        INIT_LIST_HEAD(&p->sibling);
1063        rcu_copy_process(p);
1064        p->vfork_done = NULL;
1065        spin_lock_init(&p->alloc_lock);
1066
1067        init_sigpending(&p->pending);
1068
1069        p->utime = cputime_zero;
1070        p->stime = cputime_zero;
1071        p->gtime = cputime_zero;
1072        p->utimescaled = cputime_zero;
1073        p->stimescaled = cputime_zero;
1074#ifndef CONFIG_VIRT_CPU_ACCOUNTING
1075        p->prev_utime = cputime_zero;
1076        p->prev_stime = cputime_zero;
1077#endif
1078
1079        p->default_timer_slack_ns = current->timer_slack_ns;
1080
1081        task_io_accounting_init(&p->ioac);
1082        acct_clear_integrals(p);
1083
1084        posix_cpu_timers_init(p);
1085
1086        p->lock_depth = -1;             /* -1 = no lock */
1087        do_posix_clock_monotonic_gettime(&p->start_time);
1088        p->real_start_time = p->start_time;
1089        monotonic_to_bootbased(&p->real_start_time);
1090        p->io_context = NULL;
1091        p->audit_context = NULL;
1092        cgroup_fork(p);
1093#ifdef CONFIG_NUMA
1094        p->mempolicy = mpol_dup(p->mempolicy);
1095        if (IS_ERR(p->mempolicy)) {
1096                retval = PTR_ERR(p->mempolicy);
1097                p->mempolicy = NULL;
1098                goto bad_fork_cleanup_cgroup;
1099        }
1100        mpol_fix_fork_child_flag(p);
1101#endif
1102#ifdef CONFIG_TRACE_IRQFLAGS
1103        p->irq_events = 0;
1104#ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW
1105        p->hardirqs_enabled = 1;
1106#else
1107        p->hardirqs_enabled = 0;
1108#endif
1109        p->hardirq_enable_ip = 0;
1110        p->hardirq_enable_event = 0;
1111        p->hardirq_disable_ip = _THIS_IP_;
1112        p->hardirq_disable_event = 0;
1113        p->softirqs_enabled = 1;
1114        p->softirq_enable_ip = _THIS_IP_;
1115        p->softirq_enable_event = 0;
1116        p->softirq_disable_ip = 0;
1117        p->softirq_disable_event = 0;
1118        p->hardirq_context = 0;
1119        p->softirq_context = 0;
1120#endif
1121#ifdef CONFIG_LOCKDEP
1122        p->lockdep_depth = 0; /* no locks held yet */
1123        p->curr_chain_key = 0;
1124        p->lockdep_recursion = 0;
1125#endif
1126
1127#ifdef CONFIG_DEBUG_MUTEXES
1128        p->blocked_on = NULL; /* not blocked yet */
1129#endif
1130#ifdef CONFIG_CGROUP_MEM_RES_CTLR
1131        p->memcg_batch.do_batch = 0;
1132        p->memcg_batch.memcg = NULL;
1133#endif
1134
1135        p->bts = NULL;
1136
1137        p->stack_start = stack_start;
1138
1139        /* Perform scheduler related setup. Assign this task to a CPU. */
1140        sched_fork(p, clone_flags);
1141
1142        retval = perf_event_init_task(p);
1143        if (retval)
1144                goto bad_fork_cleanup_policy;
1145
1146        if ((retval = audit_alloc(p)))
1147                goto bad_fork_cleanup_policy;
1148        /* copy all the process information */
1149        if ((retval = copy_semundo(clone_flags, p)))
1150                goto bad_fork_cleanup_audit;
1151        if ((retval = copy_files(clone_flags, p)))
1152                goto bad_fork_cleanup_semundo;
1153        if ((retval = copy_fs(clone_flags, p)))
1154                goto bad_fork_cleanup_files;
1155        if ((retval = copy_sighand(clone_flags, p)))
1156                goto bad_fork_cleanup_fs;
1157        if ((retval = copy_signal(clone_flags, p)))
1158                goto bad_fork_cleanup_sighand;
1159        if ((retval = copy_mm(clone_flags, p)))
1160                goto bad_fork_cleanup_signal;
1161        if ((retval = copy_namespaces(clone_flags, p)))
1162                goto bad_fork_cleanup_mm;
1163        if ((retval = copy_io(clone_flags, p)))
1164                goto bad_fork_cleanup_namespaces;
1165        retval = copy_thread(clone_flags, stack_start, stack_size, p, regs);
1166        if (retval)
1167                goto bad_fork_cleanup_io;
1168
1169        if (pid != &init_struct_pid) {
1170                retval = -ENOMEM;
1171                pid = alloc_pid(p->nsproxy->pid_ns);
1172                if (!pid)
1173                        goto bad_fork_cleanup_io;
1174
1175                if (clone_flags & CLONE_NEWPID) {
1176                        retval = pid_ns_prepare_proc(p->nsproxy->pid_ns);
1177                        if (retval < 0)
1178                                goto bad_fork_free_pid;
1179                }
1180        }
1181
1182        p->pid = pid_nr(pid);
1183        p->tgid = p->pid;
1184        if (clone_flags & CLONE_THREAD)
1185                p->tgid = current->tgid;
1186
1187        if (current->nsproxy != p->nsproxy) {
1188                retval = ns_cgroup_clone(p, pid);
1189                if (retval)
1190                        goto bad_fork_free_pid;
1191        }
1192
1193        p->set_child_tid = (clone_flags & CLONE_CHILD_SETTID) ? child_tidptr : NULL;
1194        /*
1195         * Clear TID on mm_release()?
1196         */
1197        p->clear_child_tid = (clone_flags & CLONE_CHILD_CLEARTID) ? child_tidptr: NULL;
1198#ifdef CONFIG_FUTEX
1199        p->robust_list = NULL;
1200#ifdef CONFIG_COMPAT
1201        p->compat_robust_list = NULL;
1202#endif
1203        INIT_LIST_HEAD(&p->pi_state_list);
1204        p->pi_state_cache = NULL;
1205#endif
1206        /*
1207         * sigaltstack should be cleared when sharing the same VM
1208         */
1209        if ((clone_flags & (CLONE_VM|CLONE_VFORK)) == CLONE_VM)
1210                p->sas_ss_sp = p->sas_ss_size = 0;
1211
1212        /*
1213         * Syscall tracing and stepping should be turned off in the
1214         * child regardless of CLONE_PTRACE.
1215         */
1216        user_disable_single_step(p);
1217        clear_tsk_thread_flag(p, TIF_SYSCALL_TRACE);
1218#ifdef TIF_SYSCALL_EMU
1219        clear_tsk_thread_flag(p, TIF_SYSCALL_EMU);
1220#endif
1221        clear_all_latency_tracing(p);
1222
1223        /* ok, now we should be set up.. */
1224        p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
1225        p->pdeath_signal = 0;
1226        p->exit_state = 0;
1227
1228        /*
1229         * Ok, make it visible to the rest of the system.
1230         * We dont wake it up yet.
1231         */
1232        p->group_leader = p;
1233        INIT_LIST_HEAD(&p->thread_group);
1234
1235        /* Now that the task is set up, run cgroup callbacks if
1236         * necessary. We need to run them before the task is visible
1237         * on the tasklist. */
1238        cgroup_fork_callbacks(p);
1239        cgroup_callbacks_done = 1;
1240
1241        /* Need tasklist lock for parent etc handling! */
1242        write_lock_irq(&tasklist_lock);
1243
1244        /* CLONE_PARENT re-uses the old parent */
1245        if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) {
1246                p->real_parent = current->real_parent;
1247                p->parent_exec_id = current->parent_exec_id;
1248        } else {
1249                p->real_parent = current;
1250                p->parent_exec_id = current->self_exec_id;
1251        }
1252
1253        spin_lock(&current->sighand->siglock);
1254
1255        /*
1256         * Process group and session signals need to be delivered to just the
1257         * parent before the fork or both the parent and the child after the
1258         * fork. Restart if a signal comes in before we add the new process to
1259         * it's process group.
1260         * A fatal signal pending means that current will exit, so the new
1261         * thread can't slip out of an OOM kill (or normal SIGKILL).
1262         */
1263        recalc_sigpending();
1264        if (signal_pending(current)) {
1265                spin_unlock(&current->sighand->siglock);
1266                write_unlock_irq(&tasklist_lock);
1267                retval = -ERESTARTNOINTR;
1268                goto bad_fork_free_pid;
1269        }
1270
1271        if (clone_flags & CLONE_THREAD) {
1272                atomic_inc(&current->signal->count);
1273                atomic_inc(&current->signal->live);
1274                p->group_leader = current->group_leader;
1275                list_add_tail_rcu(&p->thread_group, &p->group_leader->thread_group);
1276        }
1277
1278        if (likely(p->pid)) {
1279                tracehook_finish_clone(p, clone_flags, trace);
1280
1281                if (thread_group_leader(p)) {
1282                        if (clone_flags & CLONE_NEWPID)
1283                                p->nsproxy->pid_ns->child_reaper = p;
1284
1285                        p->signal->leader_pid = pid;
1286                        tty_kref_put(p->signal->tty);
1287                        p->signal->tty = tty_kref_get(current->signal->tty);
1288                        attach_pid(p, PIDTYPE_PGID, task_pgrp(current));
1289                        attach_pid(p, PIDTYPE_SID, task_session(current));
1290                        list_add_tail(&p->sibling, &p->real_parent->children);
1291                        list_add_tail_rcu(&p->tasks, &init_task.tasks);
1292                        __get_cpu_var(process_counts)++;
1293                }
1294                attach_pid(p, PIDTYPE_PID, pid);
1295                nr_threads++;
1296        }
1297
1298        total_forks++;
1299        spin_unlock(&current->sighand->siglock);
1300        write_unlock_irq(&tasklist_lock);
1301        proc_fork_connector(p);
1302        cgroup_post_fork(p);
1303        perf_event_fork(p);
1304        return p;
1305
1306bad_fork_free_pid:
1307        if (pid != &init_struct_pid)
1308                free_pid(pid);
1309bad_fork_cleanup_io:
1310        if (p->io_context)
1311                exit_io_context(p);
1312bad_fork_cleanup_namespaces:
1313        exit_task_namespaces(p);
1314bad_fork_cleanup_mm:
1315        if (p->mm)
1316                mmput(p->mm);
1317bad_fork_cleanup_signal:
1318        if (!(clone_flags & CLONE_THREAD))
1319                __cleanup_signal(p->signal);
1320bad_fork_cleanup_sighand:
1321        __cleanup_sighand(p->sighand);
1322bad_fork_cleanup_fs:
1323        exit_fs(p); /* blocking */
1324bad_fork_cleanup_files:
1325        exit_files(p); /* blocking */
1326bad_fork_cleanup_semundo:
1327        exit_sem(p);
1328bad_fork_cleanup_audit:
1329        audit_free(p);
1330bad_fork_cleanup_policy:
1331        perf_event_free_task(p);
1332#ifdef CONFIG_NUMA
1333        mpol_put(p->mempolicy);
1334bad_fork_cleanup_cgroup:
1335#endif
1336        cgroup_exit(p, cgroup_callbacks_done);
1337        delayacct_tsk_free(p);
1338        module_put(task_thread_info(p)->exec_domain->module);
1339bad_fork_cleanup_count:
1340        atomic_dec(&p->cred->user->processes);
1341        exit_creds(p);
1342bad_fork_free:
1343        free_task(p);
1344fork_out:
1345        return ERR_PTR(retval);
1346}
1347
1348noinline struct pt_regs * __cpuinit __attribute__((weak)) idle_regs(struct pt_regs *regs)
1349{
1350        memset(regs, 0, sizeof(struct pt_regs));
1351        return regs;
1352}
1353
1354struct task_struct * __cpuinit fork_idle(int cpu)
1355{
1356        struct task_struct *task;
1357        struct pt_regs regs;
1358
1359        task = copy_process(CLONE_VM, 0, idle_regs(&regs), 0, NULL,
1360                            &init_struct_pid, 0);
1361        if (!IS_ERR(task))
1362                init_idle(task, cpu);
1363
1364        return task;
1365}
1366
1367/*
1368 *  Ok, this is the main fork-routine.
1369 *
1370 * It copies the process, and if successful kick-starts
1371 * it and waits for it to finish using the VM if required.
1372 */
1373long do_fork(unsigned long clone_flags,
1374              unsigned long stack_start,
1375              struct pt_regs *regs,
1376              unsigned long stack_size,
1377              int __user *parent_tidptr,
1378              int __user *child_tidptr)
1379{
1380        struct task_struct *p;
1381        int trace = 0;
1382        long nr;
1383
1384        /*
1385         * Do some preliminary argument and permissions checking before we
1386         * actually start allocating stuff
1387         */
1388        if (clone_flags & CLONE_NEWUSER) {
1389                if (clone_flags & CLONE_THREAD)
1390                        return -EINVAL;
1391                /* hopefully this check will go away when userns support is
1392                 * complete
1393                 */
1394                if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SETUID) ||
1395                                !capable(CAP_SETGID))
1396                        return -EPERM;
1397        }
1398
1399        /*
1400         * We hope to recycle these flags after 2.6.26
1401         */
1402        if (unlikely(clone_flags & CLONE_STOPPED)) {
1403                static int __read_mostly count = 100;
1404
1405                if (count > 0 && printk_ratelimit()) {
1406                        char comm[TASK_COMM_LEN];
1407
1408                        count--;
1409                        printk(KERN_INFO "fork(): process `%s' used deprecated "
1410                                        "clone flags 0x%lx\n",
1411                                get_task_comm(comm, current),
1412                                clone_flags & CLONE_STOPPED);
1413                }
1414        }
1415
1416        /*
1417         * When called from kernel_thread, don't do user tracing stuff.
1418         */
1419        if (likely(user_mode(regs)))
1420                trace = tracehook_prepare_clone(clone_flags);
1421
1422        p = copy_process(clone_flags, stack_start, regs, stack_size,
1423                         child_tidptr, NULL, trace);
1424        /*
1425         * Do this prior waking up the new thread - the thread pointer
1426         * might get invalid after that point, if the thread exits quickly.
1427         */
1428        if (!IS_ERR(p)) {
1429                struct completion vfork;
1430
1431                trace_sched_process_fork(current, p);
1432
1433                nr = task_pid_vnr(p);
1434
1435                if (clone_flags & CLONE_PARENT_SETTID)
1436                        put_user(nr, parent_tidptr);
1437
1438                if (clone_flags & CLONE_VFORK) {
1439                        p->vfork_done = &vfork;
1440                        init_completion(&vfork);
1441                }
1442
1443                audit_finish_fork(p);
1444                tracehook_report_clone(regs, clone_flags, nr, p);
1445
1446                /*
1447                 * We set PF_STARTING at creation in case tracing wants to
1448                 * use this to distinguish a fully live task from one that
1449                 * hasn't gotten to tracehook_report_clone() yet.  Now we
1450                 * clear it and set the child going.
1451                 */
1452                p->flags &= ~PF_STARTING;
1453
1454                if (unlikely(clone_flags & CLONE_STOPPED)) {
1455                        /*
1456                         * We'll start up with an immediate SIGSTOP.
1457                         */
1458                        sigaddset(&p->pending.signal, SIGSTOP);
1459                        set_tsk_thread_flag(p, TIF_SIGPENDING);
1460                        __set_task_state(p, TASK_STOPPED);
1461                } else {
1462                        wake_up_new_task(p, clone_flags);
1463                }
1464
1465                tracehook_report_clone_complete(trace, regs,
1466                                                clone_flags, nr, p);
1467
1468                if (clone_flags & CLONE_VFORK) {
1469                        freezer_do_not_count();
1470                        wait_for_completion(&vfork);
1471                        freezer_count();
1472                        tracehook_report_vfork_done(p, nr);
1473                }
1474        } else {
1475                nr = PTR_ERR(p);
1476        }
1477        return nr;
1478}
1479
1480#ifndef ARCH_MIN_MMSTRUCT_ALIGN
1481#define ARCH_MIN_MMSTRUCT_ALIGN 0
1482#endif
1483
1484static void sighand_ctor(void *data)
1485{
1486        struct sighand_struct *sighand = data;
1487
1488        spin_lock_init(&sighand->siglock);
1489        init_waitqueue_head(&sighand->signalfd_wqh);
1490}
1491
1492void __init proc_caches_init(void)
1493{
1494        sighand_cachep = kmem_cache_create("sighand_cache",
1495                        sizeof(struct sighand_struct), 0,
1496                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_DESTROY_BY_RCU|
1497                        SLAB_NOTRACK, sighand_ctor);
1498        signal_cachep = kmem_cache_create("signal_cache",
1499                        sizeof(struct signal_struct), 0,
1500                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
1501        files_cachep = kmem_cache_create("files_cache",
1502                        sizeof(struct files_struct), 0,
1503                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
1504        fs_cachep = kmem_cache_create("fs_cache",
1505                        sizeof(struct fs_struct), 0,
1506                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
1507        mm_cachep = kmem_cache_create("mm_struct",
1508                        sizeof(struct mm_struct), ARCH_MIN_MMSTRUCT_ALIGN,
1509                        SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_NOTRACK, NULL);
1510        vm_area_cachep = KMEM_CACHE(vm_area_struct, SLAB_PANIC);
1511        mmap_init();
1512}
1513
1514/*
1515 * Check constraints on flags passed to the unshare system call and
1516 * force unsharing of additional process context as appropriate.
1517 */
1518static void check_unshare_flags(unsigned long *flags_ptr)
1519{
1520        /*
1521         * If unsharing a thread from a thread group, must also
1522         * unshare vm.
1523         */
1524        if (*flags_ptr & CLONE_THREAD)
1525                *flags_ptr |= CLONE_VM;
1526
1527        /*
1528         * If unsharing vm, must also unshare signal handlers.
1529         */
1530        if (*flags_ptr & CLONE_VM)
1531                *flags_ptr |= CLONE_SIGHAND;
1532
1533        /*
1534         * If unsharing signal handlers and the task was created
1535         * using CLONE_THREAD, then must unshare the thread
1536         */
1537        if ((*flags_ptr & CLONE_SIGHAND) &&
1538            (atomic_read(&current->signal->count) > 1))
1539                *flags_ptr |= CLONE_THREAD;
1540
1541        /*
1542         * If unsharing namespace, must also unshare filesystem information.
1543         */
1544        if (*flags_ptr & CLONE_NEWNS)
1545                *flags_ptr |= CLONE_FS;
1546}
1547
1548/*
1549 * Unsharing of tasks created with CLONE_THREAD is not supported yet
1550 */
1551static int unshare_thread(unsigned long unshare_flags)
1552{
1553        if (unshare_flags & CLONE_THREAD)
1554                return -EINVAL;
1555
1556        return 0;
1557}
1558
1559/*
1560 * Unshare the filesystem structure if it is being shared
1561 */
1562static int unshare_fs(unsigned long unshare_flags, struct fs_struct **new_fsp)
1563{
1564        struct fs_struct *fs = current->fs;
1565
1566        if (!(unshare_flags & CLONE_FS) || !fs)
1567                return 0;
1568
1569        /* don't need lock here; in the worst case we'll do useless copy */
1570        if (fs->users == 1)
1571                return 0;
1572
1573        *new_fsp = copy_fs_struct(fs);
1574        if (!*new_fsp)
1575                return -ENOMEM;
1576
1577        return 0;
1578}
1579
1580/*
1581 * Unsharing of sighand is not supported yet
1582 */
1583static int unshare_sighand(unsigned long unshare_flags, struct sighand_struct **new_sighp)
1584{
1585        struct sighand_struct *sigh = current->sighand;
1586
1587        if ((unshare_flags & CLONE_SIGHAND) && atomic_read(&sigh->count) > 1)
1588                return -EINVAL;
1589        else
1590                return 0;
1591}
1592
1593/*
1594 * Unshare vm if it is being shared
1595 */
1596static int unshare_vm(unsigned long unshare_flags, struct mm_struct **new_mmp)
1597{
1598        struct mm_struct *mm = current->mm;
1599
1600        if ((unshare_flags & CLONE_VM) &&
1601            (mm && atomic_read(&mm->mm_users) > 1)) {
1602                return -EINVAL;
1603        }
1604
1605        return 0;
1606}
1607
1608/*
1609 * Unshare file descriptor table if it is being shared
1610 */
1611static int unshare_fd(unsigned long unshare_flags, struct files_struct **new_fdp)
1612{
1613        struct files_struct *fd = current->files;
1614        int error = 0;
1615
1616        if ((unshare_flags & CLONE_FILES) &&
1617            (fd && atomic_read(&fd->count) > 1)) {
1618                *new_fdp = dup_fd(fd, &error);
1619                if (!*new_fdp)
1620                        return error;
1621        }
1622
1623        return 0;
1624}
1625
1626/*
1627 * unshare allows a process to 'unshare' part of the process
1628 * context which was originally shared using clone.  copy_*
1629 * functions used by do_fork() cannot be used here directly
1630 * because they modify an inactive task_struct that is being
1631 * constructed. Here we are modifying the current, active,
1632 * task_struct.
1633 */
1634SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
1635{
1636        int err = 0;
1637        struct fs_struct *fs, *new_fs = NULL;
1638        struct sighand_struct *new_sigh = NULL;
1639        struct mm_struct *mm, *new_mm = NULL, *active_mm = NULL;
1640        struct files_struct *fd, *new_fd = NULL;
1641        struct nsproxy *new_nsproxy = NULL;
1642        int do_sysvsem = 0;
1643
1644        check_unshare_flags(&unshare_flags);
1645
1646        /* Return -EINVAL for all unsupported flags */
1647        err = -EINVAL;
1648        if (unshare_flags & ~(CLONE_THREAD|CLONE_FS|CLONE_NEWNS|CLONE_SIGHAND|
1649                                CLONE_VM|CLONE_FILES|CLONE_SYSVSEM|
1650                                CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET))
1651                goto bad_unshare_out;
1652
1653        /*
1654         * CLONE_NEWIPC must also detach from the undolist: after switching
1655         * to a new ipc namespace, the semaphore arrays from the old
1656         * namespace are unreachable.
1657         */
1658        if (unshare_flags & (CLONE_NEWIPC|CLONE_SYSVSEM))
1659                do_sysvsem = 1;
1660        if ((err = unshare_thread(unshare_flags)))
1661                goto bad_unshare_out;
1662        if ((err = unshare_fs(unshare_flags, &new_fs)))
1663                goto bad_unshare_cleanup_thread;
1664        if ((err = unshare_sighand(unshare_flags, &new_sigh)))
1665                goto bad_unshare_cleanup_fs;
1666        if ((err = unshare_vm(unshare_flags, &new_mm)))
1667                goto bad_unshare_cleanup_sigh;
1668        if ((err = unshare_fd(unshare_flags, &new_fd)))
1669                goto bad_unshare_cleanup_vm;
1670        if ((err = unshare_nsproxy_namespaces(unshare_flags, &new_nsproxy,
1671                        new_fs)))
1672                goto bad_unshare_cleanup_fd;
1673
1674        if (new_fs ||  new_mm || new_fd || do_sysvsem || new_nsproxy) {
1675                if (do_sysvsem) {
1676                        /*
1677                         * CLONE_SYSVSEM is equivalent to sys_exit().
1678                         */
1679                        exit_sem(current);
1680                }
1681
1682                if (new_nsproxy) {
1683                        switch_task_namespaces(current, new_nsproxy);
1684                        new_nsproxy = NULL;
1685                }
1686
1687                task_lock(current);
1688
1689                if (new_fs) {
1690                        fs = current->fs;
1691                        write_lock(&fs->lock);
1692                        current->fs = new_fs;
1693                        if (--fs->users)
1694                                new_fs = NULL;
1695                        else
1696                                new_fs = fs;
1697                        write_unlock(&fs->lock);
1698                }
1699
1700                if (new_mm) {
1701                        mm = current->mm;
1702                        active_mm = current->active_mm;
1703                        current->mm = new_mm;
1704                        current->active_mm = new_mm;
1705                        activate_mm(active_mm, new_mm);
1706                        new_mm = mm;
1707                }
1708
1709                if (new_fd) {
1710                        fd = current->files;
1711                        current->files = new_fd;
1712                        new_fd = fd;
1713                }
1714
1715                task_unlock(current);
1716        }
1717
1718        if (new_nsproxy)
1719                put_nsproxy(new_nsproxy);
1720
1721bad_unshare_cleanup_fd:
1722        if (new_fd)
1723                put_files_struct(new_fd);
1724
1725bad_unshare_cleanup_vm:
1726        if (new_mm)
1727                mmput(new_mm);
1728
1729bad_unshare_cleanup_sigh:
1730        if (new_sigh)
1731                if (atomic_dec_and_test(&new_sigh->count))
1732                        kmem_cache_free(sighand_cachep, new_sigh);
1733
1734bad_unshare_cleanup_fs:
1735        if (new_fs)
1736                free_fs_struct(new_fs);
1737
1738bad_unshare_cleanup_thread:
1739bad_unshare_out:
1740        return err;
1741}
1742
1743/*
1744 *      Helper to unshare the files of the current task.
1745 *      We don't want to expose copy_files internals to
1746 *      the exec layer of the kernel.
1747 */
1748
1749int unshare_files(struct files_struct **displaced)
1750{
1751        struct task_struct *task = current;
1752        struct files_struct *copy = NULL;
1753        int error;
1754
1755        error = unshare_fd(CLONE_FILES, &copy);
1756        if (error || !copy) {
1757                *displaced = NULL;
1758                return error;
1759        }
1760        *displaced = task->files;
1761        task_lock(task);
1762        task->files = copy;
1763        task_unlock(task);
1764        return 0;
1765}
1766
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.