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