linux/fs/namei.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 *  linux/fs/namei.c
   4 *
   5 *  Copyright (C) 1991, 1992  Linus Torvalds
   6 */
   7
   8/*
   9 * Some corrections by tytso.
  10 */
  11
  12/* [Feb 1997 T. Schoebel-Theuer] Complete rewrite of the pathname
  13 * lookup logic.
  14 */
  15/* [Feb-Apr 2000, AV] Rewrite to the new namespace architecture.
  16 */
  17
  18#include <linux/init.h>
  19#include <linux/export.h>
  20#include <linux/kernel.h>
  21#include <linux/slab.h>
  22#include <linux/fs.h>
  23#include <linux/namei.h>
  24#include <linux/pagemap.h>
  25#include <linux/fsnotify.h>
  26#include <linux/personality.h>
  27#include <linux/security.h>
  28#include <linux/ima.h>
  29#include <linux/syscalls.h>
  30#include <linux/mount.h>
  31#include <linux/audit.h>
  32#include <linux/capability.h>
  33#include <linux/file.h>
  34#include <linux/fcntl.h>
  35#include <linux/device_cgroup.h>
  36#include <linux/fs_struct.h>
  37#include <linux/posix_acl.h>
  38#include <linux/hash.h>
  39#include <linux/bitops.h>
  40#include <linux/init_task.h>
  41#include <linux/uaccess.h>
  42
  43#include "internal.h"
  44#include "mount.h"
  45
  46/* [Feb-1997 T. Schoebel-Theuer]
  47 * Fundamental changes in the pathname lookup mechanisms (namei)
  48 * were necessary because of omirr.  The reason is that omirr needs
  49 * to know the _real_ pathname, not the user-supplied one, in case
  50 * of symlinks (and also when transname replacements occur).
  51 *
  52 * The new code replaces the old recursive symlink resolution with
  53 * an iterative one (in case of non-nested symlink chains).  It does
  54 * this with calls to <fs>_follow_link().
  55 * As a side effect, dir_namei(), _namei() and follow_link() are now 
  56 * replaced with a single function lookup_dentry() that can handle all 
  57 * the special cases of the former code.
  58 *
  59 * With the new dcache, the pathname is stored at each inode, at least as
  60 * long as the refcount of the inode is positive.  As a side effect, the
  61 * size of the dcache depends on the inode cache and thus is dynamic.
  62 *
  63 * [29-Apr-1998 C. Scott Ananian] Updated above description of symlink
  64 * resolution to correspond with current state of the code.
  65 *
  66 * Note that the symlink resolution is not *completely* iterative.
  67 * There is still a significant amount of tail- and mid- recursion in
  68 * the algorithm.  Also, note that <fs>_readlink() is not used in
  69 * lookup_dentry(): lookup_dentry() on the result of <fs>_readlink()
  70 * may return different results than <fs>_follow_link().  Many virtual
  71 * filesystems (including /proc) exhibit this behavior.
  72 */
  73
  74/* [24-Feb-97 T. Schoebel-Theuer] Side effects caused by new implementation:
  75 * New symlink semantics: when open() is called with flags O_CREAT | O_EXCL
  76 * and the name already exists in form of a symlink, try to create the new
  77 * name indicated by the symlink. The old code always complained that the
  78 * name already exists, due to not following the symlink even if its target
  79 * is nonexistent.  The new semantics affects also mknod() and link() when
  80 * the name is a symlink pointing to a non-existent name.
  81 *
  82 * I don't know which semantics is the right one, since I have no access
  83 * to standards. But I found by trial that HP-UX 9.0 has the full "new"
  84 * semantics implemented, while SunOS 4.1.1 and Solaris (SunOS 5.4) have the
  85 * "old" one. Personally, I think the new semantics is much more logical.
  86 * Note that "ln old new" where "new" is a symlink pointing to a non-existing
  87 * file does succeed in both HP-UX and SunOs, but not in Solaris
  88 * and in the old Linux semantics.
  89 */
  90
  91/* [16-Dec-97 Kevin Buhr] For security reasons, we change some symlink
  92 * semantics.  See the comments in "open_namei" and "do_link" below.
  93 *
  94 * [10-Sep-98 Alan Modra] Another symlink change.
  95 */
  96
  97/* [Feb-Apr 2000 AV] Complete rewrite. Rules for symlinks:
  98 *      inside the path - always follow.
  99 *      in the last component in creation/removal/renaming - never follow.
 100 *      if LOOKUP_FOLLOW passed - follow.
 101 *      if the pathname has trailing slashes - follow.
 102 *      otherwise - don't follow.
 103 * (applied in that order).
 104 *
 105 * [Jun 2000 AV] Inconsistent behaviour of open() in case if flags==O_CREAT
 106 * restored for 2.4. This is the last surviving part of old 4.2BSD bug.
 107 * During the 2.4 we need to fix the userland stuff depending on it -
 108 * hopefully we will be able to get rid of that wart in 2.5. So far only
 109 * XEmacs seems to be relying on it...
 110 */
 111/*
 112 * [Sep 2001 AV] Single-semaphore locking scheme (kudos to David Holland)
 113 * implemented.  Let's see if raised priority of ->s_vfs_rename_mutex gives
 114 * any extra contention...
 115 */
 116
 117/* In order to reduce some races, while at the same time doing additional
 118 * checking and hopefully speeding things up, we copy filenames to the
 119 * kernel data space before using them..
 120 *
 121 * POSIX.1 2.4: an empty pathname is invalid (ENOENT).
 122 * PATH_MAX includes the nul terminator --RR.
 123 */
 124
 125#define EMBEDDED_NAME_MAX       (PATH_MAX - offsetof(struct filename, iname))
 126
 127struct filename *
 128getname_flags(const char __user *filename, int flags, int *empty)
 129{
 130        struct filename *result;
 131        char *kname;
 132        int len;
 133
 134        result = audit_reusename(filename);
 135        if (result)
 136                return result;
 137
 138        result = __getname();
 139        if (unlikely(!result))
 140                return ERR_PTR(-ENOMEM);
 141
 142        /*
 143         * First, try to embed the struct filename inside the names_cache
 144         * allocation
 145         */
 146        kname = (char *)result->iname;
 147        result->name = kname;
 148
 149        len = strncpy_from_user(kname, filename, EMBEDDED_NAME_MAX);
 150        if (unlikely(len < 0)) {
 151                __putname(result);
 152                return ERR_PTR(len);
 153        }
 154
 155        /*
 156         * Uh-oh. We have a name that's approaching PATH_MAX. Allocate a
 157         * separate struct filename so we can dedicate the entire
 158         * names_cache allocation for the pathname, and re-do the copy from
 159         * userland.
 160         */
 161        if (unlikely(len == EMBEDDED_NAME_MAX)) {
 162                const size_t size = offsetof(struct filename, iname[1]);
 163                kname = (char *)result;
 164
 165                /*
 166                 * size is chosen that way we to guarantee that
 167                 * result->iname[0] is within the same object and that
 168                 * kname can't be equal to result->iname, no matter what.
 169                 */
 170                result = kzalloc(size, GFP_KERNEL);
 171                if (unlikely(!result)) {
 172                        __putname(kname);
 173                        return ERR_PTR(-ENOMEM);
 174                }
 175                result->name = kname;
 176                len = strncpy_from_user(kname, filename, PATH_MAX);
 177                if (unlikely(len < 0)) {
 178                        __putname(kname);
 179                        kfree(result);
 180                        return ERR_PTR(len);
 181                }
 182                if (unlikely(len == PATH_MAX)) {
 183                        __putname(kname);
 184                        kfree(result);
 185                        return ERR_PTR(-ENAMETOOLONG);
 186                }
 187        }
 188
 189        result->refcnt = 1;
 190        /* The empty path is special. */
 191        if (unlikely(!len)) {
 192                if (empty)
 193                        *empty = 1;
 194                if (!(flags & LOOKUP_EMPTY)) {
 195                        putname(result);
 196                        return ERR_PTR(-ENOENT);
 197                }
 198        }
 199
 200        result->uptr = filename;
 201        result->aname = NULL;
 202        audit_getname(result);
 203        return result;
 204}
 205
 206struct filename *
 207getname(const char __user * filename)
 208{
 209        return getname_flags(filename, 0, NULL);
 210}
 211
 212struct filename *
 213getname_kernel(const char * filename)
 214{
 215        struct filename *result;
 216        int len = strlen(filename) + 1;
 217
 218        result = __getname();
 219        if (unlikely(!result))
 220                return ERR_PTR(-ENOMEM);
 221
 222        if (len <= EMBEDDED_NAME_MAX) {
 223                result->name = (char *)result->iname;
 224        } else if (len <= PATH_MAX) {
 225                const size_t size = offsetof(struct filename, iname[1]);
 226                struct filename *tmp;
 227
 228                tmp = kmalloc(size, GFP_KERNEL);
 229                if (unlikely(!tmp)) {
 230                        __putname(result);
 231                        return ERR_PTR(-ENOMEM);
 232                }
 233                tmp->name = (char *)result;
 234                result = tmp;
 235        } else {
 236                __putname(result);
 237                return ERR_PTR(-ENAMETOOLONG);
 238        }
 239        memcpy((char *)result->name, filename, len);
 240        result->uptr = NULL;
 241        result->aname = NULL;
 242        result->refcnt = 1;
 243        audit_getname(result);
 244
 245        return result;
 246}
 247
 248void putname(struct filename *name)
 249{
 250        BUG_ON(name->refcnt <= 0);
 251
 252        if (--name->refcnt > 0)
 253                return;
 254
 255        if (name->name != name->iname) {
 256                __putname(name->name);
 257                kfree(name);
 258        } else
 259                __putname(name);
 260}
 261
 262static int check_acl(struct inode *inode, int mask)
 263{
 264#ifdef CONFIG_FS_POSIX_ACL
 265        struct posix_acl *acl;
 266
 267        if (mask & MAY_NOT_BLOCK) {
 268                acl = get_cached_acl_rcu(inode, ACL_TYPE_ACCESS);
 269                if (!acl)
 270                        return -EAGAIN;
 271                /* no ->get_acl() calls in RCU mode... */
 272                if (is_uncached_acl(acl))
 273                        return -ECHILD;
 274                return posix_acl_permission(inode, acl, mask & ~MAY_NOT_BLOCK);
 275        }
 276
 277        acl = get_acl(inode, ACL_TYPE_ACCESS);
 278        if (IS_ERR(acl))
 279                return PTR_ERR(acl);
 280        if (acl) {
 281                int error = posix_acl_permission(inode, acl, mask);
 282                posix_acl_release(acl);
 283                return error;
 284        }
 285#endif
 286
 287        return -EAGAIN;
 288}
 289
 290/*
 291 * This does the basic permission checking
 292 */
 293static int acl_permission_check(struct inode *inode, int mask)
 294{
 295        unsigned int mode = inode->i_mode;
 296
 297        if (likely(uid_eq(current_fsuid(), inode->i_uid)))
 298                mode >>= 6;
 299        else {
 300                if (IS_POSIXACL(inode) && (mode & S_IRWXG)) {
 301                        int error = check_acl(inode, mask);
 302                        if (error != -EAGAIN)
 303                                return error;
 304                }
 305
 306                if (in_group_p(inode->i_gid))
 307                        mode >>= 3;
 308        }
 309
 310        /*
 311         * If the DACs are ok we don't need any capability check.
 312         */
 313        if ((mask & ~mode & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0)
 314                return 0;
 315        return -EACCES;
 316}
 317
 318/**
 319 * generic_permission -  check for access rights on a Posix-like filesystem
 320 * @inode:      inode to check access rights for
 321 * @mask:       right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC, ...)
 322 *
 323 * Used to check for read/write/execute permissions on a file.
 324 * We use "fsuid" for this, letting us set arbitrary permissions
 325 * for filesystem access without changing the "normal" uids which
 326 * are used for other things.
 327 *
 328 * generic_permission is rcu-walk aware. It returns -ECHILD in case an rcu-walk
 329 * request cannot be satisfied (eg. requires blocking or too much complexity).
 330 * It would then be called again in ref-walk mode.
 331 */
 332int generic_permission(struct inode *inode, int mask)
 333{
 334        int ret;
 335
 336        /*
 337         * Do the basic permission checks.
 338         */
 339        ret = acl_permission_check(inode, mask);
 340        if (ret != -EACCES)
 341                return ret;
 342
 343        if (S_ISDIR(inode->i_mode)) {
 344                /* DACs are overridable for directories */
 345                if (!(mask & MAY_WRITE))
 346                        if (capable_wrt_inode_uidgid(inode,
 347                                                     CAP_DAC_READ_SEARCH))
 348                                return 0;
 349                if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
 350                        return 0;
 351                return -EACCES;
 352        }
 353
 354        /*
 355         * Searching includes executable on directories, else just read.
 356         */
 357        mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
 358        if (mask == MAY_READ)
 359                if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
 360                        return 0;
 361        /*
 362         * Read/write DACs are always overridable.
 363         * Executable DACs are overridable when there is
 364         * at least one exec bit set.
 365         */
 366        if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO))
 367                if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
 368                        return 0;
 369
 370        return -EACCES;
 371}
 372EXPORT_SYMBOL(generic_permission);
 373
 374/*
 375 * We _really_ want to just do "generic_permission()" without
 376 * even looking at the inode->i_op values. So we keep a cache
 377 * flag in inode->i_opflags, that says "this has not special
 378 * permission function, use the fast case".
 379 */
 380static inline int do_inode_permission(struct inode *inode, int mask)
 381{
 382        if (unlikely(!(inode->i_opflags & IOP_FASTPERM))) {
 383                if (likely(inode->i_op->permission))
 384                        return inode->i_op->permission(inode, mask);
 385
 386                /* This gets set once for the inode lifetime */
 387                spin_lock(&inode->i_lock);
 388                inode->i_opflags |= IOP_FASTPERM;
 389                spin_unlock(&inode->i_lock);
 390        }
 391        return generic_permission(inode, mask);
 392}
 393
 394/**
 395 * sb_permission - Check superblock-level permissions
 396 * @sb: Superblock of inode to check permission on
 397 * @inode: Inode to check permission on
 398 * @mask: Right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC)
 399 *
 400 * Separate out file-system wide checks from inode-specific permission checks.
 401 */
 402static int sb_permission(struct super_block *sb, struct inode *inode, int mask)
 403{
 404        if (unlikely(mask & MAY_WRITE)) {
 405                umode_t mode = inode->i_mode;
 406
 407                /* Nobody gets write access to a read-only fs. */
 408                if (sb_rdonly(sb) && (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)))
 409                        return -EROFS;
 410        }
 411        return 0;
 412}
 413
 414/**
 415 * inode_permission - Check for access rights to a given inode
 416 * @inode: Inode to check permission on
 417 * @mask: Right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC)
 418 *
 419 * Check for read/write/execute permissions on an inode.  We use fs[ug]id for
 420 * this, letting us set arbitrary permissions for filesystem access without
 421 * changing the "normal" UIDs which are used for other things.
 422 *
 423 * When checking for MAY_APPEND, MAY_WRITE must also be set in @mask.
 424 */
 425int inode_permission(struct inode *inode, int mask)
 426{
 427        int retval;
 428
 429        retval = sb_permission(inode->i_sb, inode, mask);
 430        if (retval)
 431                return retval;
 432
 433        if (unlikely(mask & MAY_WRITE)) {
 434                /*
 435                 * Nobody gets write access to an immutable file.
 436                 */
 437                if (IS_IMMUTABLE(inode))
 438                        return -EPERM;
 439
 440                /*
 441                 * Updating mtime will likely cause i_uid and i_gid to be
 442                 * written back improperly if their true value is unknown
 443                 * to the vfs.
 444                 */
 445                if (HAS_UNMAPPED_ID(inode))
 446                        return -EACCES;
 447        }
 448
 449        retval = do_inode_permission(inode, mask);
 450        if (retval)
 451                return retval;
 452
 453        retval = devcgroup_inode_permission(inode, mask);
 454        if (retval)
 455                return retval;
 456
 457        return security_inode_permission(inode, mask);
 458}
 459EXPORT_SYMBOL(inode_permission);
 460
 461/**
 462 * path_get - get a reference to a path
 463 * @path: path to get the reference to
 464 *
 465 * Given a path increment the reference count to the dentry and the vfsmount.
 466 */
 467void path_get(const struct path *path)
 468{
 469        mntget(path->mnt);
 470        dget(path->dentry);
 471}
 472EXPORT_SYMBOL(path_get);
 473
 474/**
 475 * path_put - put a reference to a path
 476 * @path: path to put the reference to
 477 *
 478 * Given a path decrement the reference count to the dentry and the vfsmount.
 479 */
 480void path_put(const struct path *path)
 481{
 482        dput(path->dentry);
 483        mntput(path->mnt);
 484}
 485EXPORT_SYMBOL(path_put);
 486
 487#define EMBEDDED_LEVELS 2
 488struct nameidata {
 489        struct path     path;
 490        struct qstr     last;
 491        struct path     root;
 492        struct inode    *inode; /* path.dentry.d_inode */
 493        unsigned int    flags;
 494        unsigned        seq, m_seq;
 495        int             last_type;
 496        unsigned        depth;
 497        int             total_link_count;
 498        struct saved {
 499                struct path link;
 500                struct delayed_call done;
 501                const char *name;
 502                unsigned seq;
 503        } *stack, internal[EMBEDDED_LEVELS];
 504        struct filename *name;
 505        struct nameidata *saved;
 506        struct inode    *link_inode;
 507        unsigned        root_seq;
 508        int             dfd;
 509} __randomize_layout;
 510
 511static void set_nameidata(struct nameidata *p, int dfd, struct filename *name)
 512{
 513        struct nameidata *old = current->nameidata;
 514        p->stack = p->internal;
 515        p->dfd = dfd;
 516        p->name = name;
 517        p->total_link_count = old ? old->total_link_count : 0;
 518        p->saved = old;
 519        current->nameidata = p;
 520}
 521
 522static void restore_nameidata(void)
 523{
 524        struct nameidata *now = current->nameidata, *old = now->saved;
 525
 526        current->nameidata = old;
 527        if (old)
 528                old->total_link_count = now->total_link_count;
 529        if (now->stack != now->internal)
 530                kfree(now->stack);
 531}
 532
 533static int __nd_alloc_stack(struct nameidata *nd)
 534{
 535        struct saved *p;
 536
 537        if (nd->flags & LOOKUP_RCU) {
 538                p= kmalloc_array(MAXSYMLINKS, sizeof(struct saved),
 539                                  GFP_ATOMIC);
 540                if (unlikely(!p))
 541                        return -ECHILD;
 542        } else {
 543                p= kmalloc_array(MAXSYMLINKS, sizeof(struct saved),
 544                                  GFP_KERNEL);
 545                if (unlikely(!p))
 546                        return -ENOMEM;
 547        }
 548        memcpy(p, nd->internal, sizeof(nd->internal));
 549        nd->stack = p;
 550        return 0;
 551}
 552
 553/**
 554 * path_connected - Verify that a path->dentry is below path->mnt.mnt_root
 555 * @path: nameidate to verify
 556 *
 557 * Rename can sometimes move a file or directory outside of a bind
 558 * mount, path_connected allows those cases to be detected.
 559 */
 560static bool path_connected(const struct path *path)
 561{
 562        struct vfsmount *mnt = path->mnt;
 563        struct super_block *sb = mnt->mnt_sb;
 564
 565        /* Bind mounts and multi-root filesystems can have disconnected paths */
 566        if (!(sb->s_iflags & SB_I_MULTIROOT) && (mnt->mnt_root == sb->s_root))
 567                return true;
 568
 569        return is_subdir(path->dentry, mnt->mnt_root);
 570}
 571
 572static inline int nd_alloc_stack(struct nameidata *nd)
 573{
 574        if (likely(nd->depth != EMBEDDED_LEVELS))
 575                return 0;
 576        if (likely(nd->stack != nd->internal))
 577                return 0;
 578        return __nd_alloc_stack(nd);
 579}
 580
 581static void drop_links(struct nameidata *nd)
 582{
 583        int i = nd->depth;
 584        while (i--) {
 585                struct saved *last = nd->stack + i;
 586                do_delayed_call(&last->done);
 587                clear_delayed_call(&last->done);
 588        }
 589}
 590
 591static void terminate_walk(struct nameidata *nd)
 592{
 593        drop_links(nd);
 594        if (!(nd->flags & LOOKUP_RCU)) {
 595                int i;
 596                path_put(&nd->path);
 597                for (i = 0; i < nd->depth; i++)
 598                        path_put(&nd->stack[i].link);
 599                if (nd->flags & LOOKUP_ROOT_GRABBED) {
 600                        path_put(&nd->root);
 601                        nd->flags &= ~LOOKUP_ROOT_GRABBED;
 602                }
 603        } else {
 604                nd->flags &= ~LOOKUP_RCU;
 605                rcu_read_unlock();
 606        }
 607        nd->depth = 0;
 608}
 609
 610/* path_put is needed afterwards regardless of success or failure */
 611static bool legitimize_path(struct nameidata *nd,
 612                            struct path *path, unsigned seq)
 613{
 614        int res = __legitimize_mnt(path->mnt, nd->m_seq);
 615        if (unlikely(res)) {
 616                if (res > 0)
 617                        path->mnt = NULL;
 618                path->dentry = NULL;
 619                return false;
 620        }
 621        if (unlikely(!lockref_get_not_dead(&path->dentry->d_lockref))) {
 622                path->dentry = NULL;
 623                return false;
 624        }
 625        return !read_seqcount_retry(&path->dentry->d_seq, seq);
 626}
 627
 628static bool legitimize_links(struct nameidata *nd)
 629{
 630        int i;
 631        for (i = 0; i < nd->depth; i++) {
 632                struct saved *last = nd->stack + i;
 633                if (unlikely(!legitimize_path(nd, &last->link, last->seq))) {
 634                        drop_links(nd);
 635                        nd->depth = i + 1;
 636                        return false;
 637                }
 638        }
 639        return true;
 640}
 641
 642static bool legitimize_root(struct nameidata *nd)
 643{
 644        if (!nd->root.mnt || (nd->flags & LOOKUP_ROOT))
 645                return true;
 646        nd->flags |= LOOKUP_ROOT_GRABBED;
 647        return legitimize_path(nd, &nd->root, nd->root_seq);
 648}
 649
 650/*
 651 * Path walking has 2 modes, rcu-walk and ref-walk (see
 652 * Documentation/filesystems/path-lookup.txt).  In situations when we can't
 653 * continue in RCU mode, we attempt to drop out of rcu-walk mode and grab
 654 * normal reference counts on dentries and vfsmounts to transition to ref-walk
 655 * mode.  Refcounts are grabbed at the last known good point before rcu-walk
 656 * got stuck, so ref-walk may continue from there. If this is not successful
 657 * (eg. a seqcount has changed), then failure is returned and it's up to caller
 658 * to restart the path walk from the beginning in ref-walk mode.
 659 */
 660
 661/**
 662 * unlazy_walk - try to switch to ref-walk mode.
 663 * @nd: nameidata pathwalk data
 664 * Returns: 0 on success, -ECHILD on failure
 665 *
 666 * unlazy_walk attempts to legitimize the current nd->path and nd->root
 667 * for ref-walk mode.
 668 * Must be called from rcu-walk context.
 669 * Nothing should touch nameidata between unlazy_walk() failure and
 670 * terminate_walk().
 671 */
 672static int unlazy_walk(struct nameidata *nd)
 673{
 674        struct dentry *parent = nd->path.dentry;
 675
 676        BUG_ON(!(nd->flags & LOOKUP_RCU));
 677
 678        nd->flags &= ~LOOKUP_RCU;
 679        if (unlikely(!legitimize_links(nd)))
 680                goto out1;
 681        if (unlikely(!legitimize_path(nd, &nd->path, nd->seq)))
 682                goto out;
 683        if (unlikely(!legitimize_root(nd)))
 684                goto out;
 685        rcu_read_unlock();
 686        BUG_ON(nd->inode != parent->d_inode);
 687        return 0;
 688
 689out1:
 690        nd->path.mnt = NULL;
 691        nd->path.dentry = NULL;
 692out:
 693        rcu_read_unlock();
 694        return -ECHILD;
 695}
 696
 697/**
 698 * unlazy_child - try to switch to ref-walk mode.
 699 * @nd: nameidata pathwalk data
 700 * @dentry: child of nd->path.dentry
 701 * @seq: seq number to check dentry against
 702 * Returns: 0 on success, -ECHILD on failure
 703 *
 704 * unlazy_child attempts to legitimize the current nd->path, nd->root and dentry
 705 * for ref-walk mode.  @dentry must be a path found by a do_lookup call on
 706 * @nd.  Must be called from rcu-walk context.
 707 * Nothing should touch nameidata between unlazy_child() failure and
 708 * terminate_walk().
 709 */
 710static int unlazy_child(struct nameidata *nd, struct dentry *dentry, unsigned seq)
 711{
 712        BUG_ON(!(nd->flags & LOOKUP_RCU));
 713
 714        nd->flags &= ~LOOKUP_RCU;
 715        if (unlikely(!legitimize_links(nd)))
 716                goto out2;
 717        if (unlikely(!legitimize_mnt(nd->path.mnt, nd->m_seq)))
 718                goto out2;
 719        if (unlikely(!lockref_get_not_dead(&nd->path.dentry->d_lockref)))
 720                goto out1;
 721
 722        /*
 723         * We need to move both the parent and the dentry from the RCU domain
 724         * to be properly refcounted. And the sequence number in the dentry
 725         * validates *both* dentry counters, since we checked the sequence
 726         * number of the parent after we got the child sequence number. So we
 727         * know the parent must still be valid if the child sequence number is
 728         */
 729        if (unlikely(!lockref_get_not_dead(&dentry->d_lockref)))
 730                goto out;
 731        if (unlikely(read_seqcount_retry(&dentry->d_seq, seq)))
 732                goto out_dput;
 733        /*
 734         * Sequence counts matched. Now make sure that the root is
 735         * still valid and get it if required.
 736         */
 737        if (unlikely(!legitimize_root(nd)))
 738                goto out_dput;
 739        rcu_read_unlock();
 740        return 0;
 741
 742out2:
 743        nd->path.mnt = NULL;
 744out1:
 745        nd->path.dentry = NULL;
 746out:
 747        rcu_read_unlock();
 748        return -ECHILD;
 749out_dput:
 750        rcu_read_unlock();
 751        dput(dentry);
 752        return -ECHILD;
 753}
 754
 755static inline int d_revalidate(struct dentry *dentry, unsigned int flags)
 756{
 757        if (unlikely(dentry->d_flags & DCACHE_OP_REVALIDATE))
 758                return dentry->d_op->d_revalidate(dentry, flags);
 759        else
 760                return 1;
 761}
 762
 763/**
 764 * complete_walk - successful completion of path walk
 765 * @nd:  pointer nameidata
 766 *
 767 * If we had been in RCU mode, drop out of it and legitimize nd->path.
 768 * Revalidate the final result, unless we'd already done that during
 769 * the path walk or the filesystem doesn't ask for it.  Return 0 on
 770 * success, -error on failure.  In case of failure caller does not
 771 * need to drop nd->path.
 772 */
 773static int complete_walk(struct nameidata *nd)
 774{
 775        struct dentry *dentry = nd->path.dentry;
 776        int status;
 777
 778        if (nd->flags & LOOKUP_RCU) {
 779                if (!(nd->flags & LOOKUP_ROOT))
 780                        nd->root.mnt = NULL;
 781                if (unlikely(unlazy_walk(nd)))
 782                        return -ECHILD;
 783        }
 784
 785        if (likely(!(nd->flags & LOOKUP_JUMPED)))
 786                return 0;
 787
 788        if (likely(!(dentry->d_flags & DCACHE_OP_WEAK_REVALIDATE)))
 789                return 0;
 790
 791        status = dentry->d_op->d_weak_revalidate(dentry, nd->flags);
 792        if (status > 0)
 793                return 0;
 794
 795        if (!status)
 796                status = -ESTALE;
 797
 798        return status;
 799}
 800
 801static void set_root(struct nameidata *nd)
 802{
 803        struct fs_struct *fs = current->fs;
 804
 805        if (nd->flags & LOOKUP_RCU) {
 806                unsigned seq;
 807
 808                do {
 809                        seq = read_seqcount_begin(&fs->seq);
 810                        nd->root = fs->root;
 811                        nd->root_seq = __read_seqcount_begin(&nd->root.dentry->d_seq);
 812                } while (read_seqcount_retry(&fs->seq, seq));
 813        } else {
 814                get_fs_root(fs, &nd->root);
 815                nd->flags |= LOOKUP_ROOT_GRABBED;
 816        }
 817}
 818
 819static void path_put_conditional(struct path *path, struct nameidata *nd)
 820{
 821        dput(path->dentry);
 822        if (path->mnt != nd->path.mnt)
 823                mntput(path->mnt);
 824}
 825
 826static inline void path_to_nameidata(const struct path *path,
 827                                        struct nameidata *nd)
 828{
 829        if (!(nd->flags & LOOKUP_RCU)) {
 830                dput(nd->path.dentry);
 831                if (nd->path.mnt != path->mnt)
 832                        mntput(nd->path.mnt);
 833        }
 834        nd->path.mnt = path->mnt;
 835        nd->path.dentry = path->dentry;
 836}
 837
 838static int nd_jump_root(struct nameidata *nd)
 839{
 840        if (nd->flags & LOOKUP_RCU) {
 841                struct dentry *d;
 842                nd->path = nd->root;
 843                d = nd->path.dentry;
 844                nd->inode = d->d_inode;
 845                nd->seq = nd->root_seq;
 846                if (unlikely(read_seqcount_retry(&d->d_seq, nd->seq)))
 847                        return -ECHILD;
 848        } else {
 849                path_put(&nd->path);
 850                nd->path = nd->root;
 851                path_get(&nd->path);
 852                nd->inode = nd->path.dentry->d_inode;
 853        }
 854        nd->flags |= LOOKUP_JUMPED;
 855        return 0;
 856}
 857
 858/*
 859 * Helper to directly jump to a known parsed path from ->get_link,
 860 * caller must have taken a reference to path beforehand.
 861 */
 862void nd_jump_link(struct path *path)
 863{
 864        struct nameidata *nd = current->nameidata;
 865        path_put(&nd->path);
 866
 867        nd->path = *path;
 868        nd->inode = nd->path.dentry->d_inode;
 869        nd->flags |= LOOKUP_JUMPED;
 870}
 871
 872static inline void put_link(struct nameidata *nd)
 873{
 874        struct saved *last = nd->stack + --nd->depth;
 875        do_delayed_call(&last->done);
 876        if (!(nd->flags & LOOKUP_RCU))
 877                path_put(&last->link);
 878}
 879
 880int sysctl_protected_symlinks __read_mostly = 0;
 881int sysctl_protected_hardlinks __read_mostly = 0;
 882int sysctl_protected_fifos __read_mostly;
 883int sysctl_protected_regular __read_mostly;
 884
 885/**
 886 * may_follow_link - Check symlink following for unsafe situations
 887 * @nd: nameidata pathwalk data
 888 *
 889 * In the case of the sysctl_protected_symlinks sysctl being enabled,
 890 * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is
 891 * in a sticky world-writable directory. This is to protect privileged
 892 * processes from failing races against path names that may change out
 893 * from under them by way of other users creating malicious symlinks.
 894 * It will permit symlinks to be followed only when outside a sticky
 895 * world-writable directory, or when the uid of the symlink and follower
 896 * match, or when the directory owner matches the symlink's owner.
 897 *
 898 * Returns 0 if following the symlink is allowed, -ve on error.
 899 */
 900static inline int may_follow_link(struct nameidata *nd)
 901{
 902        const struct inode *inode;
 903        const struct inode *parent;
 904        kuid_t puid;
 905
 906        if (!sysctl_protected_symlinks)
 907                return 0;
 908
 909        /* Allowed if owner and follower match. */
 910        inode = nd->link_inode;
 911        if (uid_eq(current_cred()->fsuid, inode->i_uid))
 912                return 0;
 913
 914        /* Allowed if parent directory not sticky and world-writable. */
 915        parent = nd->inode;
 916        if ((parent->i_mode & (S_ISVTX|S_IWOTH)) != (S_ISVTX|S_IWOTH))
 917                return 0;
 918
 919        /* Allowed if parent directory and link owner match. */
 920        puid = parent->i_uid;
 921        if (uid_valid(puid) && uid_eq(puid, inode->i_uid))
 922                return 0;
 923
 924        if (nd->flags & LOOKUP_RCU)
 925                return -ECHILD;
 926
 927        audit_inode(nd->name, nd->stack[0].link.dentry, 0);
 928        audit_log_path_denied(AUDIT_ANOM_LINK, "follow_link");
 929        return -EACCES;
 930}
 931
 932/**
 933 * safe_hardlink_source - Check for safe hardlink conditions
 934 * @inode: the source inode to hardlink from
 935 *
 936 * Return false if at least one of the following conditions:
 937 *    - inode is not a regular file
 938 *    - inode is setuid
 939 *    - inode is setgid and group-exec
 940 *    - access failure for read and write
 941 *
 942 * Otherwise returns true.
 943 */
 944static bool safe_hardlink_source(struct inode *inode)
 945{
 946        umode_t mode = inode->i_mode;
 947
 948        /* Special files should not get pinned to the filesystem. */
 949        if (!S_ISREG(mode))
 950                return false;
 951
 952        /* Setuid files should not get pinned to the filesystem. */
 953        if (mode & S_ISUID)
 954                return false;
 955
 956        /* Executable setgid files should not get pinned to the filesystem. */
 957        if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))
 958                return false;
 959
 960        /* Hardlinking to unreadable or unwritable sources is dangerous. */
 961        if (inode_permission(inode, MAY_READ | MAY_WRITE))
 962                return false;
 963
 964        return true;
 965}
 966
 967/**
 968 * may_linkat - Check permissions for creating a hardlink
 969 * @link: the source to hardlink from
 970 *
 971 * Block hardlink when all of:
 972 *  - sysctl_protected_hardlinks enabled
 973 *  - fsuid does not match inode
 974 *  - hardlink source is unsafe (see safe_hardlink_source() above)
 975 *  - not CAP_FOWNER in a namespace with the inode owner uid mapped
 976 *
 977 * Returns 0 if successful, -ve on error.
 978 */
 979static int may_linkat(struct path *link)
 980{
 981        struct inode *inode = link->dentry->d_inode;
 982
 983        /* Inode writeback is not safe when the uid or gid are invalid. */
 984        if (!uid_valid(inode->i_uid) || !gid_valid(inode->i_gid))
 985                return -EOVERFLOW;
 986
 987        if (!sysctl_protected_hardlinks)
 988                return 0;
 989
 990        /* Source inode owner (or CAP_FOWNER) can hardlink all they like,
 991         * otherwise, it must be a safe source.
 992         */
 993        if (safe_hardlink_source(inode) || inode_owner_or_capable(inode))
 994                return 0;
 995
 996        audit_log_path_denied(AUDIT_ANOM_LINK, "linkat");
 997        return -EPERM;
 998}
 999
