Linux Audio

Check our new training course

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