1000/**
1001 * may_create_in_sticky - Check whether an O_CREAT open in a sticky directory
1002 *                        should be allowed, or not, on files that already
1003 *                        exist.
1004 * @dir_mode: mode bits of directory
1005 * @dir_uid: owner of directory
1006 * @inode: the inode of the file to open
1007 *
1008 * Block an O_CREAT open of a FIFO (or a regular file) when:
1009 *   - sysctl_protected_fifos (or sysctl_protected_regular) is enabled
1010 *   - the file already exists
1011 *   - we are in a sticky directory
1012 *   - we don't own the file
1013 *   - the owner of the directory doesn't own the file
1014 *   - the directory is world writable
1015 * If the sysctl_protected_fifos (or sysctl_protected_regular) is set to 2
1016 * the directory doesn't have to be world writable: being group writable will
1017 * be enough.
1018 *
1019 * Returns 0 if the open is allowed, -ve on error.
1020 */
1021static int may_create_in_sticky(umode_t dir_mode, kuid_t dir_uid,
1022                                struct inode * const inode)
1023{
1024        if ((!sysctl_protected_fifos && S_ISFIFO(inode->i_mode)) ||
1025            (!sysctl_protected_regular && S_ISREG(inode->i_mode)) ||
1026            likely(!(dir_mode & S_ISVTX)) ||
1027            uid_eq(inode->i_uid, dir_uid) ||
1028            uid_eq(current_fsuid(), inode->i_uid))
1029                return 0;
1030
1031        if (likely(dir_mode & 0002) ||
1032            (dir_mode & 0020 &&
1033             ((sysctl_protected_fifos >= 2 && S_ISFIFO(inode->i_mode)) ||
1034              (sysctl_protected_regular >= 2 && S_ISREG(inode->i_mode))))) {
1035                const char *operation = S_ISFIFO(inode->i_mode) ?
1036                                        "sticky_create_fifo" :
1037                                        "sticky_create_regular";
1038                audit_log_path_denied(AUDIT_ANOM_CREAT, operation);
1039                return -EACCES;
1040        }
1041        return 0;
1042}
1043
1044static __always_inline
1045const char *get_link(struct nameidata *nd)
1046{
1047        struct saved *last = nd->stack + nd->depth - 1;
1048        struct dentry *dentry = last->link.dentry;
1049        struct inode *inode = nd->link_inode;
1050        int error;
1051        const char *res;
1052
1053        if (!(nd->flags & LOOKUP_RCU)) {
1054                touch_atime(&last->link);
1055                cond_resched();
1056        } else if (atime_needs_update(&last->link, inode)) {
1057                if (unlikely(unlazy_walk(nd)))
1058                        return ERR_PTR(-ECHILD);
1059                touch_atime(&last->link);
1060        }
1061
1062        error = security_inode_follow_link(dentry, inode,
1063                                           nd->flags & LOOKUP_RCU);
1064        if (unlikely(error))
1065                return ERR_PTR(error);
1066
1067        nd->last_type = LAST_BIND;
1068        res = READ_ONCE(inode->i_link);
1069        if (!res) {
1070                const char * (*get)(struct dentry *, struct inode *,
1071                                struct delayed_call *);
1072                get = inode->i_op->get_link;
1073                if (nd->flags & LOOKUP_RCU) {
1074                        res = get(NULL, inode, &last->done);
1075                        if (res == ERR_PTR(-ECHILD)) {
1076                                if (unlikely(unlazy_walk(nd)))
1077                                        return ERR_PTR(-ECHILD);
1078                                res = get(dentry, inode, &last->done);
1079                        }
1080                } else {
1081                        res = get(dentry, inode, &last->done);
1082                }
1083                if (IS_ERR_OR_NULL(res))
1084                        return res;
1085        }
1086        if (*res == '/') {
1087                if (!nd->root.mnt)
1088                        set_root(nd);
1089                if (unlikely(nd_jump_root(nd)))
1090                        return ERR_PTR(-ECHILD);
1091                while (unlikely(*++res == '/'))
1092                        ;
1093        }
1094        if (!*res)
1095                res = NULL;
1096        return res;
1097}
1098
1099/*
1100 * follow_up - Find the mountpoint of path's vfsmount
1101 *
1102 * Given a path, find the mountpoint of its source file system.
1103 * Replace @path with the path of the mountpoint in the parent mount.
1104 * Up is towards /.
1105 *
1106 * Return 1 if we went up a level and 0 if we were already at the
1107 * root.
1108 */
1109int follow_up(struct path *path)
1110{
1111        struct mount *mnt = real_mount(path->mnt);
1112        struct mount *parent;
1113        struct dentry *mountpoint;
1114
1115        read_seqlock_excl(&mount_lock);
1116        parent = mnt->mnt_parent;
1117        if (parent == mnt) {
1118                read_sequnlock_excl(&mount_lock);
1119                return 0;
1120        }
1121        mntget(&parent->mnt);
1122        mountpoint = dget(mnt->mnt_mountpoint);
1123        read_sequnlock_excl(&mount_lock);
1124        dput(path->dentry);
1125        path->dentry = mountpoint;
1126        mntput(path->mnt);
1127        path->mnt = &parent->mnt;
1128        return 1;
1129}
1130EXPORT_SYMBOL(follow_up);
1131
1132/*
1133 * Perform an automount
1134 * - return -EISDIR to tell follow_managed() to stop and return the path we
1135 *   were called with.
1136 */
1137static int follow_automount(struct path *path, struct nameidata *nd,
1138                            bool *need_mntput)
1139{
1140        struct vfsmount *mnt;
1141        int err;
1142
1143        if (!path->dentry->d_op || !path->dentry->d_op->d_automount)
1144                return -EREMOTE;
1145
1146        /* We don't want to mount if someone's just doing a stat -
1147         * unless they're stat'ing a directory and appended a '/' to
1148         * the name.
1149         *
1150         * We do, however, want to mount if someone wants to open or
1151         * create a file of any type under the mountpoint, wants to
1152         * traverse through the mountpoint or wants to open the
1153         * mounted directory.  Also, autofs may mark negative dentries
1154         * as being automount points.  These will need the attentions
1155         * of the daemon to instantiate them before they can be used.
1156         */
1157        if (!(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY |
1158                           LOOKUP_OPEN | LOOKUP_CREATE | LOOKUP_AUTOMOUNT)) &&
1159            path->dentry->d_inode)
1160                return -EISDIR;
1161
1162        nd->total_link_count++;
1163        if (nd->total_link_count >= 40)
1164                return -ELOOP;
1165
1166        mnt = path->dentry->d_op->d_automount(path);
1167        if (IS_ERR(mnt)) {
1168                /*
1169                 * The filesystem is allowed to return -EISDIR here to indicate
1170                 * it doesn't want to automount.  For instance, autofs would do
1171                 * this so that its userspace daemon can mount on this dentry.
1172                 *
1173                 * However, we can only permit this if it's a terminal point in
1174                 * the path being looked up; if it wasn't then the remainder of
1175                 * the path is inaccessible and we should say so.
1176                 */
1177                if (PTR_ERR(mnt) == -EISDIR && (nd->flags & LOOKUP_PARENT))
1178                        return -EREMOTE;
1179                return PTR_ERR(mnt);
1180        }
1181
1182        if (!mnt) /* mount collision */
1183                return 0;
1184
1185        if (!*need_mntput) {
1186                /* lock_mount() may release path->mnt on error */
1187                mntget(path->mnt);
1188                *need_mntput = true;
1189        }
1190        err = finish_automount(mnt, path);
1191
1192        switch (err) {
1193        case -EBUSY:
1194                /* Someone else made a mount here whilst we were busy */
1195                return 0;
1196        case 0:
1197                path_put(path);
1198                path->mnt = mnt;
1199                path->dentry = dget(mnt->mnt_root);
1200                return 0;
1201        default:
1202                return err;
1203        }
1204
1205}
1206
1207/*
1208 * Handle a dentry that is managed in some way.
1209 * - Flagged for transit management (autofs)
1210 * - Flagged as mountpoint
1211 * - Flagged as automount point
1212 *
1213 * This may only be called in refwalk mode.
1214 * On success path->dentry is known positive.
1215 *
1216 * Serialization is taken care of in namespace.c
1217 */
1218static int follow_managed(struct path *path, struct nameidata *nd)
1219{
1220        struct vfsmount *mnt = path->mnt; /* held by caller, must be left alone */
1221        unsigned flags;
1222        bool need_mntput = false;
1223        int ret = 0;
1224
1225        /* Given that we're not holding a lock here, we retain the value in a
1226         * local variable for each dentry as we look at it so that we don't see
1227         * the components of that value change under us */
1228        while (flags = smp_load_acquire(&path->dentry->d_flags),
1229               unlikely(flags & DCACHE_MANAGED_DENTRY)) {
1230                /* Allow the filesystem to manage the transit without i_mutex
1231                 * being held. */
1232                if (flags & DCACHE_MANAGE_TRANSIT) {
1233                        BUG_ON(!path->dentry->d_op);
1234                        BUG_ON(!path->dentry->d_op->d_manage);
1235                        ret = path->dentry->d_op->d_manage(path, false);
1236                        flags = smp_load_acquire(&path->dentry->d_flags);
1237                        if (ret < 0)
1238                                break;
1239                }
1240
1241                /* Transit to a mounted filesystem. */
1242                if (flags & DCACHE_MOUNTED) {
1243                        struct vfsmount *mounted = lookup_mnt(path);
1244                        if (mounted) {
1245                                dput(path->dentry);
1246                                if (need_mntput)
1247                                        mntput(path->mnt);
1248                                path->mnt = mounted;
1249                                path->dentry = dget(mounted->mnt_root);
1250                                need_mntput = true;
1251                                continue;
1252                        }
1253
1254                        /* Something is mounted on this dentry in another
1255                         * namespace and/or whatever was mounted there in this
1256                         * namespace got unmounted before lookup_mnt() could
1257                         * get it */
1258                }
1259
1260                /* Handle an automount point */
1261                if (flags & DCACHE_NEED_AUTOMOUNT) {
1262                        ret = follow_automount(path, nd, &need_mntput);
1263                        if (ret < 0)
1264                                break;
1265                        continue;
1266                }
1267
1268                /* We didn't change the current path point */
1269                break;
1270        }
1271
1272        if (need_mntput && path->mnt == mnt)
1273                mntput(path->mnt);
1274        if (need_mntput)
1275                nd->flags |= LOOKUP_JUMPED;
1276        if (ret == -EISDIR || !ret)
1277                ret = 1;
1278        if (ret > 0 && unlikely(d_flags_negative(flags)))
1279                ret = -ENOENT;
1280        if (unlikely(ret < 0))
1281                path_put_conditional(path, nd);
1282        return ret;
1283}
1284
1285int follow_down_one(struct path *path)
1286{
1287        struct vfsmount *mounted;
1288
1289        mounted = lookup_mnt(path);
1290        if (mounted) {
1291                dput(path->dentry);
1292                mntput(path->mnt);
1293                path->mnt = mounted;
1294                path->dentry = dget(mounted->mnt_root);
1295                return 1;
1296        }
1297        return 0;
1298}
1299EXPORT_SYMBOL(follow_down_one);
1300
1301static inline int managed_dentry_rcu(const struct path *path)
1302{
1303        return (path->dentry->d_flags & DCACHE_MANAGE_TRANSIT) ?
1304                path->dentry->d_op->d_manage(path, true) : 0;
1305}
1306
1307/*
1308 * Try to skip to top of mountpoint pile in rcuwalk mode.  Fail if
1309 * we meet a managed dentry that would need blocking.
1310 */
1311static bool __follow_mount_rcu(struct nameidata *nd, struct path *path,
1312                               struct inode **inode, unsigned *seqp)
1313{
1314        for (;;) {
1315                struct mount *mounted;
1316                /*
1317                 * Don't forget we might have a non-mountpoint managed dentry
1318                 * that wants to block transit.
1319                 */
1320                switch (managed_dentry_rcu(path)) {
1321                case -ECHILD:
1322                default:
1323                        return false;
1324                case -EISDIR:
1325                        return true;
1326                case 0:
1327                        break;
1328                }
1329
1330                if (!d_mountpoint(path->dentry))
1331                        return !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT);
1332
1333                mounted = __lookup_mnt(path->mnt, path->dentry);
1334                if (!mounted)
1335                        break;
1336                path->mnt = &mounted->mnt;
1337                path->dentry = mounted->mnt.mnt_root;
1338                nd->flags |= LOOKUP_JUMPED;
1339                *seqp = read_seqcount_begin(&path->dentry->d_seq);
1340                /*
1341                 * Update the inode too. We don't need to re-check the
1342                 * dentry sequence number here after this d_inode read,
1343                 * because a mount-point is always pinned.
1344                 */
1345                *inode = path->dentry->d_inode;
1346        }
1347        return !read_seqretry(&mount_lock, nd->m_seq) &&
1348                !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT);
1349}
1350
1351static int follow_dotdot_rcu(struct nameidata *nd)
1352{
1353        struct inode *inode = nd->inode;
1354
1355        while (1) {
1356                if (path_equal(&nd->path, &nd->root))
1357                        break;
1358                if (nd->path.dentry != nd->path.mnt->mnt_root) {
1359                        struct dentry *old = nd->path.dentry;
1360                        struct dentry *parent = old->d_parent;
1361                        unsigned seq;
1362
1363                        inode = parent->d_inode;
1364                        seq = read_seqcount_begin(&parent->d_seq);
1365                        if (unlikely(read_seqcount_retry(&old->d_seq, nd->seq)))
1366                                return -ECHILD;
1367                        nd->path.dentry = parent;
1368                        nd->seq = seq;
1369                        if (unlikely(!path_connected(&nd->path)))
1370                                return -ENOENT;
1371                        break;
1372                } else {
1373                        struct mount *mnt = real_mount(nd->path.mnt);
1374                        struct mount *mparent = mnt->mnt_parent;
1375                        struct dentry *mountpoint = mnt->mnt_mountpoint;
1376                        struct inode *inode2 = mountpoint->d_inode;
1377                        unsigned seq = read_seqcount_begin(&mountpoint->d_seq);
1378                        if (unlikely(read_seqretry(&mount_lock, nd->m_seq)))
1379                                return -ECHILD;
1380                        if (&mparent->mnt == nd->path.mnt)
1381                                break;
1382                        /* we know that mountpoint was pinned */
1383                        nd->path.dentry = mountpoint;
1384                        nd->path.mnt = &mparent->mnt;
1385                        inode = inode2;
1386                        nd->seq = seq;
1387                }
1388        }
1389        while (unlikely(d_mountpoint(nd->path.dentry))) {
1390                struct mount *mounted;
1391                mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry);
1392                if (unlikely(read_seqretry(&mount_lock, nd->m_seq)))
1393                        return -ECHILD;
1394                if (!mounted)
1395                        break;
1396                nd->path.mnt = &mounted->mnt;
1397                nd->path.dentry = mounted->mnt.mnt_root;
1398                inode = nd->path.dentry->d_inode;
1399                nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq);
1400        }
1401        nd->inode = inode;
1402        return 0;
1403}
1404
1405/*
1406 * Follow down to the covering mount currently visible to userspace.  At each
1407 * point, the filesystem owning that dentry may be queried as to whether the
1408 * caller is permitted to proceed or not.
1409 */
1410int follow_down(struct path *path)
1411{
1412        unsigned managed;
1413        int ret;
1414
1415        while (managed = READ_ONCE(path->dentry->d_flags),
1416               unlikely(managed & DCACHE_MANAGED_DENTRY)) {
1417                /* Allow the filesystem to manage the transit without i_mutex
1418                 * being held.
1419                 *
1420                 * We indicate to the filesystem if someone is trying to mount
1421                 * something here.  This gives autofs the chance to deny anyone
1422                 * other than its daemon the right to mount on its
1423                 * superstructure.
1424                 *
1425                 * The filesystem may sleep at this point.
1426                 */
1427                if (managed & DCACHE_MANAGE_TRANSIT) {
1428                        BUG_ON(!path->dentry->d_op);
1429                        BUG_ON(!path->dentry->d_op->d_manage);
1430                        ret = path->dentry->d_op->d_manage(path, false);
1431                        if (ret < 0)
1432                                return ret == -EISDIR ? 0 : ret;
1433                }
1434
1435                /* Transit to a mounted filesystem. */
1436                if (managed & DCACHE_MOUNTED) {
1437                        struct vfsmount *mounted = lookup_mnt(path);
1438                        if (!mounted)
1439                                break;
1440                        dput(path->dentry);
1441                        mntput(path->mnt);
1442                        path->mnt = mounted;
1443                        path->dentry = dget(mounted->mnt_root);
1444                        continue;
1445                }
1446
1447                /* Don't handle automount points here */
1448                break;
1449        }
1450        return 0;
1451}
1452EXPORT_SYMBOL(follow_down);
1453
1454/*
1455 * Skip to top of mountpoint pile in refwalk mode for follow_dotdot()
1456 */
1457static void follow_mount(struct path *path)
1458{
1459        while (d_mountpoint(path->dentry)) {
1460                struct vfsmount *mounted = lookup_mnt(path);
1461                if (!mounted)
1462                        break;
1463                dput(path->dentry);
1464                mntput(path->mnt);
1465                path->mnt = mounted;
1466                path->dentry = dget(mounted->mnt_root);
1467        }
1468}
1469
1470static int path_parent_directory(struct path *path)
1471{
1472        struct dentry *old = path->dentry;
1473        /* rare case of legitimate dget_parent()... */
1474        path->dentry = dget_parent(path->dentry);
1475        dput(old);
1476        if (unlikely(!path_connected(path)))
1477                return -ENOENT;
1478        return 0;
1479}
1480
1481static int follow_dotdot(struct nameidata *nd)
1482{
1483        while(1) {
1484                if (path_equal(&nd->path, &nd->root))
1485                        break;
1486                if (nd->path.dentry != nd->path.mnt->mnt_root) {
1487                        int ret = path_parent_directory(&nd->path);
1488                        if (ret)
1489                                return ret;
1490                        break;
1491                }
1492                if (!follow_up(&nd->path))
1493                        break;
1494        }
1495        follow_mount(&nd->path);
1496        nd->inode = nd->path.dentry->d_inode;
1497        return 0;
1498}
1499
1500/*
1501 * This looks up the name in dcache and possibly revalidates the found dentry.
1502 * NULL is returned if the dentry does not exist in the cache.
1503 */
1504static struct dentry *lookup_dcache(const struct qstr *name,
1505                                    struct dentry *dir,
1506                                    unsigned int flags)
1507{
1508        struct dentry *dentry = d_lookup(dir, name);
1509        if (dentry) {
1510                int error = d_revalidate(dentry, flags);
1511                if (unlikely(error <= 0)) {
1512                        if (!error)
1513                                d_invalidate(dentry);
1514                        dput(dentry);
1515                        return ERR_PTR(error);
1516                }
1517        }
1518        return dentry;
1519}
1520
1521/*
1522 * Parent directory has inode locked exclusive.  This is one
1523 * and only case when ->lookup() gets called on non in-lookup
1524 * dentries - as the matter of fact, this only gets called
1525 * when directory is guaranteed to have no in-lookup children
1526 * at all.
1527 */
1528static struct dentry *__lookup_hash(const struct qstr *name,
1529                struct dentry *base, unsigned int flags)
1530{
1531        struct dentry *dentry = lookup_dcache(name, base, flags);
1532        struct dentry *old;
1533        struct inode *dir = base->d_inode;
1534
1535        if (dentry)
1536                return dentry;
1537
1538        /* Don't create child dentry for a dead directory. */
1539        if (unlikely(IS_DEADDIR(dir)))
1540                return ERR_PTR(-ENOENT);
1541
1542        dentry = d_alloc(base, name);
1543        if (unlikely(!dentry))
1544                return ERR_PTR(-ENOMEM);
1545
1546        old = dir->i_op->lookup(dir, dentry, flags);
1547        if (unlikely(old)) {
1548                dput(dentry);
1549                dentry = old;
1550        }
1551        return dentry;
1552}
1553
1554static int lookup_fast(struct nameidata *nd,
1555                       struct path *path, struct inode **inode,
1556                       unsigned *seqp)
1557{
1558        struct vfsmount *mnt = nd->path.mnt;
1559        struct dentry *dentry, *parent = nd->path.dentry;
1560        int status = 1;
1561        int err;
1562
1563        /*
1564         * Rename seqlock is not required here because in the off chance
1565         * of a false negative due to a concurrent rename, the caller is
1566         * going to fall back to non-racy lookup.
1567         */
1568        if (nd->flags & LOOKUP_RCU) {
1569                unsigned seq;
1570                bool negative;
1571                dentry = __d_lookup_rcu(parent, &nd->last, &seq);
1572                if (unlikely(!dentry)) {
1573                        if (unlazy_walk(nd))
1574                                return -ECHILD;
1575                        return 0;
1576                }
1577
1578                /*
1579                 * This sequence count validates that the inode matches
1580                 * the dentry name information from lookup.
1581                 */
1582                *inode = d_backing_inode(dentry);
1583                negative = d_is_negative(dentry);
1584                if (unlikely(read_seqcount_retry(&dentry->d_seq, seq)))
1585                        return -ECHILD;
1586
1587                /*
1588                 * This sequence count validates that the parent had no
1589                 * changes while we did the lookup of the dentry above.
1590                 *
1591                 * The memory barrier in read_seqcount_begin of child is
1592                 *  enough, we can use __read_seqcount_retry here.
1593                 */
1594                if (unlikely(__read_seqcount_retry(&parent->d_seq, nd->seq)))
1595                        return -ECHILD;
1596
1597                *seqp = seq;
1598                status = d_revalidate(dentry, nd->flags);
1599                if (likely(status > 0)) {
1600                        /*
1601                         * Note: do negative dentry check after revalidation in
1602                         * case that drops it.
1603                         */
1604                        if (unlikely(negative))
1605                                return -ENOENT;
1606                        path->mnt = mnt;
1607                        path->dentry = dentry;
1608                        if (likely(__follow_mount_rcu(nd, path, inode, seqp)))
1609                                return 1;
1610                }
1611                if (unlazy_child(nd, dentry, seq))
1612                        return -ECHILD;
1613                if (unlikely(status == -ECHILD))
1614                        /* we'd been told to redo it in non-rcu mode */
1615                        status = d_revalidate(dentry, nd->flags);
1616        } else {
1617                dentry = __d_lookup(parent, &nd->last);
1618                if (unlikely(!dentry))
1619                        return 0;
1620                status = d_revalidate(dentry, nd->flags);
1621        }
1622        if (unlikely(status <= 0)) {
1623                if (!status)
1624                        d_invalidate(dentry);
1625                dput(dentry);
1626                return status;
1627        }
1628
1629        path->mnt = mnt;
1630        path->dentry = dentry;
1631        err = follow_managed(path, nd);
1632        if (likely(err > 0))
1633                *inode = d_backing_inode(path->dentry);
1634        return err;
1635}
1636
1637/* Fast lookup failed, do it the slow way */
1638static struct dentry *__lookup_slow(const struct qstr *name,
1639                                    struct dentry *dir,
1640                                    unsigned int flags)
1641{
1642        struct dentry *dentry, *old;
1643        struct inode *inode = dir->d_inode;
1644        DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
1645
1646        /* Don't go there if it's already dead */
1647        if (unlikely(IS_DEADDIR(inode)))
1648                return ERR_PTR(-ENOENT);
1649again:
1650        dentry = d_alloc_parallel(dir, name, &wq);
1651        if (IS_ERR(dentry))
1652                return dentry;
1653        if (unlikely(!d_in_lookup(dentry))) {
1654                int error = d_revalidate(dentry, flags);
1655                if (unlikely(error <= 0)) {
1656                        if (!error) {
1657                                d_invalidate(dentry);
1658                                dput(dentry);
1659                                goto again;
1660                        }
1661                        dput(dentry);
1662                        dentry = ERR_PTR(error);
1663                }
1664        } else {
1665                old = inode->i_op->lookup(inode, dentry, flags);
1666                d_lookup_done(dentry);
1667                if (unlikely(old)) {
1668                        dput(dentry);
1669                        dentry = old;
1670                }
1671        }
1672        return dentry;
1673}
1674
1675static struct dentry *lookup_slow(const struct qstr *name,
1676                                  struct dentry *dir,
1677                                  unsigned int flags)
1678{
1679        struct inode *inode = dir->d_inode;
1680        struct dentry *res;
1681        inode_lock_shared(inode);
1682        res = __lookup_slow(name, dir, flags);
1683        inode_unlock_shared(inode);
1684        return res;
1685}
1686
1687static inline int may_lookup(struct nameidata *nd)
1688{
1689        if (nd->flags & LOOKUP_RCU) {
1690                int err = inode_permission(nd->inode, MAY_EXEC|MAY_NOT_BLOCK);
1691                if (err != -ECHILD)
1692                        return err;
1693                if (unlazy_walk(nd))
1694                        return -ECHILD;
1695        }
1696        return inode_permission(nd->inode, MAY_EXEC);
1697}
1698
1699static inline int handle_dots(struct nameidata *nd, int type)
1700{
1701        if (type == LAST_DOTDOT) {
1702                if (!nd->root.mnt)
1703                        set_root(nd);
1704                if (nd->flags & LOOKUP_RCU) {
1705                        return follow_dotdot_rcu(nd);
1706                } else
1707                        return follow_dotdot(nd);
1708        }
1709        return 0;
1710}
1711
1712static int pick_link(struct nameidata *nd, struct path *link,
1713                     struct inode *inode, unsigned seq)
1714{
1715        int error;
1716        struct saved *last;
1717        if (unlikely(nd->total_link_count++ >= MAXSYMLINKS)) {
1718                path_to_nameidata(link, nd);
1719                return -ELOOP;
1720        }
1721        if (!(nd->flags & LOOKUP_RCU)) {
1722                if (link->mnt == nd->path.mnt)
1723                        mntget(link->mnt);
1724        }
1725        error = nd_alloc_stack(nd);
1726        if (unlikely(error)) {
1727                if (error == -ECHILD) {
1728                        if (unlikely(!legitimize_path(nd, link, seq))) {
1729                                drop_links(nd);
1730                                nd->depth = 0;
1731                                nd->flags &= ~LOOKUP_RCU;
1732                                nd->path.mnt = NULL;
1733                                nd->path.dentry = NULL;
1734                                rcu_read_unlock();
1735                        } else if (likely(unlazy_walk(nd)) == 0)
1736                                error = nd_alloc_stack(nd);
1737                }
1738                if (error) {
1739                        path_put(link);
1740                        return error;
1741                }
1742        }
1743
1744        last = nd->stack + nd->depth++;
1745        last->link = *link;
1746        clear_delayed_call(&last->done);
1747        nd->link_inode = inode;
1748        last->seq = seq;
1749        return 1;
1750}
1751
1752enum {WALK_FOLLOW = 1, WALK_MORE = 2};
1753
1754/*
1755 * Do we need to follow links? We _really_ want to be able
1756 * to do this check without having to look at inode->i_op,
1757 * so we keep a cache of "no, this doesn't need follow_link"
1758 * for the common case.
1759 */
1760static inline int step_into(struct nameidata *nd, struct path *path,
1761                            int flags, struct inode *inode, unsigned seq)
1762{
1763        if (!(flags & WALK_MORE) && nd->depth)
1764                put_link(nd);
1765        if (likely(!d_is_symlink(path->dentry)) ||
1766           !(flags & WALK_FOLLOW || nd->flags & LOOKUP_FOLLOW)) {
1767                /* not a symlink or should not follow */
1768                path_to_nameidata(path, nd);
1769                nd->inode = inode;
1770                nd->seq = seq;
1771                return 0;
1772        }
1773        /* make sure that d_is_symlink above matches inode */
1774        if (nd->flags & LOOKUP_RCU) {
1775                if (read_seqcount_retry(&path->dentry->d_seq, seq))
1776                        return -ECHILD;
1777        }
1778        return pick_link(nd, path, inode, seq);
1779}
1780
1781static int walk_component(struct nameidata *nd, int flags)
1782{
1783        struct path path;
1784        struct inode *inode;
1785        unsigned seq;
1786        int err;
1787        /*
1788         * "." and ".." are special - ".." especially so because it has
1789         * to be able to know about the current root directory and
1790         * parent relationships.
1791         */
1792        if (unlikely(nd->last_type != LAST_NORM)) {
1793                err = handle_dots(nd, nd->last_type);
1794                if (!(flags & WALK_MORE) && nd->depth)
1795                        put_link(nd);
1796                return err;
1797        }
1798        err = lookup_fast(nd, &path, &inode, &seq);
1799        if (unlikely(err <= 0)) {
1800                if (err < 0)
1801                        return err;
1802                path.dentry = lookup_slow(&nd->last, nd->path.dentry,
1803                                          nd->flags);
1804                if (IS_ERR(path.dentry))
1805                        return PTR_ERR(path.dentry);
1806
1807                path.mnt = nd->path.mnt;
1808                err = follow_managed(&path, nd);
1809                if (unlikely(err < 0))
1810                        return err;
1811
1812                seq = 0;        /* we are already out of RCU mode */
1813                inode = d_backing_inode(path.dentry);
1814        }
1815
1816        return step_into(nd, &path, flags, inode, seq);
1817}
1818
1819/*
1820 * We can do the critical dentry name comparison and hashing
1821 * operations one word at a time, but we are limited to:
1822 *
1823 * - Architectures with fast unaligned word accesses. We could
1824 *   do a "get_unaligned()" if this helps and is sufficiently
1825 *   fast.
1826 *
1827 * - non-CONFIG_DEBUG_PAGEALLOC configurations (so that we
1828 *   do not trap on the (extremely unlikely) case of a page
1829 *   crossing operation.
1830 *
1831 * - Furthermore, we need an efficient 64-bit compile for the
1832 *   64-bit case in order to generate the "number of bytes in
1833 *   the final mask". Again, that could be replaced with a
1834 *   efficient population count instruction or similar.
1835 */
1836#ifdef CONFIG_DCACHE_WORD_ACCESS
1837
1838#include <asm/word-at-a-time.h>
1839
1840#ifdef HASH_MIX
1841
1842/* Architecture provides HASH_MIX and fold_hash() in <asm/hash.h> */
1843
1844#elif defined(CONFIG_64BIT)
1845/*
1846 * Register pressure in the mixing function is an issue, particularly
1847 * on 32-bit x86, but almost any function requires one state value and
1848 * one temporary.  Instead, use a function designed for two state values
1849 * and no temporaries.
1850 *
1851 * This function cannot create a collision in only two iterations, so
1852 * we have two iterations to achieve avalanche.  In those two iterations,
1853 * we have six layers of mixing, which is enough to spread one bit's
1854 * influence out to 2^6 = 64 state bits.
1855 *
1856 * Rotate constants are scored by considering either 64 one-bit input
1857 * deltas or 64*63/2 = 2016 two-bit input deltas, and finding the
1858 * probability of that delta causing a change to each of the 128 output
1859 * bits, using a sample of random initial states.
1860 *
1861 * The Shannon entropy of the computed probabilities is then summed
1862 * to produce a score.  Ideally, any input change has a 50% chance of
1863 * toggling any given output bit.
1864 *
1865 * Mixing scores (in bits) for (12,45):
1866 * Input delta: 1-bit      2-bit
1867 * 1 round:     713.3    42542.6
1868 * 2 rounds:   2753.7   140389.8
1869 * 3 rounds:   5954.1   233458.2
1870 * 4 rounds:   7862.6   256672.2
1871 * Perfect:    8192     258048
1872 *            (64*128) (64*63/2 * 128)
1873 */
1874#define HASH_MIX(x, y, a)       \
1875        (       x ^= (a),       \
1876        y ^= x, x = rol64(x,12),\
1877        x += y, y = rol64(y,45),\
1878        y *= 9                  )
1879
1880/*
1881 * Fold two longs into one 32-bit hash value.  This must be fast, but
1882 * latency isn't quite as critical, as there is a fair bit of additional
1883 * work done before the hash value is used.
1884 */
1885static inline unsigned int fold_hash(unsigned long x, unsigned long y)
1886{
1887        y ^= x * GOLDEN_RATIO_64;
1888        y *= GOLDEN_RATIO_64;
1889        return y >> 32;
1890}
1891
1892#else   /* 32-bit case */
1893
1894/*
1895 * Mixing scores (in bits) for (7,20):
1896 * Input delta: 1-bit      2-bit
1897 * 1 round:     330.3     9201.6
1898 * 2 rounds:   1246.4    25475.4
1899 * 3 rounds:   1907.1    31295.1
1900 * 4 rounds:   2042.3    31718.6
1901 * Perfect:    2048      31744
1902 *            (32*64)   (32*31/2 * 64)
1903 */
1904#define HASH_MIX(x, y, a)       \
1905        (       x ^= (a),       \
1906        y ^= x, x = rol32(x, 7),\
1907        x += y, y = rol32(y,20),\
1908        y *= 9                  )
1909
1910static inline unsigned int fold_hash(unsigned long x, unsigned long y)
1911{
1912        /* Use arch-optimized multiply if one exists */
1913        return __hash_32(y ^ __hash_32(x));
1914}
1915
1916#endif
1917
1918/*
1919 * Return the hash of a string of known length.  This is carfully
1920 * designed to match hash_name(), which is the more critical function.
1921 * In particular, we must end by hashing a final word containing 0..7
1922 * payload bytes, to match the way that hash_name() iterates until it
1923 * finds the delimiter after the name.
1924 */
1925unsigned int full_name_hash(const void *salt, const char *name, unsigned int len)
1926{
1927        unsigned long a, x = 0, y = (unsigned long)salt;
1928
1929        for (;;) {
1930                if (!len)
1931                        goto done;
1932                a = load_unaligned_zeropad(name);
1933                if (len < sizeof(unsigned long))
1934                        break;
1935                HASH_MIX(x, y, a);
1936                name += sizeof(unsigned long);
1937                len -= sizeof(unsigned long);
1938        }
1939        x ^= a & bytemask_from_count(len);
1940done:
1941        return fold_hash(x, y);
1942}
1943EXPORT_SYMBOL(full_name_hash);
1944
1945/* Return the "hash_len" (hash and length) of a null-terminated string */
1946u64 hashlen_string(const void *salt, const char *name)
1947{
1948        unsigned long a = 0, x = 0, y = (unsigned long)salt;
1949        unsigned long adata, mask, len;
1950        const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
1951
1952        len = 0;
1953        goto inside;
1954
1955        do {
1956                HASH_MIX(x, y, a);
1957                len += sizeof(unsigned long);
1958inside:
1959                a = load_unaligned_zeropad(name+len);
1960        } while (!has_zero(a, &adata, &constants));
1961
1962        adata = prep_zero_mask(a, adata, &constants);
1963        mask = create_zero_mask(adata);
1964        x ^= a & zero_bytemask(mask);
1965
1966        return hashlen_create(fold_hash(x, y), len + find_zero(mask));
1967}
1968EXPORT_SYMBOL(hashlen_string);
1969
1970/*
1971 * Calculate the length and hash of the path component, and
1972 * return the "hash_len" as the result.
1973 */
1974static inline u64 hash_name(const void *salt, const char *name)
1975{
1976        unsigned long a = 0, b, x = 0, y = (unsigned long)salt;
1977        unsigned long adata, bdata, mask, len;
1978        const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
1979
1980        len = 0;
1981        goto inside;
1982
1983        do {
1984                HASH_MIX(x, y, a);
1985                len += sizeof(unsigned long);
1986inside:
1987                a = load_unaligned_zeropad(name+len);
1988                b = a ^ REPEAT_BYTE('/');
1989        } while (!(has_zero(a, &adata, &constants) | has_zero(b, &bdata, &constants)));
1990
1991        adata = prep_zero_mask(a, adata, &constants);
1992        bdata = prep_zero_mask(b, bdata, &constants);
1993        mask = create_zero_mask(adata | bdata);
1994        x ^= a & zero_bytemask(mask);
1995
1996        return hashlen_create(fold_hash(x, y), len + find_zero(mask));
1997}
1998
1999#else   /* !CONFIG_DCACHE_WORD_ACCESS: Slow, byte-at-a-time version */
2000
2001/* Return the hash of a string of known length */
2002unsigned int full_name_hash(const void *salt, const char *name, unsigned int len)
2003{
2004        unsigned long hash = init_name_hash(salt);
2005        while (len--)
2006                hash = partial_name_hash((unsigned char)*name++, hash);
2007        return end_name_hash(hash);
2008}
2009EXPORT_SYMBOL(full_name_hash);
2010
2011/* Return the "hash_len" (hash and length) of a null-terminated string */
2012u64 hashlen_string(const void *salt, const char *name)
2013{
2014        unsigned long hash = init_name_hash(salt);
2015        unsigned long len = 0, c;
2016
2017        c = (unsigned char)*name;
2018        while (c) {
2019                len++;
2020                hash = partial_name_hash(c, hash);
2021                c = (unsigned char)name[len];
2022        }
2023        return hashlen_create(end_name_hash(hash), len);
2024}
2025EXPORT_SYMBOL(hashlen_string);
2026
2027/*
2028 * We know there's a real path component here of at least
2029 * one character.
2030 */
2031static inline u64 hash_name(const void *salt, const char *name)
2032{
2033        unsigned long hash = init_name_hash(salt);
2034        unsigned long len = 0, c;
2035
2036        c = (unsigned char)*name;
2037        do {
2038                len++;
2039                hash = partial_name_hash(c, hash);
2040                c = (unsigned char)name[len];
2041        } while (c && c != '/');
2042        return hashlen_create(end_name_hash(hash), len);
2043}
2044
2045#endif
2046
2047/*
2048 * Name resolution.
2049 * This is the basic name resolution function, turning a pathname into
2050 * the final dentry. We expect 'base' to be positive and a directory.
2051 *
2052 * Returns 0 and nd will have valid dentry and mnt on success.
2053 * Returns error and drops reference to input namei data on failure.
2054 */
2055static int link_path_walk(const char *name, struct nameidata *nd)
2056{
2057        int err;
2058
2059        if (IS_ERR(name))
2060                return PTR_ERR(name);
2061        while (*name=='/')
2062                name++;
2063        if (!*name)
2064                return 0;
2065
2066        /* At this point we know we have a real path component. */
2067        for(;;) {
2068                u64 hash_len;
2069                int type;
2070
2071                err = may_lookup(nd);
2072                if (err)
2073                        return err;
2074
2075                hash_len = hash_name(nd->path.dentry, name);
2076
2077                type = LAST_NORM;
2078                if (name[0] == '.') switch (hashlen_len(hash_len)) {
2079                        case 2:
2080                                if (name[1] == '.') {
2081                                        type = LAST_DOTDOT;
2082                                        nd->flags |= LOOKUP_JUMPED;
2083                                }
2084                                break;
2085                        case 1:
2086                                type = LAST_DOT;
2087                }
2088                if (likely(type == LAST_NORM)) {
2089                        struct dentry *parent = nd->path.dentry;
2090                        nd->flags &= ~LOOKUP_JUMPED;
2091                        if (unlikely(parent->d_flags & DCACHE_OP_HASH)) {
2092                                struct qstr this = { { .hash_len = hash_len }, .name = name };
2093                                err = parent->d_op->d_hash(parent, &this);
2094                                if (err < 0)
2095                                        return err;
2096                                hash_len = this.hash_len;
2097                                name = this.name;
2098                        }
2099                }
2100
2101                nd->last.hash_len = hash_len;
2102                nd->last.name = name;
2103                nd->last_type = type;
2104
2105                name += hashlen_len(hash_len);
2106                if (!*name)
2107                        goto OK;
2108                /*
2109                 * If it wasn't NUL, we know it was '/'. Skip that
2110                 * slash, and continue until no more slashes.
2111                 */
2112                do {
2113                        name++;
2114                } while (unlikely(*name == '/'));
2115                if (unlikely(!*name)) {
2116OK:
2117                        /* pathname body, done */
2118                        if (!nd->depth)
2119                                return 0;
2120                        name = nd->stack[nd->depth - 1].name;
2121                        /* trailing symlink, done */
2122                        if (!name)
2123                                return 0;
2124                        /* last component of nested symlink */
2125                        err = walk_component(nd, WALK_FOLLOW);
2126                } else {
2127                        /* not the last component */
2128                        err = walk_component(nd, WALK_FOLLOW | WALK_MORE);
2129                }
2130                if (err < 0)
2131                        return err;
2132
2133                if (err) {
2134                        const char *s = get_link(nd);
2135
2136                        if (IS_ERR(s))
2137                                return PTR_ERR(s);
2138                        err = 0;
2139                        if (unlikely(!s)) {
2140                                /* jumped */
2141                                put_link(nd);
2142                        } else {
2143                                nd->stack[nd->depth - 1].name = name;
2144                                name = s;
2145                                continue;
2146                        }
2147                }
2148                if (unlikely(!d_can_lookup(nd->path.dentry))) {
2149                        if (nd->flags & LOOKUP_RCU) {
2150                                if (unlazy_walk(nd))
2151                                        return -ECHILD;
2152                        }
2153                        return -ENOTDIR;
2154                }
2155        }
2156}
2157
2158/* must be paired with terminate_walk() */
2159static const char *path_init(struct nameidata *nd, unsigned flags)
2160{
2161        const char *s = nd->name->name;
2162
2163        if (!*s)
2164                flags &= ~LOOKUP_RCU;
2165        if (flags & LOOKUP_RCU)
2166                rcu_read_lock();
2167
2168        nd->last_type = LAST_ROOT; /* if there are only slashes... */
2169        nd->flags = flags | LOOKUP_JUMPED | LOOKUP_PARENT;
2170        nd->depth = 0;
2171        if (flags & LOOKUP_ROOT) {
2172                struct dentry *root = nd->root.dentry;
2173                struct inode *inode = root->d_inode;
2174                if (*s && unlikely(!d_can_lookup(root)))
2175                        return ERR_PTR(-ENOTDIR);
2176                nd->path = nd->root;
2177                nd->inode = inode;
2178                if (flags & LOOKUP_RCU) {
2179                        nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
2180                        nd->root_seq = nd->seq;
2181                        nd->m_seq = read_seqbegin(&mount_lock);
2182                } else {
2183                        path_get(&nd->path);
2184                }
2185                return s;
2186        }
2187
2188        nd->root.mnt = NULL;
2189        nd->path.mnt = NULL;
2190        nd->path.dentry = NULL;
2191
2192        nd->m_seq = read_seqbegin(&mount_lock);
2193        if (*s == '/') {
2194                set_root(nd);
2195                if (likely(!nd_jump_root(nd)))
2196                        return s;
2197                return ERR_PTR(-ECHILD);
2198        } else if (nd->dfd == AT_FDCWD) {
2199                if (flags & LOOKUP_RCU) {
2200                        struct fs_struct *fs = current->fs;
2201                        unsigned seq;
2202
2203                        do {
2204                                seq = read_seqcount_begin(&fs->seq);
2205                                nd->path = fs->pwd;
2206                                nd->inode = nd->path.dentry->d_inode;
2207                                nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
2208                        } while (read_seqcount_retry(&fs->seq, seq));
2209                } else {
2210                        get_fs_pwd(current->fs, &nd->path);
2211                        nd->inode = nd->path.dentry->d_inode;
2212                }
2213                return s;
2214        } else {
2215                /* Caller must check execute permissions on the starting path component */
2216                struct fd f = fdget_raw(nd->dfd);
2217                struct dentry *dentry;
2218
2219                if (!f.file)
2220                        return ERR_PTR(-EBADF);
2221
2222                dentry = f.file->f_path.dentry;
2223
2224                if (*s && unlikely(!d_can_lookup(dentry))) {
2225                        fdput(f);
2226                        return ERR_PTR(-ENOTDIR);
2227                }
2228
2229                nd->path = f.file->f_path;
2230                if (flags & LOOKUP_RCU) {
2231                        nd->inode = nd->path.dentry->d_inode;
2232                        nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq);
2233                } else {
2234                        path_get(&nd->path);
2235                        nd->inode = nd->path.dentry->d_inode;
2236                }
2237                fdput(f);
2238                return s;
2239        }
2240}
2241
2242static const char *trailing_symlink(struct nameidata *nd)
2243{
2244        const char *s;
2245        int error = may_follow_link(nd);
2246        if (unlikely(error))
2247                return ERR_PTR(error);
2248        nd->flags |= LOOKUP_PARENT;
2249        nd->stack[0].name = NULL;
2250        s = get_link(nd);
2251        return s ? s : "";
2252}
2253
2254static inline int lookup_last(struct nameidata *nd)
2255{
2256        if (nd->last_type == LAST_NORM && nd->last.name[nd->last.len])
2257                nd->flags |= LOOKUP_FOLLOW | LOOKUP_DIRECTORY;
2258
2259        nd->flags &= ~LOOKUP_PARENT;
2260        return walk_component(nd, 0);
2261}
2262
2263static int handle_lookup_down(struct nameidata *nd)
2264{
2265        struct path path = nd->path;
2266        struct inode *inode = nd->inode;
2267        unsigned seq = nd->seq;
2268        int err;
2269
2270        if (nd->flags & LOOKUP_RCU) {
2271                /*
2272                 * don't bother with unlazy_walk on failure - we are
2273                 * at the very beginning of walk, so we lose nothing
2274                 * if we simply redo everything in non-RCU mode
2275                 */
2276                if (unlikely(!__follow_mount_rcu(nd, &path, &inode, &seq)))
2277                        return -ECHILD;
2278        } else {
2279                dget(path.dentry);
2280                err = follow_managed(&path, nd);
2281                if (unlikely(err < 0))
2282                        return err;
2283                inode = d_backing_inode(path.dentry);
2284                seq = 0;
2285        }
2286        path_to_nameidata(&path, nd);
2287        nd->inode = inode;
2288        nd->seq = seq;
2289        return 0;
2290}
2291
2292/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
2293static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path)
2294{
2295        const char *s = path_init(nd, flags);
2296        int err;
2297
2298        if (unlikely(flags & LOOKUP_DOWN) && !IS_ERR(s)) {
2299                err = handle_lookup_down(nd);
2300                if (unlikely(err < 0))
2301                        s = ERR_PTR(err);
2302        }
2303
2304        while (!(err = link_path_walk(s, nd))
2305                && ((err = lookup_last(nd)) > 0)) {
2306                s = trailing_symlink(nd);
2307        }
2308        if (!err)
2309                err = complete_walk(nd);
2310
2311        if (!err && nd->flags & LOOKUP_DIRECTORY)
2312                if (!d_can_lookup(nd->path.dentry))
2313                        err = -ENOTDIR;
2314        if (!err) {
2315                *path = nd->path;
2316                nd->path.mnt = NULL;
2317                nd->path.dentry = NULL;
2318        }
2319        terminate_walk(nd);
2320        return err;
2321}
2322
2323int filename_lookup(int dfd, struct filename *name, unsigned flags,
2324                    struct path *path, struct path *root)
2325{
2326        int retval;
2327        struct nameidata nd;
2328        if (IS_ERR(name))
2329                return PTR_ERR(name);
2330        if (unlikely(root)) {
2331                nd.root = *root;
2332                flags |= LOOKUP_ROOT;
2333        }
2334        set_nameidata(&nd, dfd, name);
2335        retval = path_lookupat(&nd, flags | LOOKUP_RCU, path);
2336        if (unlikely(retval == -ECHILD))
2337                retval = path_lookupat(&nd, flags, path);
2338        if (unlikely(retval == -ESTALE))
2339                retval = path_lookupat(&nd, flags | LOOKUP_REVAL, path);
2340
2341        if (likely(!retval))
2342                audit_inode(name, path->dentry, 0);
2343        restore_nameidata();
2344        putname(name);
2345        return retval;
2346}
2347
2348/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */
2349static int path_parentat(struct nameidata *nd, unsigned flags,
2350                                struct path *parent)
2351{
2352        const char *s = path_init(nd, flags);
2353        int err = link_path_walk(s, nd);
2354        if (!err)
2355                err = complete_walk(nd);
2356        if (!err) {
2357                *parent = nd->path;
2358                nd->path.mnt = NULL;
2359                nd->path.dentry = NULL;
2360        }
2361        terminate_walk(nd);
2362        return err;
2363}
2364
2365static struct filename *filename_parentat(int dfd, struct filename *name,
2366                                unsigned int flags, struct path *parent,
2367                                struct qstr *last, int *type)
2368{
2369        int retval;
2370        struct nameidata nd;
2371
2372        if (IS_ERR(name))
2373                return name;
2374        set_nameidata(&nd, dfd, name);
2375        retval = path_parentat(&nd, flags | LOOKUP_RCU, parent);
2376        if (unlikely(retval == -ECHILD))
2377                retval = path_parentat(&nd, flags, parent);
2378        if (unlikely(retval == -ESTALE))
2379                retval = path_parentat(&nd, flags | LOOKUP_REVAL, parent);
2380        if (likely(!retval)) {
2381                *last = nd.last;
2382                *type = nd.last_type;
2383                audit_inode(name, parent->dentry, AUDIT_INODE_PARENT);
2384        } else {
2385                putname(name);
2386                name = ERR_PTR(retval);
2387        }
2388        restore_nameidata();
2389        return name;
2390}
2391
2392/* does lookup, returns the object with parent locked */
2393struct dentry *kern_path_locked(const char *name, struct path *path)
2394{
2395        struct filename *filename;
2396        struct dentry *d;
2397        struct qstr last;
2398        int type;
2399
2400        filename = filename_parentat(AT_FDCWD, getname_kernel(name), 0, path,
2401                                    &last, &type);
2402        if (IS_ERR(filename))
2403                return ERR_CAST(filename);
2404        if (unlikely(type != LAST_NORM)) {
2405                path_put(path);
2406                putname(filename);
2407                return ERR_PTR(-EINVAL);
2408        }
2409        inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT);
2410        d = __lookup_hash(&last, path->dentry, 0);
2411        if (IS_ERR(d)) {
2412                inode_unlock(path->dentry->d_inode);
2413                path_put(path);
2414        }
2415        putname(filename);
2416        return d;
2417}
2418
2419int kern_path(const char *name, unsigned int flags, struct path *path)
2420{
2421        return filename_lookup(AT_FDCWD, getname_kernel(name),
2422                               flags, path, NULL);
2423}
2424EXPORT_SYMBOL(kern_path);
2425
2426/**
2427 * vfs_path_lookup - lookup a file path relative to a dentry-vfsmount pair
2428 * @dentry:  pointer to dentry of the base directory
2429 * @mnt: pointer to vfs mount of the base directory
2430 * @name: pointer to file name
2431 * @flags: lookup flags
2432 * @path: pointer to struct path to fill
2433 */
2434int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
2435                    const char *name, unsigned int flags,
2436                    struct path *path)
2437{
2438        struct path root = {.mnt = mnt, .dentry = dentry};
2439        /* the first argument of filename_lookup() is ignored with root */
2440        return filename_lookup(AT_FDCWD, getname_kernel(name),
2441                               flags , path, &root);
2442}
2443EXPORT_SYMBOL(vfs_path_lookup);
2444
2445static int lookup_one_len_common(const char *name, struct dentry *base,
2446                                 int len, struct qstr *this)
2447{
2448        this->name = name;
2449        this->len = len;
2450        this->hash = full_name_hash(base, name, len);
2451        if (!len)
2452                return -EACCES;
2453
2454        if (unlikely(name[0] == '.')) {
2455                if (len < 2 || (len == 2 && name[1] == '.'))
2456                        return -EACCES;
2457        }
2458
2459        while (len--) {
2460                unsigned int c = *(const unsigned char *)name++;
2461                if (c == '/' || c == '\0')
2462                        return -EACCES;
2463        }
2464        /*
2465         * See if the low-level filesystem might want
2466         * to use its own hash..
2467         */
2468        if (base->d_flags & DCACHE_OP_HASH) {
2469                int err = base->d_op->d_hash(base, this);
2470                if (err < 0)
2471                        return err;
2472        }
2473
2474        return inode_permission(base->d_inode, MAY_EXEC);
2475}
2476
2477/**
2478 * try_lookup_one_len - filesystem helper to lookup single pathname component
2479 * @name:       pathname component to lookup
2480 * @base:       base directory to lookup from
2481 * @len:        maximum length @len should be interpreted to
2482 *
2483 * Look up a dentry by name in the dcache, returning NULL if it does not
2484 * currently exist.  The function does not try to create a dentry.
2485 *
2486 * Note that this routine is purely a helper for filesystem usage and should
2487 * not be called by generic code.
2488 *
2489 * The caller must hold base->i_mutex.
2490 */
2491struct dentry *try_lookup_one_len(const char *name, struct dentry *base, int len)
2492{
2493        struct qstr this;
2494        int err;
2495
2496        WARN_ON_ONCE(!inode_is_locked(base->d_inode));
2497
2498        err = lookup_one_len_common(name, base, len, &this);
2499        if (err)
2500                return ERR_PTR(err);
2501
2502        return lookup_dcache(&this, base, 0);
2503}
2504EXPORT_SYMBOL(try_lookup_one_len);
2505
2506/**
2507 * lookup_one_len - filesystem helper to lookup single pathname component
2508 * @name:       pathname component to lookup
2509 * @base:       base directory to lookup from
2510 * @len:        maximum length @len should be interpreted to
2511 *
2512 * Note that this routine is purely a helper for filesystem usage and should
2513 * not be called by generic code.
2514 *
2515 * The caller must hold base->i_mutex.
2516 */
2517struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
2518{
2519        struct dentry *dentry;
2520        struct qstr this;
2521        int err;
2522
2523        WARN_ON_ONCE(!inode_is_locked(base->d_inode));
2524
2525        err = lookup_one_len_common(name, base, len, &this);
2526        if (err)
2527                return ERR_PTR(err);
2528
2529        dentry = lookup_dcache(&this, base, 0);
2530        return dentry ? dentry : __lookup_slow(&this, base, 0);
2531}
2532EXPORT_SYMBOL(lookup_one_len);
2533
2534/**
2535 * lookup_one_len_unlocked - filesystem helper to lookup single pathname component
2536 * @name:       pathname component to lookup
2537 * @base:       base directory to lookup from
2538 * @len:        maximum length @len should be interpreted to
2539 *
2540 * Note that this routine is purely a helper for filesystem usage and should
2541 * not be called by generic code.
2542 *
2543 * Unlike lookup_one_len, it should be called without the parent
2544 * i_mutex held, and will take the i_mutex itself if necessary.
2545 */
2546struct dentry *lookup_one_len_unlocked(const char *name,
2547                                       struct dentry *base, int len)
2548{
2549        struct qstr this;
2550        int err;
2551        struct dentry *ret;
2552
2553        err = lookup_one_len_common(name, base, len, &this);
2554        if (err)
2555                return ERR_PTR(err);
2556
2557        ret = lookup_dcache(&this, base, 0);
2558        if (!ret)
2559                ret = lookup_slow(&this, base, 0);
2560        return ret;
2561}
2562EXPORT_SYMBOL(lookup_one_len_unlocked);
2563
2564/*
2565 * Like lookup_one_len_unlocked(), except that it yields ERR_PTR(-ENOENT)
2566 * on negatives.  Returns known positive or ERR_PTR(); that's what
2567 * most of the users want.  Note that pinned negative with unlocked parent
2568 * _can_ become positive at any time, so callers of lookup_one_len_unlocked()
2569 * need to be very careful; pinned positives have ->d_inode stable, so
2570 * this one avoids such problems.
2571 */
2572struct dentry *lookup_positive_unlocked(const char *name,
2573                                       struct dentry *base, int len)
2574{
2575        struct dentry *ret = lookup_one_len_unlocked(name, base, len);
2576        if (!IS_ERR(ret) && d_flags_negative(smp_load_acquire(&ret->d_flags))) {
2577                dput(ret);
2578                ret = ERR_PTR(-ENOENT);
2579        }
2580        return ret;
2581}
2582EXPORT_SYMBOL(lookup_positive_unlocked);
2583
2584#ifdef CONFIG_UNIX98_PTYS
2585int path_pts(struct path *path)
2586{
2587        /* Find something mounted on "pts" in the same directory as
2588         * the input path.
2589         */
2590        struct dentry *child, *parent;
2591        struct qstr this;
2592        int ret;
2593
2594        ret = path_parent_directory(path);
2595        if (ret)
2596                return ret;
2597
2598        parent = path->dentry;
2599        this.name = "pts";
2600        this.len = 3;
2601        child = d_hash_and_lookup(parent, &this);
2602        if (!child)
2603                return -ENOENT;
2604
2605        path->dentry = child;
2606        dput(parent);
2607        follow_mount(path);
2608        return 0;
2609}
2610#endif
2611
2612int user_path_at_empty(int dfd, const char __user *name, unsigned flags,
2613                 struct path *path, int *empty)
2614{
2615        return filename_lookup(dfd, getname_flags(name, flags, empty),
2616                               flags, path, NULL);
2617}
2618EXPORT_SYMBOL(user_path_at_empty);
2619
2620/**
2621 * path_mountpoint - look up a path to be umounted
2622 * @nd:         lookup context
2623 * @flags:      lookup flags
2624 * @path:       pointer to container for result
2625 *
2626 * Look up the given name, but don't attempt to revalidate the last component.
2627 * Returns 0 and "path" will be valid on success; Returns error otherwise.
2628 */
2629static int
2630path_mountpoint(struct nameidata *nd, unsigned flags, struct path *path)
2631{
2632        const char *s = path_init(nd, flags);
2633        int err;
2634
2635        while (!(err = link_path_walk(s, nd)) &&
2636                (err = lookup_last(nd)) > 0) {
2637                s = trailing_symlink(nd);
2638        }
2639        if (!err && (nd->flags & LOOKUP_RCU))
2640                err = unlazy_walk(nd);
2641        if (!err)
2642                err = handle_lookup_down(nd);
2643        if (!err) {
2644                *path = nd->path;
2645                nd->path.mnt = NULL;
2646                nd->path.dentry = NULL;
2647        }
2648        terminate_walk(nd);
2649        return err;
2650}
2651
2652static int
2653filename_mountpoint(int dfd, struct filename *name, struct path *path,
2654                        unsigned int flags)
2655{
2656        struct nameidata nd;
2657        int error;
2658        if (IS_ERR(name))
2659                return PTR_ERR(name);
2660        set_nameidata(&nd, dfd, name);
2661        error = path_mountpoint(&nd, flags | LOOKUP_RCU, path);
2662        if (unlikely(error == -ECHILD))
2663                error = path_mountpoint(&nd, flags, path);
2664        if (unlikely(error == -ESTALE))
2665                error = path_mountpoint(&nd, flags | LOOKUP_REVAL, path);
2666        if (likely(!error))
2667                audit_inode(name, path->dentry, AUDIT_INODE_NOEVAL);
2668        restore_nameidata();
2669        putname(name);
2670        return error;
2671}
2672
2673/**
2674 * user_path_mountpoint_at - lookup a path from userland in order to umount it
2675 * @dfd:        directory file descriptor
2676 * @name:       pathname from userland
2677 * @flags:      lookup flags
2678 * @path:       pointer to container to hold result
2679 *
2680 * A umount is a special case for path walking. We're not actually interested
2681 * in the inode in this situation, and ESTALE errors can be a problem. We
2682 * simply want track down the dentry and vfsmount attached at the mountpoint
2683 * and avoid revalidating the last component.
2684 *
2685 * Returns 0 and populates "path" on success.
2686 */
2687int
2688user_path_mountpoint_at(int dfd, const char __user *name, unsigned int flags,
2689                        struct path *path)
2690{
2691        return filename_mountpoint(dfd, getname(name), path, flags);
2692}
2693
2694int
2695kern_path_mountpoint(int dfd, const char *name, struct path *path,
2696                        unsigned int flags)
2697{
2698        return filename_mountpoint(dfd, getname_kernel(name), path, flags);
2699}
2700EXPORT_SYMBOL(kern_path_mountpoint);
2701
2702int __check_sticky(struct inode *dir, struct inode *inode)
2703{
2704        kuid_t fsuid = current_fsuid();
2705
2706        if (uid_eq(inode->i_uid, fsuid))
2707                return 0;
2708        if (uid_eq(dir->i_uid, fsuid))
2709                return 0;
2710        return !capable_wrt_inode_uidgid(inode, CAP_FOWNER);
2711}
2712EXPORT_SYMBOL(__check_sticky);
2713
2714/*
2715 *      Check whether we can remove a link victim from directory dir, check
2716 *  whether the type of victim is right.
2717 *  1. We can't do it if dir is read-only (done in permission())
2718 *  2. We should have write and exec permissions on dir
2719 *  3. We can't remove anything from append-only dir
2720 *  4. We can't do anything with immutable dir (done in permission())
2721 *  5. If the sticky bit on dir is set we should either
2722 *      a. be owner of dir, or
2723 *      b. be owner of victim, or
2724 *      c. have CAP_FOWNER capability
2725 *  6. If the victim is append-only or immutable we can't do antyhing with
2726 *     links pointing to it.
2727 *  7. If the victim has an unknown uid or gid we can't change the inode.
2728 *  8. If we were asked to remove a directory and victim isn't one - ENOTDIR.
2729 *  9. If we were asked to remove a non-directory and victim isn't one - EISDIR.
2730 * 10. We can't remove a root or mountpoint.
2731 * 11. We don't allow removal of NFS sillyrenamed files; it's handled by
2732 *     nfs_async_unlink().
2733 */
2734static int may_delete(struct inode *dir, struct dentry *victim, bool isdir)
2735{
2736        struct inode *inode = d_backing_inode(victim);
2737        int error;
2738
2739        if (d_is_negative(victim))
2740                return -ENOENT;
2741        BUG_ON(!inode);
2742
2743        BUG_ON(victim->d_parent->d_inode != dir);
2744
2745        /* Inode writeback is not safe when the uid or gid are invalid. */
2746        if (!uid_valid(inode->i_uid) || !gid_valid(inode->i_gid))
2747                return -EOVERFLOW;
2748
2749        audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE);
2750
2751        error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
2752        if (error)
2753                return error;
2754        if (IS_APPEND(dir))
2755                return -EPERM;
2756
2757        if (check_sticky(dir, inode) || IS_APPEND(inode) ||
2758            IS_IMMUTABLE(inode) || IS_SWAPFILE(inode) || HAS_UNMAPPED_ID(inode))
2759                return -EPERM;
2760        if (isdir) {
2761                if (!d_is_dir(victim))
2762                        return -ENOTDIR;
2763                if (IS_ROOT(victim))
2764                        return -EBUSY;
2765        } else if (d_is_dir(victim))
2766                return -EISDIR;
2767        if (IS_DEADDIR(dir))
2768                return -ENOENT;
2769        if (victim->d_flags & DCACHE_NFSFS_RENAMED)
2770                return -EBUSY;
2771        return 0;
2772}
2773
2774/*      Check whether we can create an object with dentry child in directory
2775 *  dir.
2776 *  1. We can't do it if child already exists (open has special treatment for
2777 *     this case, but since we are inlined it's OK)
2778 *  2. We can't do it if dir is read-only (done in permission())
2779 *  3. We can't do it if the fs can't represent the fsuid or fsgid.
2780 *  4. We should have write and exec permissions on dir
2781 *  5. We can't do it if dir is immutable (done in permission())
2782 */
2783static inline int may_create(struct inode *dir, struct dentry *child)
2784{
2785        struct user_namespace *s_user_ns;
2786        audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE);
2787        if (child->d_inode)
2788                return -EEXIST;
2789        if (IS_DEADDIR(dir))
2790                return -ENOENT;
2791        s_user_ns = dir->i_sb->s_user_ns;
2792        if (!kuid_has_mapping(s_user_ns, current_fsuid()) ||
2793            !kgid_has_mapping(s_user_ns, current_fsgid()))
2794                return -EOVERFLOW;
2795        return inode_permission(dir, MAY_WRITE | MAY_EXEC);
2796}
2797
2798/*
2799 * p1 and p2 should be directories on the same fs.
2800 */
2801struct dentry *lock_rename(struct dentry *p1, struct dentry *p2)
2802{
2803        struct dentry *p;
2804
2805        if (p1 == p2) {
2806                inode_lock_nested(p1->d_inode, I_MUTEX_PARENT);
2807                return NULL;
2808        }
2809
2810        mutex_lock(&p1->d_sb->s_vfs_rename_mutex);
2811
2812        p = d_ancestor(p2, p1);
2813        if (p) {
2814                inode_lock_nested(p2->d_inode, I_MUTEX_PARENT);
2815                inode_lock_nested(p1->d_inode, I_MUTEX_CHILD);
2816                return p;
2817        }
2818
2819        p = d_ancestor(p1, p2);
2820        if (p) {
2821                inode_lock_nested(p1->d_inode, I_MUTEX_PARENT);
2822                inode_lock_nested(p2->d_inode, I_MUTEX_CHILD);
2823                return p;
2824        }
2825
2826        inode_lock_nested(p1->d_inode, I_MUTEX_PARENT);
2827        inode_lock_nested(p2->d_inode, I_MUTEX_PARENT2);
2828        return NULL;
2829}
2830EXPORT_SYMBOL(lock_rename);
2831
2832void unlock_rename(struct dentry *p1, struct dentry *p2)
2833{
2834        inode_unlock(p1->d_inode);
2835        if (p1 != p2) {
2836                inode_unlock(p2->d_inode);
2837                mutex_unlock(&p1->d_sb->s_vfs_rename_mutex);
2838        }
2839}
2840EXPORT_SYMBOL(unlock_rename);
2841
2842int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
2843                bool want_excl)
2844{
2845        int error = may_create(dir, dentry);
2846        if (error)
2847                return error;
2848
2849        if (!dir->i_op->create)
2850                return -EACCES; /* shouldn't it be ENOSYS? */
2851        mode &= S_IALLUGO;
2852        mode |= S_IFREG;
2853        error = security_inode_create(dir, dentry, mode);
2854        if (error)
2855                return error;
2856        error = dir->i_op->create(dir, dentry, mode, want_excl);
2857        if (!error)
2858                fsnotify_create(dir, dentry);
2859        return error;
2860}
2861EXPORT_SYMBOL(vfs_create);
2862
2863int vfs_mkobj(struct dentry *dentry, umode_t mode,
2864                int (*f)(struct dentry *, umode_t, void *),
2865                void *arg)
2866{
2867        struct inode *dir = dentry->d_parent->d_inode;
2868        int error = may_create(dir, dentry);
2869        if (error)
2870                return error;
2871
2872        mode &= S_IALLUGO;
2873        mode |= S_IFREG;
2874        error = security_inode_create(dir, dentry, mode);
2875        if (error)
2876                return error;
2877        error = f(dentry, mode, arg);
2878        if (!error)
2879                fsnotify_create(dir, dentry);
2880        return error;
2881}
2882EXPORT_SYMBOL(vfs_mkobj);
2883
2884bool may_open_dev(const struct path *path)
2885{
2886        return !(path->mnt->mnt_flags & MNT_NODEV) &&
2887                !(path->mnt->mnt_sb->s_iflags & SB_I_NODEV);
2888}
2889
2890static int may_open(const struct path *path, int acc_mode, int flag)
2891{
2892        struct dentry *dentry = path->dentry;
2893        struct inode *inode = dentry->d_inode;
2894        int error;
2895
2896        if (!inode)
2897                return -ENOENT;
2898
2899        switch (inode->i_mode & S_IFMT) {
2900        case S_IFLNK:
2901                return -ELOOP;
2902        case S_IFDIR:
2903                if (acc_mode & MAY_WRITE)
2904                        return -EISDIR;
2905                break;
2906        case S_IFBLK:
2907        case S_IFCHR:
2908                if (!may_open_dev(path))
2909                        return -EACCES;
2910                /*FALLTHRU*/
2911        case S_IFIFO:
2912        case S_IFSOCK:
2913                flag &= ~O_TRUNC;
2914                break;
2915        }
2916
2917        error = inode_permission(inode, MAY_OPEN | acc_mode);
2918        if (error)
2919                return error;
2920
2921        /*
2922         * An append-only file must be opened in append mode for writing.
2923         */
2924        if (IS_APPEND(inode)) {
2925                if  ((flag & O_ACCMODE) != O_RDONLY && !(flag & O_APPEND))
2926                        return -EPERM;
2927                if (flag & O_TRUNC)
2928                        return -EPERM;
2929        }
2930
2931        /* O_NOATIME can only be set by the owner or superuser */
2932        if (flag & O_NOATIME && !inode_owner_or_capable(inode))
2933                return -EPERM;
2934
2935        return 0;
2936}
2937
2938static int handle_truncate(struct file *filp)
2939{
2940        const struct path *path = &filp->f_path;
2941        struct inode *inode = path->dentry->d_inode;
2942        int error = get_write_access(inode);
2943        if (error)
2944                return error;
2945        /*
2946         * Refuse to truncate files with mandatory locks held on them.
2947         */
2948        error = locks_verify_locked(filp);
2949        if (!error)
2950                error = security_path_truncate(path);
2951        if (!error) {
2952                error = do_truncate(path->dentry, 0,
2953                                    ATTR_MTIME|ATTR_CTIME|ATTR_OPEN,
2954                                    filp);
2955        }
2956        put_write_access(inode);
2957        return error;
2958}
2959
2960static inline int open_to_namei_flags(int flag)
2961{
2962        if ((flag & O_ACCMODE) == 3)
2963                flag--;
2964        return flag;
2965}
2966
2967static int may_o_create(const struct path *dir, struct dentry *dentry, umode_t mode)
2968{
2969        struct user_namespace *s_user_ns;
2970        int error = security_path_mknod(dir, dentry, mode, 0);
2971        if (error)
2972                return error;
2973
2974        s_user_ns = dir->dentry->d_sb->s_user_ns;
2975        if (!kuid_has_mapping(s_user_ns, current_fsuid()) ||
2976            !kgid_has_mapping(s_user_ns, current_fsgid()))
2977                return -EOVERFLOW;
2978
2979        error = inode_permission(dir->dentry->d_inode, MAY_WRITE | MAY_EXEC);
2980        if (error)
2981                return error;
2982
2983        return security_inode_create(dir->dentry->d_inode, dentry, mode);
2984}
2985
2986/*
2987 * Attempt to atomically look up, create and open a file from a negative
2988 * dentry.
2989 *
2990 * Returns 0 if successful.  The file will have been created and attached to
2991 * @file by the filesystem calling finish_open().
2992 *
2993 * If the file was looked up only or didn't need creating, FMODE_OPENED won't
2994 * be set.  The caller will need to perform the open themselves.  @path will
2995 * have been updated to point to the new dentry.  This may be negative.
2996 *
2997 * Returns an error code otherwise.
2998 */
2999static int atomic_open(struct nameidata *nd, struct dentry *dentry,
3000                        struct path *path, struct file *file,
3001                        const struct open_flags *op,
3002                        int open_flag, umode_t mode)
3003{
3004        struct dentry *const DENTRY_NOT_SET = (void *) -1UL;
3005        struct inode *dir =  nd->path.dentry->d_inode;
3006        int error;
3007
3008        if (!(~open_flag & (O_EXCL | O_CREAT))) /* both O_EXCL and O_CREAT */
3009                open_flag &= ~O_TRUNC;
3010
3011        if (nd->flags & LOOKUP_DIRECTORY)
3012                open_flag |= O_DIRECTORY;
3013
3014        file->f_path.dentry = DENTRY_NOT_SET;
3015        file->f_path.mnt = nd->path.mnt;
3016        error = dir->i_op->atomic_open(dir, dentry, file,
3017                                       open_to_namei_flags(open_flag), mode);
3018        d_lookup_done(dentry);
3019        if (!error) {
3020                if (file->f_mode & FMODE_OPENED) {
3021                        /*
3022                         * We didn't have the inode before the open, so check open
3023                         * permission here.
3024                         */
3025                        int acc_mode = op->acc_mode;
3026                        if (file->f_mode & FMODE_CREATED) {
3027                                WARN_ON(!(open_flag & O_CREAT));
3028                                fsnotify_create(dir, dentry);
3029                                acc_mode = 0;
3030                        }
3031                        error = may_open(&file->f_path, acc_mode, open_flag);
3032                        if (WARN_ON(error > 0))
3033                                error = -EINVAL;
3034                } else if (WARN_ON(file->f_path.dentry == DENTRY_NOT_SET)) {
3035                        error = -EIO;
3036                } else {
3037                        if (file->f_path.dentry) {
3038                                dput(dentry);
3039                                dentry = file->f_path.dentry;
3040                        }
3041                        if (file->f_mode & FMODE_CREATED)
3042                                fsnotify_create(dir, dentry);
3043                        if (unlikely(d_is_negative(dentry))) {
3044                                error = -ENOENT;
3045                        } else {
3046                                path->dentry = dentry;
3047                                path->mnt = nd->path.mnt;
3048                                return 0;
3049                        }
3050                }
3051        }
3052        dput(dentry);
3053        return error;
3054}
3055
3056/*
3057 * Look up and maybe create and open the last component.
3058 *
3059 * Must be called with parent locked (exclusive in O_CREAT case).
3060 *
3061 * Returns 0 on success, that is, if
3062 *  the file was successfully atomically created (if necessary) and opened, or
3063 *  the file was not completely opened at this time, though lookups and
3064 *  creations were performed.
3065 * These case are distinguished by presence of FMODE_OPENED on file->f_mode.
3066 * In the latter case dentry returned in @path might be negative if O_CREAT
3067 * hadn't been specified.
3068 *
3069 * An error code is returned on failure.
3070 */
3071static int lookup_open(struct nameidata *nd, struct path *path,
3072                        struct file *file,
3073                        const struct open_flags *op,
3074                        bool got_write)
3075{
3076        struct dentry *dir = nd->path.dentry;
3077        struct inode *dir_inode = dir->d_inode;
3078        int open_flag = op->open_flag;
3079        struct dentry *dentry;
3080        int error, create_error = 0;
3081        umode_t mode = op->mode;
3082        DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
3083
3084        if (unlikely(IS_DEADDIR(dir_inode)))
3085                return -ENOENT;
3086
3087        file->f_mode &= ~FMODE_CREATED;
3088        dentry = d_lookup(dir, &nd->last);
3089        for (;;) {
3090                if (!dentry) {
3091                        dentry = d_alloc_parallel(dir, &nd->last, &wq);
3092                        if (IS_ERR(dentry))
3093                                return PTR_ERR(dentry);
3094                }
3095                if (d_in_lookup(dentry))
3096                        break;
3097
3098                error = d_revalidate(dentry, nd->flags);
3099                if (likely(error > 0))
3100                        break;
3101                if (error)
3102                        goto out_dput;
3103                d_invalidate(dentry);
3104                dput(dentry);
3105                dentry = NULL;
3106        }
3107        if (dentry->d_inode) {
3108                /* Cached positive dentry: will open in f_op->open */
3109                goto out_no_open;
3110        }
3111
3112        /*
3113         * Checking write permission is tricky, bacuse we don't know if we are
3114         * going to actually need it: O_CREAT opens should work as long as the
3115         * file exists.  But checking existence breaks atomicity.  The trick is
3116         * to check access and if not granted clear O_CREAT from the flags.
3117         *
3118         * Another problem is returing the "right" error value (e.g. for an
3119         * O_EXCL open we want to return EEXIST not EROFS).
3120         */
3121        if (open_flag & O_CREAT) {
3122                if (!IS_POSIXACL(dir->d_inode))
3123                        mode &= ~current_umask();
3124                if (unlikely(!got_write)) {
3125                        create_error = -EROFS;
3126                        open_flag &= ~O_CREAT;
3127                        if (open_flag & (O_EXCL | O_TRUNC))
3128                                goto no_open;
3129                        /* No side effects, safe to clear O_CREAT */
3130                } else {
3131                        create_error = may_o_create(&nd->path, dentry, mode);
3132                        if (create_error) {
3133                                open_flag &= ~O_CREAT;
3134                                if (open_flag & O_EXCL)
3135                                        goto no_open;
3136                        }
3137                }
3138        } else if ((open_flag & (O_TRUNC|O_WRONLY|O_RDWR)) &&
3139                   unlikely(!got_write)) {
3140                /*
3141                 * No O_CREATE -> atomicity not a requirement -> fall
3142                 * back to lookup + open
3143                 */
3144                goto no_open;
3145        }
3146
3147        if (dir_inode->i_op->atomic_open) {
3148                error = atomic_open(nd, dentry, path, file, op, open_flag,
3149                                    mode);
3150                if (unlikely(error == -ENOENT) && create_error)
3151                        error = create_error;
3152                return error;
3153        }
3154
3155no_open:
3156        if (d_in_lookup(dentry)) {
3157                struct dentry *res = dir_inode->i_op->lookup(dir_inode, dentry,
3158                                                             nd->flags);
3159                d_lookup_done(dentry);
3160                if (unlikely(res)) {
3161                        if (IS_ERR(res)) {
3162                                error = PTR_ERR(res);
3163                                goto out_dput;
3164                        }
3165                        dput(dentry);
3166                        dentry = res;
3167                }
3168        }
3169
3170        /* Negative dentry, just create the file */
3171        if (!dentry->d_inode && (open_flag & O_CREAT)) {
3172                file->f_mode |= FMODE_CREATED;
3173                audit_inode_child(dir_inode, dentry, AUDIT_TYPE_CHILD_CREATE);
3174                if (!dir_inode->i_op->create) {
3175                        error = -EACCES;
3176                        goto out_dput;
3177                }
3178                error = dir_inode->i_op->create(dir_inode, dentry, mode,
3179                                                open_flag & O_EXCL);
3180                if (error)
3181                        goto out_dput;
3182                fsnotify_create(dir_inode, dentry);
3183        }
3184        if (unlikely(create_error) && !dentry->d_inode) {
3185                error = create_error;
3186                goto out_dput;
3187        }
3188out_no_open:
3189        path->dentry = dentry;
3190        path->mnt = nd->path.mnt;
3191        return 0;
3192
3193out_dput:
3194        dput(dentry);
3195        return error;
3196}
3197
3198/*
3199 * Handle the last step of open()
3200 */
3201static int do_last(struct nameidata *nd,
3202                   struct file *file, const struct open_flags *op)
3203{
3204        struct dentry *dir = nd->path.dentry;
3205        kuid_t dir_uid = dir->d_inode->i_uid;
3206        umode_t dir_mode = dir->d_inode->i_mode;
3207        int open_flag = op->open_flag;
3208        bool will_truncate = (open_flag & O_TRUNC) != 0;
3209        bool got_write = false;
3210        int acc_mode = op->acc_mode;
3211        unsigned seq;
3212        struct inode *inode;
3213        struct path path;
3214        int error;
3215
3216        nd->flags &= ~LOOKUP_PARENT;
3217        nd->flags |= op->intent;
3218
3219        if (nd->last_type != LAST_NORM) {
3220                error = handle_dots(nd, nd->last_type);
3221                if (unlikely(error))
3222                        return error;
3223                goto finish_open;
3224        }
3225
3226        if (!(open_flag & O_CREAT)) {
3227                if (nd->last.name[nd->last.len])
3228                        nd->flags |= LOOKUP_FOLLOW | LOOKUP_DIRECTORY;
3229                /* we _can_ be in RCU mode here */
3230                error = lookup_fast(nd, &path, &inode, &seq);
3231                if (likely(error > 0))
3232                        goto finish_lookup;
3233
3234                if (error < 0)
3235                        return error;
3236
3237                BUG_ON(nd->inode != dir->d_inode);
3238                BUG_ON(nd->flags & LOOKUP_RCU);
3239        } else {
3240                /* create side of things */
3241                /*
3242                 * This will *only* deal with leaving RCU mode - LOOKUP_JUMPED
3243                 * has been cleared when we got to the last component we are
3244                 * about to look up
3245                 */
3246                error = complete_walk(nd);
3247                if (error)
3248                        return error;
3249
3250                audit_inode(nd->name, dir, AUDIT_INODE_PARENT);
3251                /* trailing slashes? */
3252                if (unlikely(nd->last.name[nd->last.len]))
3253                        return -EISDIR;
3254        }
3255
3256        if (open_flag & (O_CREAT | O_TRUNC | O_WRONLY | O_RDWR)) {
3257                error = mnt_want_write(nd->path.mnt);
3258                if (!error)
3259                        got_write = true;
3260                /*
3261                 * do _not_ fail yet - we might not need that or fail with
3262                 * a different error; let lookup_open() decide; we'll be
3263                 * dropping this one anyway.
3264                 */
3265        }
3266        if (open_flag & O_CREAT)
3267                inode_lock(dir->d_inode);
3268        else
3269                inode_lock_shared(dir->d_inode);
3270        error = lookup_open(nd, &path, file, op, got_write);
3271        if (open_flag & O_CREAT)
3272                inode_unlock(dir->d_inode);
3273        else
3274                inode_unlock_shared(dir->d_inode);
3275
3276        if (error)
3277                goto out;
3278
3279        if (file->f_mode & FMODE_OPENED) {
3280                if ((file->f_mode & FMODE_CREATED) ||
3281                    !S_ISREG(file_inode(file)->i_mode))
3282                        will_truncate = false;
3283
3284                audit_inode(nd->name, file->f_path.dentry, 0);
3285                goto opened;
3286        }
3287
3288        if (file->f_mode & FMODE_CREATED) {
3289                /* Don't check for write permission, don't truncate */
3290                open_flag &= ~O_TRUNC;
3291                will_truncate = false;
3292                acc_mode = 0;
3293                path_to_nameidata(&path, nd);
3294                goto finish_open_created;
3295        }
3296
3297        /*
3298         * If atomic_open() acquired write access it is dropped now due to
3299         * possible mount and symlink following (this might be optimized away if
3300         * necessary...)
3301         */
3302        if (got_write) {
3303                mnt_drop_write(nd->path.mnt);
3304                got_write = false;
3305        }
3306
3307        error = follow_managed(&path, nd);
3308        if (unlikely(error < 0))
3309                return error;
3310
3311        /*
3312         * create/update audit record if it already exists.
3313         */
3314        audit_inode(nd->name, path.dentry, 0);
3315
3316        if (unlikely((open_flag & (O_EXCL | O_CREAT)) == (O_EXCL | O_CREAT))) {
3317                path_to_nameidata(&path, nd);
3318                return -EEXIST;
3319        }
3320
3321        seq = 0;        /* out of RCU mode, so the value doesn't matter */
3322        inode = d_backing_inode(path.dentry);
3323finish_lookup:
3324        error = step_into(nd, &path, 0, inode, seq);
3325        if (unlikely(error))
3326                return error;
3327finish_open:
3328        /* Why this, you ask?  _Now_ we might have grown LOOKUP_JUMPED... */
3329        error = complete_walk(nd);
3330        if (error)
3331                return error;
3332        audit_inode(nd->name, nd->path.dentry, 0);
3333        if (open_flag & O_CREAT) {
3334                error = -EISDIR;
3335                if (d_is_dir(nd->path.dentry))
3336                        goto out;
3337                error = may_create_in_sticky(dir_mode, dir_uid,
3338                                             d_backing_inode(nd->path.dentry));
3339                if (unlikely(error))
3340                        goto out;
3341        }
3342        error = -ENOTDIR;
3343        if ((nd->flags & LOOKUP_DIRECTORY) && !d_can_lookup(nd->path.dentry))
3344                goto out;
3345        if (!d_is_reg(nd->path.dentry))
3346                will_truncate = false;
3347
3348        if (will_truncate) {
3349                error = mnt_want_write(nd->path.mnt);
3350                if (error)
3351                        goto out;
3352                got_write = true;
3353        }
3354finish_open_created:
3355        error = may_open(&nd->path, acc_mode, open_flag);
3356        if (error)
3357                goto out;
3358        BUG_ON(file->f_mode & FMODE_OPENED); /* once it's opened, it's opened */
3359        error = vfs_open(&nd->path, file);
3360        if (error)
3361                goto out;
3362opened:
3363        error = ima_file_check(file, op->acc_mode);
3364        if (!error && will_truncate)
3365                error = handle_truncate(file);
3366out:
3367        if (unlikely(error > 0)) {
3368                WARN_ON(1);
3369                error = -EINVAL;
3370        }
3371        if (got_write)
3372                mnt_drop_write(nd->path.mnt);
3373        return error;
3374}
3375
3376struct dentry *vfs_tmpfile(struct dentry *dentry, umode_t mode, int open_flag)
3377{
3378        struct dentry *child = NULL;
3379        struct inode *dir = dentry->d_inode;
3380        struct inode *inode;
3381        int error;
3382
3383        /* we want directory to be writable */
3384        error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
3385        if (error)
3386                goto out_err;
3387        error = -EOPNOTSUPP;
3388        if (!dir->i_op->tmpfile)
3389                goto out_err;
3390        error = -ENOMEM;
3391        child = d_alloc(dentry, &slash_name);
3392        if (unlikely(!child))
3393                goto out_err;
3394        error = dir->i_op->tmpfile(dir, child, mode);
3395        if (error)
3396                goto out_err;
3397        error = -ENOENT;
3398        inode = child->d_inode;
3399        if (unlikely(!inode))
3400                goto out_err;
3401        if (!(open_flag & O_EXCL)) {
3402                spin_lock(&inode->i_lock);
3403                inode->i_state |= I_LINKABLE;
3404                spin_unlock(&inode->i_lock);
3405        }
3406        ima_post_create_tmpfile(inode);
3407        return child;
3408
3409out_err:
3410        dput(child);
3411        return ERR_PTR(error);
3412}
3413EXPORT_SYMBOL(vfs_tmpfile);
3414
3415static int do_tmpfile(struct nameidata *nd, unsigned flags,
3416                const struct open_flags *op,
3417                struct file *file)
3418{
3419        struct dentry *child;
3420        struct path path;
3421        int error = path_lookupat(nd, flags | LOOKUP_DIRECTORY, &path);
3422        if (unlikely(error))
3423                return error;
3424        error = mnt_want_write(path.mnt);
3425        if (unlikely(error))
3426                goto out;
3427        child = vfs_tmpfile(path.dentry, op->mode, op->open_flag);
3428        error = PTR_ERR(child);
3429        if (IS_ERR(child))
3430                goto out2;
3431        dput(path.dentry);
3432        path.dentry = child;
3433        audit_inode(nd->name, child, 0);
3434        /* Don't check for other permissions, the inode was just created */
3435        error = may_open(&path, 0, op->open_flag);
3436        if (error)
3437                goto out2;
3438        file->f_path.mnt = path.mnt;
3439        error = finish_open(file, child, NULL);
3440out2:
3441        mnt_drop_write(path.mnt);
3442out:
3443        path_put(&path);
3444        return error;
3445}
3446
3447static int do_o_path(struct nameidata *nd, unsigned flags, struct file *file)
3448{
3449        struct path path;
3450        int error = path_lookupat(nd, flags, &path);
3451        if (!error) {
3452                audit_inode(nd->name, path.dentry, 0);
3453                error = vfs_open(&path, file);
3454                path_put(&path);
3455        }
3456        return error;
3457}
3458
3459static struct file *path_openat(struct nameidata *nd,
3460                        const struct open_flags *op, unsigned flags)
3461{
3462        struct file *file;
3463        int error;
3464
3465        file = alloc_empty_file(op->open_flag, current_cred());
3466        if (IS_ERR(file))
3467                return file;
3468
3469        if (unlikely(file->f_flags & __O_TMPFILE)) {
3470                error = do_tmpfile(nd, flags, op, file);
3471        } else if (unlikely(file->f_flags & O_PATH)) {
3472                error = do_o_path(nd, flags, file);
3473        } else {
3474                const char *s = path_init(nd, flags);
3475                while (!(error = link_path_walk(s, nd)) &&
3476                        (error = do_last(nd, file, op)) > 0) {
3477                        nd->flags &= ~(LOOKUP_OPEN|LOOKUP_CREATE|LOOKUP_EXCL);
3478                        s = trailing_symlink(nd);
3479                }
3480                terminate_walk(nd);
3481        }
3482        if (likely(!error)) {
3483                if (likely(file->f_mode & FMODE_OPENED))
3484                        return file;
3485                WARN_ON(1);
3486                error = -EINVAL;
3487        }
3488        fput(file);
3489        if (error == -EOPENSTALE) {
3490                if (flags & LOOKUP_RCU)
3491                        error = -ECHILD;
3492                else
3493                        error = -ESTALE;
3494        }
3495        return ERR_PTR(error);
3496}
3497
3498struct file *do_filp_open(int dfd, struct filename *pathname,
3499                const struct open_flags *op)
3500{
3501        struct nameidata nd;
3502        int flags = op->lookup_flags;
3503        struct file *filp;
3504
3505        set_nameidata(&nd, dfd, pathname);
3506        filp = path_openat(&nd, op, flags | LOOKUP_RCU);
3507        if (unlikely(filp == ERR_PTR(-ECHILD)))
3508                filp = path_openat(&nd, op, flags);
3509        if (unlikely(filp == ERR_PTR(-ESTALE)))
3510                filp = path_openat(&nd, op, flags | LOOKUP_REVAL);
3511        restore_nameidata();
3512        return filp;
3513}
3514
3515struct file *do_file_open_root(struct dentry *dentry, struct vfsmount *mnt,
3516                const char *name, const struct open_flags *op)
3517{
3518        struct nameidata nd;
3519        struct file *file;
3520        struct filename *filename;
3521        int flags = op->lookup_flags | LOOKUP_ROOT;
3522
3523        nd.root.mnt = mnt;
3524        nd.root.dentry = dentry;
3525
3526        if (d_is_symlink(dentry) && op->intent & LOOKUP_OPEN)
3527                return ERR_PTR(-ELOOP);
3528
3529        filename = getname_kernel(name);
3530        if (IS_ERR(filename))
3531                return ERR_CAST(filename);
3532
3533        set_nameidata(&nd, -1, filename);
3534        file = path_openat(&nd, op, flags | LOOKUP_RCU);
3535        if (unlikely(file == ERR_PTR(-ECHILD)))
3536                file = path_openat(&nd, op, flags);
3537        if (unlikely(file == ERR_PTR(-ESTALE)))
3538                file = path_openat(&nd, op, flags | LOOKUP_REVAL);
3539        restore_nameidata();
3540        putname(filename);
3541        return file;
3542}
3543
3544static struct dentry *filename_create(int dfd, struct filename *name,
3545                                struct path *path, unsigned int lookup_flags)
3546{
3547        struct dentry *dentry = ERR_PTR(-EEXIST);
3548        struct qstr last;
3549        int type;
3550        int err2;
3551        int error;
3552        bool is_dir = (lookup_flags & LOOKUP_DIRECTORY);
3553
3554        /*
3555         * Note that only LOOKUP_REVAL and LOOKUP_DIRECTORY matter here. Any
3556         * other flags passed in are ignored!
3557         */
3558        lookup_flags &= LOOKUP_REVAL;
3559
3560        name = filename_parentat(dfd, name, lookup_flags, path, &last, &type);
3561        if (IS_ERR(name))
3562                return ERR_CAST(name);
3563
3564        /*
3565         * Yucky last component or no last component at all?
3566         * (foo/., foo/.., /////)
3567         */
3568        if (unlikely(type != LAST_NORM))
3569                goto out;
3570
3571        /* don't fail immediately if it's r/o, at least try to report other errors */
3572        err2 = mnt_want_write(path->mnt);
3573        /*
3574         * Do the final lookup.
3575         */
3576        lookup_flags |= LOOKUP_CREATE | LOOKUP_EXCL;
3577        inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT);
3578        dentry = __lookup_hash(&last, path->dentry, lookup_flags);
3579        if (IS_ERR(dentry))
3580                goto unlock;
3581
3582        error = -EEXIST;
3583        if (d_is_positive(dentry))
3584                goto fail;
3585
3586        /*
3587         * Special case - lookup gave negative, but... we had foo/bar/
3588         * From the vfs_mknod() POV we just have a negative dentry -
3589         * all is fine. Let's be bastards - you had / on the end, you've
3590         * been asking for (non-existent) directory. -ENOENT for you.
3591         */
3592        if (unlikely(!is_dir && last.name[last.len])) {
3593                error = -ENOENT;
3594                goto fail;
3595        }
3596        if (unlikely(err2)) {
3597                error = err2;
3598                goto fail;
3599        }
3600        putname(name);
3601        return dentry;
3602fail:
3603        dput(dentry);
3604        dentry = ERR_PTR(error);
3605unlock:
3606        inode_unlock(path->dentry->d_inode);
3607        if (!err2)
3608                mnt_drop_write(path->mnt);
3609out:
3610        path_put(path);
3611        putname(name);
3612        return dentry;
3613}
3614
3615struct dentry *kern_path_create(int dfd, const char *pathname,
3616                                struct path *path, unsigned int lookup_flags)
3617{
3618        return filename_create(dfd, getname_kernel(pathname),
3619                                path, lookup_flags);
3620}
3621EXPORT_SYMBOL(kern_path_create);
3622
3623void done_path_create(struct path *path, struct dentry *dentry)
3624{
3625        dput(dentry);
3626        inode_unlock(path->dentry->d_inode);
3627        mnt_drop_write(path->mnt);
3628        path_put(path);
3629}
3630EXPORT_SYMBOL(done_path_create);
3631
3632inline struct dentry *user_path_create(int dfd, const char __user *pathname,
3633                                struct path *path, unsigned int lookup_flags)
3634{
3635        return filename_create(dfd, getname(pathname), path, lookup_flags);
3636}
3637EXPORT_SYMBOL(user_path_create);
3638
3639int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
3640{
3641        int error = may_create(dir, dentry);
3642
3643        if (error)
3644                return error;
3645
3646        if ((S_ISCHR(mode) || S_ISBLK(mode)) && !capable(CAP_MKNOD))
3647                return -EPERM;
3648
3649        if (!dir->i_op->mknod)
3650                return -EPERM;
3651
3652        error = devcgroup_inode_mknod(mode, dev);
3653        if (error)
3654                return error;
3655
3656        error = security_inode_mknod(dir, dentry, mode, dev);
3657        if (error)
3658                return error;
3659
3660        error = dir->i_op->mknod(dir, dentry, mode, dev);
3661        if (!error)
3662                fsnotify_create(dir, dentry);
3663        return error;
3664}
3665EXPORT_SYMBOL(vfs_mknod);
3666
3667static int may_mknod(umode_t mode)
3668{
3669        switch (mode & S_IFMT) {
3670        case S_IFREG:
3671        case S_IFCHR:
3672        case S_IFBLK:
3673        case S_IFIFO:
3674        case S_IFSOCK:
3675        case 0: /* zero mode translates to S_IFREG */
3676                return 0;
3677        case S_IFDIR:
3678                return -EPERM;
3679        default:
3680                return -EINVAL;
3681        }
3682}
3683
3684long do_mknodat(int dfd, const char __user *filename, umode_t mode,
3685                unsigned int dev)
3686{
3687        struct dentry *dentry;
3688        struct path path;
3689        int error;
3690        unsigned int lookup_flags = 0;
3691
3692        error = may_mknod(mode);
3693        if (error)
3694                return error;
3695retry:
3696        dentry = user_path_create(dfd, filename, &path, lookup_flags);
3697        if (IS_ERR(dentry))
3698                return PTR_ERR(dentry);
3699
3700        if (!IS_POSIXACL(path.dentry->d_inode))
3701                mode &= ~current_umask();
3702        error = security_path_mknod(&path, dentry, mode, dev);
3703        if (error)
3704                goto out;
3705        switch (mode & S_IFMT) {
3706                case 0: case S_IFREG:
3707                        error = vfs_create(path.dentry->d_inode,dentry,mode,true);
3708                        if (!error)
3709                                ima_post_path_mknod(dentry);
3710                        break;
3711                case S_IFCHR: case S_IFBLK:
3712                        error = vfs_mknod(path.dentry->d_inode,dentry,mode,
3713                                        new_decode_dev(dev));
3714                        break;
3715                case S_IFIFO: case S_IFSOCK:
3716                        error = vfs_mknod(path.dentry->d_inode,dentry,mode,0);
3717                        break;
3718        }
3719out:
3720        done_path_create(&path, dentry);
3721        if (retry_estale(error, lookup_flags)) {
3722                lookup_flags |= LOOKUP_REVAL;
3723                goto retry;
3724        }
3725        return error;
3726}
3727
3728SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, umode_t, mode,
3729                unsigned int, dev)
3730{
3731        return do_mknodat(dfd, filename, mode, dev);
3732}
3733
3734SYSCALL_DEFINE3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev)
3735{
3736        return do_mknodat(AT_FDCWD, filename, mode, dev);
3737}
3738
3739int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
3740{
3741        int error = may_create(dir, dentry);
3742        unsigned max_links = dir->i_sb->s_max_links;
3743
3744        if (error)
3745                return error;
3746
3747        if (!dir->i_op->mkdir)
3748                return -EPERM;
3749
3750        mode &= (S_IRWXUGO|S_ISVTX);
3751        error = security_inode_mkdir(dir, dentry, mode);
3752        if (error)
3753                return error;
3754
3755        if (max_links && dir->i_nlink >= max_links)
3756                return -EMLINK;
3757
3758        error = dir->i_op->mkdir(dir, dentry, mode);
3759        if (!error)
3760                fsnotify_mkdir(dir, dentry);
3761        return error;
3762}
3763EXPORT_SYMBOL(vfs_mkdir);
3764
3765long do_mkdirat(int dfd, const char __user *pathname, umode_t mode)
3766{
3767        struct dentry *dentry;
3768        struct path path;
3769        int error;
3770        unsigned int lookup_flags = LOOKUP_DIRECTORY;
3771
3772retry:
3773        dentry = user_path_create(dfd, pathname, &path, lookup_flags);
3774        if (IS_ERR(dentry))
3775                return PTR_ERR(dentry);
3776
3777        if (!IS_POSIXACL(path.dentry->d_inode))
3778                mode &= ~current_umask();
3779        error = security_path_mkdir(&path, dentry, mode);
3780        if (!error)
3781                error = vfs_mkdir(path.dentry->d_inode, dentry, mode);
3782        done_path_create(&path, dentry);
3783        if (retry_estale(error, lookup_flags)) {
3784                lookup_flags |= LOOKUP_REVAL;
3785                goto retry;
3786        }
3787        return error;
3788}
3789
3790SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode)
3791{
3792        return do_mkdirat(dfd, pathname, mode);
3793}
3794
3795SYSCALL_DEFINE2(mkdir, const char __user *, pathname, umode_t, mode)
3796{
3797        return do_mkdirat(AT_FDCWD, pathname, mode);
3798}
3799
3800int vfs_rmdir(struct inode *dir, struct dentry *dentry)
3801{
3802        int error = may_delete(dir, dentry, 1);
3803
3804        if (error)
3805                return error;
3806
3807        if (!dir->i_op->rmdir)
3808                return -EPERM;
3809
3810        dget(dentry);
3811        inode_lock(dentry->d_inode);
3812
3813        error = -EBUSY;
3814        if (is_local_mountpoint(dentry))
3815                goto out;
3816
3817        error = security_inode_rmdir(dir, dentry);
3818        if (error)
3819                goto out;
3820
3821        error = dir->i_op->rmdir(dir, dentry);
3822        if (error)
3823                goto out;
3824
3825        shrink_dcache_parent(dentry);
3826        dentry->d_inode->i_flags |= S_DEAD;
3827        dont_mount(dentry);
3828        detach_mounts(dentry);
3829        fsnotify_rmdir(dir, dentry);
3830
3831out:
3832        inode_unlock(dentry->d_inode);
3833        dput(dentry);
3834        if (!error)
3835                d_delete(dentry);
3836        return error;
3837}
3838EXPORT_SYMBOL(vfs_rmdir);
3839
3840long do_rmdir(int dfd, const char __user *pathname)
3841{
3842        int error = 0;
3843        struct filename *name;
3844        struct dentry *dentry;
3845        struct path path;
3846        struct qstr last;
3847        int type;
3848        unsigned int lookup_flags = 0;
3849retry:
3850        name = filename_parentat(dfd, getname(pathname), lookup_flags,
3851                                &path, &last, &type);
3852        if (IS_ERR(name))
3853                return PTR_ERR(name);
3854
3855        switch (type) {
3856        case LAST_DOTDOT:
3857                error = -ENOTEMPTY;
3858                goto exit1;
3859        case LAST_DOT:
3860                error = -EINVAL;
3861                goto exit1;
3862        case LAST_ROOT:
3863                error = -EBUSY;
3864                goto exit1;
3865        }
3866
3867        error = mnt_want_write(path.mnt);
3868        if (error)
3869                goto exit1;
3870
3871        inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT);
3872        dentry = __lookup_hash(&last, path.dentry, lookup_flags);
3873        error = PTR_ERR(dentry);
3874        if (IS_ERR(dentry))
3875                goto exit2;
3876        if (!dentry->d_inode) {
3877                error = -ENOENT;
3878                goto exit3;
3879        }
3880        error = security_path_rmdir(&path, dentry);
3881        if (error)
3882                goto exit3;
3883        error = vfs_rmdir(path.dentry->d_inode, dentry);
3884exit3:
3885        dput(dentry);
3886exit2:
3887        inode_unlock(path.dentry->d_inode);
3888        mnt_drop_write(path.mnt);
3889exit1:
3890        path_put(&path);
3891        putname(name);
3892        if (retry_estale(error, lookup_flags)) {
3893                lookup_flags |= LOOKUP_REVAL;
3894                goto retry;
3895        }
3896        return error;
3897}
3898
3899SYSCALL_DEFINE1(rmdir, const char __user *, pathname)
3900{
3901        return do_rmdir(AT_FDCWD, pathname);
3902}
3903
3904/**
3905 * vfs_unlink - unlink a filesystem object
3906 * @dir:        parent directory
3907 * @dentry:     victim
3908 * @delegated_inode: returns victim inode, if the inode is delegated.
3909 *
3910 * The caller must hold dir->i_mutex.
3911 *
3912 * If vfs_unlink discovers a delegation, it will return -EWOULDBLOCK and
3913 * return a reference to the inode in delegated_inode.  The caller
3914 * should then break the delegation on that inode and retry.  Because
3915 * breaking a delegation may take a long time, the caller should drop
3916 * dir->i_mutex before doing so.
3917 *
3918 * Alternatively, a caller may pass NULL for delegated_inode.  This may
3919 * be appropriate for callers that expect the underlying filesystem not
3920 * to be NFS exported.
3921 */
3922int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegated_inode)
3923{
3924        struct inode *target = dentry->d_inode;
3925        int error = may_delete(dir, dentry, 0);
3926
3927        if (error)
3928                return error;
3929
3930        if (!dir->i_op->unlink)
3931                return -EPERM;
3932
3933        inode_lock(target);
3934        if (is_local_mountpoint(dentry))
3935                error = -EBUSY;
3936        else {
3937                error = security_inode_unlink(dir, dentry);
3938                if (!error) {
3939                        error = try_break_deleg(target, delegated_inode);
3940                        if (error)
3941                                goto out;
3942                        error = dir->i_op->unlink(dir, dentry);
3943                        if (!error) {
3944                                dont_mount(dentry);
3945                                detach_mounts(dentry);
3946                                fsnotify_unlink(dir, dentry);
3947                        }
3948                }
3949        }
3950out:
3951        inode_unlock(target);
3952
3953        /* We don't d_delete() NFS sillyrenamed files--they still exist. */
3954        if (!error && !(dentry->d_flags & DCACHE_NFSFS_RENAMED)) {
3955                fsnotify_link_count(target);
3956                d_delete(dentry);
3957        }
3958
3959        return error;
3960}
3961EXPORT_SYMBOL(vfs_unlink);
3962
3963/*
3964 * Make sure that the actual truncation of the file will occur outside its
3965 * directory's i_mutex.  Truncate can take a long time if there is a lot of
3966 * writeout happening, and we don't want to prevent access to the directory
3967 * while waiting on the I/O.
3968 */
3969long do_unlinkat(int dfd, struct filename *name)
3970{
3971        int error;
3972        struct dentry *dentry;
3973        struct path path;
3974        struct qstr last;
3975        int type;
3976        struct inode *inode = NULL;
3977        struct inode *delegated_inode = NULL;
3978        unsigned int lookup_flags = 0;
3979retry:
3980        name = filename_parentat(dfd, name, lookup_flags, &path, &last, &type);
3981        if (IS_ERR(name))
3982                return PTR_ERR(name);
3983
3984        error = -EISDIR;
3985        if (type != LAST_NORM)
3986                goto exit1;
3987
3988        error = mnt_want_write(path.mnt);
3989        if (error)
3990                goto exit1;
3991retry_deleg:
3992        inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT);
3993        dentry = __lookup_hash(&last, path.dentry, lookup_flags);
3994        error = PTR_ERR(dentry);
3995        if (!IS_ERR(dentry)) {
3996                /* Why not before? Because we want correct error value */
3997                if (last.name[last.len])
3998                        goto slashes;
3999                inode = dentry->d_inode;
4000                if (d_is_negative(dentry))
4001                        goto slashes;
4002                ihold(inode);
4003                error = security_path_unlink(&path, dentry);
4004                if (error)
4005                        goto exit2;
4006                error = vfs_unlink(path.dentry->d_inode, dentry, &delegated_inode);
4007exit2:
4008                dput(dentry);
4009        }
4010        inode_unlock(path.dentry->d_inode);
4011        if (inode)
4012                iput(inode);    /* truncate the inode here */
4013        inode = NULL;
4014        if (delegated_inode) {
4015                error = break_deleg_wait(&delegated_inode);
4016                if (!error)
4017                        goto retry_deleg;
4018        }
4019        mnt_drop_write(path.mnt);
4020exit1:
4021        path_put(&path);
4022        if (retry_estale(error, lookup_flags)) {
4023                lookup_flags |= LOOKUP_REVAL;
4024                inode = NULL;
4025                goto retry;
4026        }
4027        putname(name);
4028        return error;
4029
4030slashes:
4031        if (d_is_negative(dentry))
4032                error = -ENOENT;
4033        else if (d_is_dir(dentry))
4034                error = -EISDIR;
4035        else
4036                error = -ENOTDIR;
4037        goto exit2;
4038}
4039
4040SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag)
4041{
4042        if ((flag & ~AT_REMOVEDIR) != 0)
4043                return -EINVAL;
4044
4045        if (flag & AT_REMOVEDIR)
4046                return do_rmdir(dfd, pathname);
4047
4048        return do_unlinkat(dfd, getname(pathname));
4049}
4050
4051SYSCALL_DEFINE1(unlink, const char __user *, pathname)
4052{
4053        return do_unlinkat(AT_FDCWD, getname(pathname));
4054}
4055
4056int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
4057{
4058        int error = may_create(dir, dentry);
4059
4060        if (error)
4061                return error;
4062
4063        if (!dir->i_op->symlink)
4064                return -EPERM;
4065
4066        error = security_inode_symlink(dir, dentry, oldname);
4067        if (error)
4068                return error;
4069
4070        error = dir->i_op->symlink(dir, dentry, oldname);
4071        if (!error)
4072                fsnotify_create(dir, dentry);
4073        return error;
4074}
4075EXPORT_SYMBOL(vfs_symlink);
4076
4077long do_symlinkat(const char __user *oldname, int newdfd,
4078                  const char __user *newname)
4079{
4080        int error;
4081        struct filename *from;
4082        struct dentry *dentry;
4083        struct path path;
4084        unsigned int lookup_flags = 0;
4085
4086        from = getname(oldname);
4087        if (IS_ERR(from))
4088                return PTR_ERR(from);
4089retry:
4090        dentry = user_path_create(newdfd, newname, &path, lookup_flags);
4091        error = PTR_ERR(dentry);
4092        if (IS_ERR(dentry))
4093                goto out_putname;
4094
4095        error = security_path_symlink(&path, dentry, from->name);
4096        if (!error)
4097                error = vfs_symlink(path.dentry->d_inode, dentry, from->name);
4098        done_path_create(&path, dentry);
4099        if (retry_estale(error, lookup_flags)) {
4100                lookup_flags |= LOOKUP_REVAL;
4101                goto retry;
4102        }
4103out_putname:
4104        putname(from);
4105        return error;
4106}
4107
4108SYSCALL_DEFINE3(symlinkat, const char __user *, oldname,
4109                int, newdfd, const char __user *, newname)
4110{
4111        return do_symlinkat(oldname, newdfd, newname);
4112}
4113
4114SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname)
4115{
4116        return do_symlinkat(oldname, AT_FDCWD, newname);
4117}
4118
4119/**
4120 * vfs_link - create a new link
4121 * @old_dentry: object to be linked
4122 * @dir:        new parent
4123 * @new_dentry: where to create the new link
4124 * @delegated_inode: returns inode needing a delegation break
4125 *
4126 * The caller must hold dir->i_mutex
4127 *
4128 * If vfs_link discovers a delegation on the to-be-linked file in need
4129 * of breaking, it will return -EWOULDBLOCK and return a reference to the
4130 * inode in delegated_inode.  The caller should then break the delegation
4131 * and retry.  Because breaking a delegation may take a long time, the
4132 * caller should drop the i_mutex before doing so.
4133 *
4134 * Alternatively, a caller may pass NULL for delegated_inode.  This may
4135 * be appropriate for callers that expect the underlying filesystem not
4136 * to be NFS exported.
4137 */
4138int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry, struct inode **delegated_inode)
4139{
4140        struct inode *inode = old_dentry->d_inode;
4141        unsigned max_links = dir->i_sb->s_max_links;
4142        int error;
4143
4144        if (!inode)
4145                return -ENOENT;
4146
4147        error = may_create(dir, new_dentry);
4148        if (error)
4149                return error;
4150
4151        if (dir->i_sb != inode->i_sb)
4152                return -EXDEV;
4153
4154        /*
4155         * A link to an append-only or immutable file cannot be created.
4156         */
4157        if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
4158                return -EPERM;
4159        /*
4160         * Updating the link count will likely cause i_uid and i_gid to
4161         * be writen back improperly if their true value is unknown to
4162         * the vfs.
4163         */
4164        if (HAS_UNMAPPED_ID(inode))
4165                return -EPERM;
4166        if (!dir->i_op->link)
4167                return -EPERM;
4168        if (S_ISDIR(inode->i_mode))
4169                return -EPERM;
4170
4171        error = security_inode_link(old_dentry, dir, new_dentry);
4172        if (error)
4173                return error;
4174
4175        inode_lock(inode);
4176        /* Make sure we don't allow creating hardlink to an unlinked file */
4177        if (inode->i_nlink == 0 && !(inode->i_state & I_LINKABLE))
4178                error =  -ENOENT;
4179        else if (max_links && inode->i_nlink >= max_links)
4180                error = -EMLINK;
4181        else {
4182                error = try_break_deleg(inode, delegated_inode);
4183                if (!error)
4184                        error = dir->i_op->link(old_dentry, dir, new_dentry);
4185        }
4186
4187        if (!error && (inode->i_state & I_LINKABLE)) {
4188                spin_lock(&inode->i_lock);
4189                inode->i_state &= ~I_LINKABLE;
4190                spin_unlock(&inode->i_lock);
4191        }
4192        inode_unlock(inode);
4193        if (!error)
4194                fsnotify_link(dir, inode, new_dentry);
4195        return error;
4196}
4197EXPORT_SYMBOL(vfs_link);
4198
4199/*
4200 * Hardlinks are often used in delicate situations.  We avoid
4201 * security-related surprises by not following symlinks on the
4202 * newname.  --KAB
4203 *
4204 * We don't follow them on the oldname either to be compatible
4205 * with linux 2.0, and to avoid hard-linking to directories
4206 * and other special files.  --ADM
4207 */
4208int do_linkat(int olddfd, const char __user *oldname, int newdfd,
4209              const char __user *newname, int flags)
4210{
4211        struct dentry *new_dentry;
4212        struct path old_path, new_path;
4213        struct inode *delegated_inode = NULL;
4214        int how = 0;
4215        int error;
4216
4217        if ((flags & ~(AT_SYMLINK_FOLLOW | AT_EMPTY_PATH)) != 0)
4218                return -EINVAL;
4219        /*
4220         * To use null names we require CAP_DAC_READ_SEARCH
4221         * This ensures that not everyone will be able to create
4222         * handlink using the passed filedescriptor.
4223         */
4224        if (flags & AT_EMPTY_PATH) {
4225                if (!capable(CAP_DAC_READ_SEARCH))
4226                        return -ENOENT;
4227                how = LOOKUP_EMPTY;
4228        }
4229
4230        if (flags & AT_SYMLINK_FOLLOW)
4231                how |= LOOKUP_FOLLOW;
4232retry:
4233        error = user_path_at(olddfd, oldname, how, &old_path);
4234        if (error)
4235                return error;
4236
4237        new_dentry = user_path_create(newdfd, newname, &new_path,
4238                                        (how & LOOKUP_REVAL));
4239        error = PTR_ERR(new_dentry);
4240        if (IS_ERR(new_dentry))
4241                goto out;
4242
4243        error = -EXDEV;
4244        if (old_path.mnt != new_path.mnt)
4245                goto out_dput;
4246        error = may_linkat(&old_path);
4247        if (unlikely(error))
4248                goto out_dput;
4249        error = security_path_link(old_path.dentry, &new_path, new_dentry);
4250        if (error)
4251                goto out_dput;
4252        error = vfs_link(old_path.dentry, new_path.dentry->d_inode, new_dentry, &delegated_inode);
4253out_dput:
4254        done_path_create(&new_path, new_dentry);
4255        if (delegated_inode) {
4256                error = break_deleg_wait(&delegated_inode);
4257                if (!error) {
4258                        path_put(&old_path);
4259                        goto retry;
4260                }
4261        }
4262        if (retry_estale(error, how)) {
4263                path_put(&old_path);
4264                how |= LOOKUP_REVAL;
4265                goto retry;
4266        }
4267out:
4268        path_put(&old_path);
4269
4270        return error;
4271}
4272
4273SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
4274                int, newdfd, const char __user *, newname, int, flags)
4275{
4276        return do_linkat(olddfd, oldname, newdfd, newname, flags);
4277}
4278
4279SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname)
4280{
4281        return do_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
4282}
4283
4284/**
4285 * vfs_rename - rename a filesystem object
4286 * @old_dir:    parent of source
4287 * @old_dentry: source
4288 * @new_dir:    parent of destination
4289 * @new_dentry: destination
4290 * @delegated_inode: returns an inode needing a delegation break
4291 * @flags:      rename flags
4292 *
4293 * The caller must hold multiple mutexes--see lock_rename()).
4294 *
4295 * If vfs_rename discovers a delegation in need of breaking at either
4296 * the source or destination, it will return -EWOULDBLOCK and return a
4297 * reference to the inode in delegated_inode.  The caller should then
4298 * break the delegation and retry.  Because breaking a delegation may
4299 * take a long time, the caller should drop all locks before doing
4300 * so.
4301 *
4302 * Alternatively, a caller may pass NULL for delegated_inode.  This may
4303 * be appropriate for callers that expect the underlying filesystem not
4304 * to be NFS exported.
4305 *
4306 * The worst of all namespace operations - renaming directory. "Perverted"
4307 * doesn't even start to describe it. Somebody in UCB had a heck of a trip...
4308 * Problems:
4309 *
4310 *      a) we can get into loop creation.
4311 *      b) race potential - two innocent renames can create a loop together.
4312 *         That's where 4.4 screws up. Current fix: serialization on
4313 *         sb->s_vfs_rename_mutex. We might be more accurate, but that's another
4314 *         story.
4315 *      c) we have to lock _four_ objects - parents and victim (if it exists),
4316 *         and source (if it is not a directory).
4317 *         And that - after we got ->i_mutex on parents (until then we don't know
4318 *         whether the target exists).  Solution: try to be smart with locking
4319 *         order for inodes.  We rely on the fact that tree topology may change
4320 *         only under ->s_vfs_rename_mutex _and_ that parent of the object we
4321 *         move will be locked.  Thus we can rank directories by the tree
4322 *         (ancestors first) and rank all non-directories after them.
4323 *         That works since everybody except rename does "lock parent, lookup,
4324 *         lock child" and rename is under ->s_vfs_rename_mutex.
4325 *         HOWEVER, it relies on the assumption that any object with ->lookup()
4326 *         has no more than 1 dentry.  If "hybrid" objects will ever appear,
4327 *         we'd better make sure that there's no link(2) for them.
4328 *      d) conversion from fhandle to dentry may come in the wrong moment - when
4329 *         we are removing the target. Solution: we will have to grab ->i_mutex
4330 *         in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on
4331 *         ->i_mutex on parents, which works but leads to some truly excessive
4332 *         locking].
4333 */
4334int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
4335               struct inode *new_dir, struct dentry *new_dentry,
4336               struct inode **delegated_inode, unsigned int flags)
4337{
4338        int error;
4339        bool is_dir = d_is_dir(old_dentry);
4340        struct inode *source = old_dentry->d_inode;
4341        struct inode *target = new_dentry->d_inode;
4342        bool new_is_dir = false;
4343        unsigned max_links = new_dir->i_sb->s_max_links;
4344        struct name_snapshot old_name;
4345
4346        if (source == target)
4347                return 0;
4348
4349        error = may_delete(old_dir, old_dentry, is_dir);
4350        if (error)
4351                return error;
4352
4353        if (!target) {
4354                error = may_create(new_dir, new_dentry);
4355        } else {
4356                new_is_dir = d_is_dir(new_dentry);
4357
4358                if (!(flags & RENAME_EXCHANGE))
4359                        error = may_delete(new_dir, new_dentry, is_dir);
4360                else
4361                        error = may_delete(new_dir, new_dentry, new_is_dir);
4362        }
4363        if (error)
4364                return error;
4365
4366        if (!old_dir->i_op->rename)
4367                return -EPERM;
4368
4369        /*
4370         * If we are going to change the parent - check write permissions,
4371         * we'll need to flip '..'.
4372         */
4373        if (new_dir != old_dir) {
4374                if (is_dir) {
4375                        error = inode_permission(source, MAY_WRITE);
4376                        if (error)
4377                                return error;
4378                }
4379                if ((flags & RENAME_EXCHANGE) && new_is_dir) {
4380                        error = inode_permission(target, MAY_WRITE);
4381                        if (error)
4382                                return error;
4383                }
4384        }
4385
4386        error = security_inode_rename(old_dir, old_dentry, new_dir, new_dentry,
4387                                      flags);
4388        if (error)
4389                return error;
4390
4391        take_dentry_name_snapshot(&old_name, old_dentry);
4392        dget(new_dentry);
4393        if (!is_dir || (flags & RENAME_EXCHANGE))
4394                lock_two_nondirectories(source, target);
4395        else if (target)
4396                inode_lock(target);
4397
4398        error = -EBUSY;
4399        if (is_local_mountpoint(old_dentry) || is_local_mountpoint(new_dentry))
4400                goto out;
4401
4402        if (max_links && new_dir != old_dir) {
4403                error = -EMLINK;
4404                if (is_dir && !new_is_dir && new_dir->i_nlink >= max_links)
4405                        goto out;
4406                if ((flags & RENAME_EXCHANGE) && !is_dir && new_is_dir &&
4407                    old_dir->i_nlink >= max_links)
4408                        goto out;
4409        }
4410        if (!is_dir) {
4411                error = try_break_deleg(source, delegated_inode);
4412                if (error)
4413                        goto out;
4414        }
4415        if (target && !new_is_dir) {
4416                error = try_break_deleg(target, delegated_inode);
4417                if (error)
4418                        goto out;
4419        }
4420        error = old_dir->i_op->rename(old_dir, old_dentry,
4421                                       new_dir, new_dentry, flags);
4422        if (error)
4423                goto out;
4424
4425        if (!(flags & RENAME_EXCHANGE) && target) {
4426                if (is_dir) {
4427                        shrink_dcache_parent(new_dentry);
4428                        target->i_flags |= S_DEAD;
4429                }
4430                dont_mount(new_dentry);
4431                detach_mounts(new_dentry);
4432        }
4433        if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE)) {
4434                if (!(flags & RENAME_EXCHANGE))
4435                        d_move(old_dentry, new_dentry);
4436                else
4437                        d_exchange(old_dentry, new_dentry);
4438        }
4439out:
4440        if (!is_dir || (flags & RENAME_EXCHANGE))
4441                unlock_two_nondirectories(source, target);
4442        else if (target)
4443                inode_unlock(target);
4444        dput(new_dentry);
4445        if (!error) {
4446                fsnotify_move(old_dir, new_dir, &old_name.name, is_dir,
4447                              !(flags & RENAME_EXCHANGE) ? target : NULL, old_dentry);
4448                if (flags & RENAME_EXCHANGE) {
4449                        fsnotify_move(new_dir, old_dir, &old_dentry->d_name,
4450                                      new_is_dir, NULL, new_dentry);
4451                }
4452        }
4453        release_dentry_name_snapshot(&old_name);
4454
4455        return error;
4456}
4457EXPORT_SYMBOL(vfs_rename);
4458
4459static int do_renameat2(int olddfd, const char __user *oldname, int newdfd,
4460                        const char __user *newname, unsigned int flags)
4461{
4462        struct dentry *old_dentry, *new_dentry;
4463        struct dentry *trap;
4464        struct path old_path, new_path;
4465        struct qstr old_last, new_last;
4466        int old_type, new_type;
4467        struct inode *delegated_inode = NULL;
4468        struct filename *from;
4469        struct filename *to;
4470        unsigned int lookup_flags = 0, target_flags = LOOKUP_RENAME_TARGET;
4471        bool should_retry = false;
4472        int error;
4473
4474        if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE | RENAME_WHITEOUT))
4475                return -EINVAL;
4476
4477        if ((flags & (RENAME_NOREPLACE | RENAME_WHITEOUT)) &&
4478            (flags & RENAME_EXCHANGE))
4479                return -EINVAL;
4480
4481        if ((flags & RENAME_WHITEOUT) && !capable(CAP_MKNOD))
4482                return -EPERM;
4483
4484        if (flags & RENAME_EXCHANGE)
4485                target_flags = 0;
4486
4487retry:
4488        from = filename_parentat(olddfd, getname(oldname), lookup_flags,
4489                                &old_path, &old_last, &old_type);
4490        if (IS_ERR(from)) {
4491                error = PTR_ERR(from);
4492                goto exit;
4493        }
4494
4495        to = filename_parentat(newdfd, getname(newname), lookup_flags,
4496                                &new_path, &new_last, &new_type);
4497        if (IS_ERR(to)) {
4498                error = PTR_ERR(to);
4499                goto exit1;
4500        }
4501
4502        error = -EXDEV;
4503        if (old_path.mnt != new_path.mnt)
4504                goto exit2;
4505
4506        error = -EBUSY;
4507        if (old_type != LAST_NORM)
4508                goto exit2;
4509
4510        if (flags & RENAME_NOREPLACE)
4511                error = -EEXIST;
4512        if (new_type != LAST_NORM)
4513                goto exit2;
4514
4515        error = mnt_want_write(old_path.mnt);
4516        if (error)
4517                goto exit2;
4518
4519retry_deleg:
4520        trap = lock_rename(new_path.dentry, old_path.dentry);
4521
4522        old_dentry = __lookup_hash(&old_last, old_path.dentry, lookup_flags);
4523        error = PTR_ERR(old_dentry);
4524        if (IS_ERR(old_dentry))
4525                goto exit3;
4526        /* source must exist */
4527        error = -ENOENT;
4528        if (d_is_negative(old_dentry))
4529                goto exit4;
4530        new_dentry = __lookup_hash(&new_last, new_path.dentry, lookup_flags | target_flags);
4531        error = PTR_ERR(new_dentry);
4532        if (IS_ERR(new_dentry))
4533                goto exit4;
4534        error = -EEXIST;
4535        if ((flags & RENAME_NOREPLACE) && d_is_positive(new_dentry))
4536                goto exit5;
4537        if (flags & RENAME_EXCHANGE) {
4538                error = -ENOENT;
4539                if (d_is_negative(new_dentry))
4540                        goto exit5;
4541
4542                if (!d_is_dir(new_dentry)) {
4543                        error = -ENOTDIR;
4544                        if (new_last.name[new_last.len])
4545                                goto exit5;
4546                }
4547        }
4548        /* unless the source is a directory trailing slashes give -ENOTDIR */
4549        if (!d_is_dir(old_dentry)) {
4550                error = -ENOTDIR;
4551                if (old_last.name[old_last.len])
4552                        goto exit5;
4553                if (!(flags & RENAME_EXCHANGE) && new_last.name[new_last.len])
4554                        goto exit5;
4555        }
4556        /* source should not be ancestor of target */
4557        error = -EINVAL;
4558        if (old_dentry == trap)
4559                goto exit5;
4560        /* target should not be an ancestor of source */
4561        if (!(flags & RENAME_EXCHANGE))
4562                error = -ENOTEMPTY;
4563        if (new_dentry == trap)
4564                goto exit5;
4565
4566        error = security_path_rename(&old_path, old_dentry,
4567                                     &new_path, new_dentry, flags);
4568        if (error)
4569                goto exit5;
4570        error = vfs_rename(old_path.dentry->d_inode, old_dentry,
4571                           new_path.dentry->d_inode, new_dentry,
4572                           &delegated_inode, flags);
4573exit5:
4574        dput(new_dentry);
4575exit4:
4576        dput(old_dentry);
4577exit3:
4578        unlock_rename(new_path.dentry, old_path.dentry);
4579        if (delegated_inode) {
4580                error = break_deleg_wait(&delegated_inode);
4581                if (!error)
4582                        goto retry_deleg;
4583        }
4584        mnt_drop_write(old_path.mnt);
4585exit2:
4586        if (retry_estale(error, lookup_flags))
4587                should_retry = true;
4588        path_put(&new_path);
4589        putname(to);
4590exit1:
4591        path_put(&old_path);
4592        putname(from);
4593        if (should_retry) {
4594                should_retry = false;
4595                lookup_flags |= LOOKUP_REVAL;
4596                goto retry;
4597        }
4598exit:
4599        return error;
4600}
4601
4602SYSCALL_DEFINE5(renameat2, int, olddfd, const char __user *, oldname,
4603                int, newdfd, const char __user *, newname, unsigned int, flags)
4604{
4605        return do_renameat2(olddfd, oldname, newdfd, newname, flags);
4606}
4607
4608SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname,
4609                int, newdfd, const char __user *, newname)
4610{
4611        return do_renameat2(olddfd, oldname, newdfd, newname, 0);
4612}
4613
4614SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname)
4615{
4616        return do_renameat2(AT_FDCWD, oldname, AT_FDCWD, newname, 0);
4617}
4618
4619int vfs_whiteout(struct inode *dir, struct dentry *dentry)
4620{
4621        int error = may_create(dir, dentry);
4622        if (error)
4623                return error;
4624
4625        if (!dir->i_op->mknod)
4626                return -EPERM;
4627
4628        return dir->i_op->mknod(dir, dentry,
4629                                S_IFCHR | WHITEOUT_MODE, WHITEOUT_DEV);
4630}
4631EXPORT_SYMBOL(vfs_whiteout);
4632
4633int readlink_copy(char __user *buffer, int buflen, const char *link)
4634{
4635        int len = PTR_ERR(link);
4636        if (IS_ERR(link))
4637                goto out;
4638
4639        len = strlen(link);
4640        if (len > (unsigned) buflen)
4641                len = buflen;
4642        if (copy_to_user(buffer, link, len))
4643                len = -EFAULT;
4644out:
4645        return len;
4646}
4647
4648/**
4649 * vfs_readlink - copy symlink body into userspace buffer
4650 * @dentry: dentry on which to get symbolic link
4651 * @buffer: user memory pointer
4652 * @buflen: size of buffer
4653 *
4654 * Does not touch atime.  That's up to the caller if necessary
4655 *
4656 * Does not call security hook.
4657 */
4658int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen)
4659{
4660        struct inode *inode = d_inode(dentry);
4661        DEFINE_DELAYED_CALL(done);
4662        const char *link;
4663        int res;
4664
4665        if (unlikely(!(inode->i_opflags & IOP_DEFAULT_READLINK))) {
4666                if (unlikely(inode->i_op->readlink))
4667                        return inode->i_op->readlink(dentry, buffer, buflen);
4668
4669                if (!d_is_symlink(dentry))
4670                        return -EINVAL;
4671
4672                spin_lock(&inode->i_lock);
4673                inode->i_opflags |= IOP_DEFAULT_READLINK;
4674                spin_unlock(&inode->i_lock);
4675        }
4676
4677        link = READ_ONCE(inode->i_link);
4678        if (!link) {
4679                link = inode->i_op->get_link(dentry, inode, &done);
4680                if (IS_ERR(link))
4681                        return PTR_ERR(link);
4682        }
4683        res = readlink_copy(buffer, buflen, link);
4684        do_delayed_call(&done);
4685        return res;
4686}
4687EXPORT_SYMBOL(vfs_readlink);
4688
4689/**
4690 * vfs_get_link - get symlink body
4691 * @dentry: dentry on which to get symbolic link
4692 * @done: caller needs to free returned data with this
4693 *
4694 * Calls security hook and i_op->get_link() on the supplied inode.
4695 *
4696 * It does not touch atime.  That's up to the caller if necessary.
4697 *
4698 * Does not work on "special" symlinks like /proc/$$/fd/N
4699 */
4700const char *vfs_get_link(struct dentry *dentry, struct delayed_call *done)
4701{
4702        const char *res = ERR_PTR(-EINVAL);
4703        struct inode *inode = d_inode(dentry);
4704
4705        if (d_is_symlink(dentry)) {
4706                res = ERR_PTR(security_inode_readlink(dentry));
4707                if (!res)
4708                        res = inode->i_op->get_link(dentry, inode, done);
4709        }
4710        return res;
4711}
4712EXPORT_SYMBOL(vfs_get_link);
4713
4714/* get the link contents into pagecache */
4715const char *page_get_link(struct dentry *dentry, struct inode *inode,
4716                          struct delayed_call *callback)
4717{
4718        char *kaddr;
4719        struct page *page;
4720        struct address_space *mapping = inode->i_mapping;
4721
4722        if (!dentry) {
4723                page = find_get_page(mapping, 0);
4724                if (!page)
4725                        return ERR_PTR(-ECHILD);
4726                if (!PageUptodate(page)) {
4727                        put_page(page);
4728                        return ERR_PTR(-ECHILD);
4729                }
4730        } else {
4731                page = read_mapping_page(mapping, 0, NULL);
4732                if (IS_ERR(page))
4733                        return (char*)page;
4734        }
4735        set_delayed_call(callback, page_put_link, page);
4736        BUG_ON(mapping_gfp_mask(mapping) & __GFP_HIGHMEM);
4737        kaddr = page_address(page);
4738        nd_terminate_link(kaddr, inode->i_size, PAGE_SIZE - 1);
4739        return kaddr;
4740}
4741
4742EXPORT_SYMBOL(page_get_link);
4743
4744void page_put_link(void *arg)
4745{
4746        put_page(arg);
4747}
4748EXPORT_SYMBOL(page_put_link);
4749
4750int page_readlink(struct dentry *dentry, char __user *buffer, int buflen)
4751{
4752        DEFINE_DELAYED_CALL(done);
4753        int res = readlink_copy(buffer, buflen,
4754                                page_get_link(dentry, d_inode(dentry),
4755                                              &done));
4756        do_delayed_call(&done);
4757        return res;
4758}
4759EXPORT_SYMBOL(page_readlink);
4760
4761/*
4762 * The nofs argument instructs pagecache_write_begin to pass AOP_FLAG_NOFS
4763 */
4764int __page_symlink(struct inode *inode, const char *symname, int len, int nofs)
4765{
4766        struct address_space *mapping = inode->i_mapping;
4767        struct page *page;
4768        void *fsdata;
4769        int err;
4770        unsigned int flags = 0;
4771        if (nofs)
4772                flags |= AOP_FLAG_NOFS;
4773
4774retry:
4775        err = pagecache_write_begin(NULL, mapping, 0, len-1,
4776                                flags, &page, &fsdata);
4777        if (err)
4778                goto fail;
4779
4780        memcpy(page_address(page), symname, len-1);
4781
4782        err = pagecache_write_end(NULL, mapping, 0, len-1, len-1,
4783                                                        page, fsdata);
4784        if (err < 0)
4785                goto fail;
4786        if (err < len-1)
4787                goto retry;
4788
4789        mark_inode_dirty(inode);
4790        return 0;
4791fail:
4792        return err;
4793}
4794EXPORT_SYMBOL(__page_symlink);
4795
4796int page_symlink(struct inode *inode, const char *symname, int len)
4797{
4798        return __page_symlink(inode, symname, len,
4799                        !mapping_gfp_constraint(inode->i_mapping, __GFP_FS));
4800}
4801EXPORT_SYMBOL(page_symlink);
4802
4803const struct inode_operations page_symlink_inode_operations = {
4804        .get_link       = page_get_link,
4805};
4806EXPORT_SYMBOL(page_symlink_inode_operations);
4807