Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.33-rc2 2943 lines 72 kB view raw
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/module.h> 19#include <linux/slab.h> 20#include <linux/fs.h> 21#include <linux/namei.h> 22#include <linux/quotaops.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 <asm/uaccess.h> 37 38#include "internal.h" 39 40/* [Feb-1997 T. Schoebel-Theuer] 41 * Fundamental changes in the pathname lookup mechanisms (namei) 42 * were necessary because of omirr. The reason is that omirr needs 43 * to know the _real_ pathname, not the user-supplied one, in case 44 * of symlinks (and also when transname replacements occur). 45 * 46 * The new code replaces the old recursive symlink resolution with 47 * an iterative one (in case of non-nested symlink chains). It does 48 * this with calls to <fs>_follow_link(). 49 * As a side effect, dir_namei(), _namei() and follow_link() are now 50 * replaced with a single function lookup_dentry() that can handle all 51 * the special cases of the former code. 52 * 53 * With the new dcache, the pathname is stored at each inode, at least as 54 * long as the refcount of the inode is positive. As a side effect, the 55 * size of the dcache depends on the inode cache and thus is dynamic. 56 * 57 * [29-Apr-1998 C. Scott Ananian] Updated above description of symlink 58 * resolution to correspond with current state of the code. 59 * 60 * Note that the symlink resolution is not *completely* iterative. 61 * There is still a significant amount of tail- and mid- recursion in 62 * the algorithm. Also, note that <fs>_readlink() is not used in 63 * lookup_dentry(): lookup_dentry() on the result of <fs>_readlink() 64 * may return different results than <fs>_follow_link(). Many virtual 65 * filesystems (including /proc) exhibit this behavior. 66 */ 67 68/* [24-Feb-97 T. Schoebel-Theuer] Side effects caused by new implementation: 69 * New symlink semantics: when open() is called with flags O_CREAT | O_EXCL 70 * and the name already exists in form of a symlink, try to create the new 71 * name indicated by the symlink. The old code always complained that the 72 * name already exists, due to not following the symlink even if its target 73 * is nonexistent. The new semantics affects also mknod() and link() when 74 * the name is a symlink pointing to a non-existant name. 75 * 76 * I don't know which semantics is the right one, since I have no access 77 * to standards. But I found by trial that HP-UX 9.0 has the full "new" 78 * semantics implemented, while SunOS 4.1.1 and Solaris (SunOS 5.4) have the 79 * "old" one. Personally, I think the new semantics is much more logical. 80 * Note that "ln old new" where "new" is a symlink pointing to a non-existing 81 * file does succeed in both HP-UX and SunOs, but not in Solaris 82 * and in the old Linux semantics. 83 */ 84 85/* [16-Dec-97 Kevin Buhr] For security reasons, we change some symlink 86 * semantics. See the comments in "open_namei" and "do_link" below. 87 * 88 * [10-Sep-98 Alan Modra] Another symlink change. 89 */ 90 91/* [Feb-Apr 2000 AV] Complete rewrite. Rules for symlinks: 92 * inside the path - always follow. 93 * in the last component in creation/removal/renaming - never follow. 94 * if LOOKUP_FOLLOW passed - follow. 95 * if the pathname has trailing slashes - follow. 96 * otherwise - don't follow. 97 * (applied in that order). 98 * 99 * [Jun 2000 AV] Inconsistent behaviour of open() in case if flags==O_CREAT 100 * restored for 2.4. This is the last surviving part of old 4.2BSD bug. 101 * During the 2.4 we need to fix the userland stuff depending on it - 102 * hopefully we will be able to get rid of that wart in 2.5. So far only 103 * XEmacs seems to be relying on it... 104 */ 105/* 106 * [Sep 2001 AV] Single-semaphore locking scheme (kudos to David Holland) 107 * implemented. Let's see if raised priority of ->s_vfs_rename_mutex gives 108 * any extra contention... 109 */ 110 111/* In order to reduce some races, while at the same time doing additional 112 * checking and hopefully speeding things up, we copy filenames to the 113 * kernel data space before using them.. 114 * 115 * POSIX.1 2.4: an empty pathname is invalid (ENOENT). 116 * PATH_MAX includes the nul terminator --RR. 117 */ 118static int do_getname(const char __user *filename, char *page) 119{ 120 int retval; 121 unsigned long len = PATH_MAX; 122 123 if (!segment_eq(get_fs(), KERNEL_DS)) { 124 if ((unsigned long) filename >= TASK_SIZE) 125 return -EFAULT; 126 if (TASK_SIZE - (unsigned long) filename < PATH_MAX) 127 len = TASK_SIZE - (unsigned long) filename; 128 } 129 130 retval = strncpy_from_user(page, filename, len); 131 if (retval > 0) { 132 if (retval < len) 133 return 0; 134 return -ENAMETOOLONG; 135 } else if (!retval) 136 retval = -ENOENT; 137 return retval; 138} 139 140char * getname(const char __user * filename) 141{ 142 char *tmp, *result; 143 144 result = ERR_PTR(-ENOMEM); 145 tmp = __getname(); 146 if (tmp) { 147 int retval = do_getname(filename, tmp); 148 149 result = tmp; 150 if (retval < 0) { 151 __putname(tmp); 152 result = ERR_PTR(retval); 153 } 154 } 155 audit_getname(result); 156 return result; 157} 158 159#ifdef CONFIG_AUDITSYSCALL 160void putname(const char *name) 161{ 162 if (unlikely(!audit_dummy_context())) 163 audit_putname(name); 164 else 165 __putname(name); 166} 167EXPORT_SYMBOL(putname); 168#endif 169 170/* 171 * This does basic POSIX ACL permission checking 172 */ 173static int acl_permission_check(struct inode *inode, int mask, 174 int (*check_acl)(struct inode *inode, int mask)) 175{ 176 umode_t mode = inode->i_mode; 177 178 mask &= MAY_READ | MAY_WRITE | MAY_EXEC; 179 180 if (current_fsuid() == inode->i_uid) 181 mode >>= 6; 182 else { 183 if (IS_POSIXACL(inode) && (mode & S_IRWXG) && check_acl) { 184 int error = check_acl(inode, mask); 185 if (error != -EAGAIN) 186 return error; 187 } 188 189 if (in_group_p(inode->i_gid)) 190 mode >>= 3; 191 } 192 193 /* 194 * If the DACs are ok we don't need any capability check. 195 */ 196 if ((mask & ~mode) == 0) 197 return 0; 198 return -EACCES; 199} 200 201/** 202 * generic_permission - check for access rights on a Posix-like filesystem 203 * @inode: inode to check access rights for 204 * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC) 205 * @check_acl: optional callback to check for Posix ACLs 206 * 207 * Used to check for read/write/execute permissions on a file. 208 * We use "fsuid" for this, letting us set arbitrary permissions 209 * for filesystem access without changing the "normal" uids which 210 * are used for other things.. 211 */ 212int generic_permission(struct inode *inode, int mask, 213 int (*check_acl)(struct inode *inode, int mask)) 214{ 215 int ret; 216 217 /* 218 * Do the basic POSIX ACL permission checks. 219 */ 220 ret = acl_permission_check(inode, mask, check_acl); 221 if (ret != -EACCES) 222 return ret; 223 224 /* 225 * Read/write DACs are always overridable. 226 * Executable DACs are overridable if at least one exec bit is set. 227 */ 228 if (!(mask & MAY_EXEC) || execute_ok(inode)) 229 if (capable(CAP_DAC_OVERRIDE)) 230 return 0; 231 232 /* 233 * Searching includes executable on directories, else just read. 234 */ 235 if (mask == MAY_READ || (S_ISDIR(inode->i_mode) && !(mask & MAY_WRITE))) 236 if (capable(CAP_DAC_READ_SEARCH)) 237 return 0; 238 239 return -EACCES; 240} 241 242/** 243 * inode_permission - check for access rights to a given inode 244 * @inode: inode to check permission on 245 * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC) 246 * 247 * Used to check for read/write/execute permissions on an inode. 248 * We use "fsuid" for this, letting us set arbitrary permissions 249 * for filesystem access without changing the "normal" uids which 250 * are used for other things. 251 */ 252int inode_permission(struct inode *inode, int mask) 253{ 254 int retval; 255 256 if (mask & MAY_WRITE) { 257 umode_t mode = inode->i_mode; 258 259 /* 260 * Nobody gets write access to a read-only fs. 261 */ 262 if (IS_RDONLY(inode) && 263 (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) 264 return -EROFS; 265 266 /* 267 * Nobody gets write access to an immutable file. 268 */ 269 if (IS_IMMUTABLE(inode)) 270 return -EACCES; 271 } 272 273 if (inode->i_op->permission) 274 retval = inode->i_op->permission(inode, mask); 275 else 276 retval = generic_permission(inode, mask, inode->i_op->check_acl); 277 278 if (retval) 279 return retval; 280 281 retval = devcgroup_inode_permission(inode, mask); 282 if (retval) 283 return retval; 284 285 return security_inode_permission(inode, 286 mask & (MAY_READ|MAY_WRITE|MAY_EXEC|MAY_APPEND)); 287} 288 289/** 290 * file_permission - check for additional access rights to a given file 291 * @file: file to check access rights for 292 * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC) 293 * 294 * Used to check for read/write/execute permissions on an already opened 295 * file. 296 * 297 * Note: 298 * Do not use this function in new code. All access checks should 299 * be done using inode_permission(). 300 */ 301int file_permission(struct file *file, int mask) 302{ 303 return inode_permission(file->f_path.dentry->d_inode, mask); 304} 305 306/* 307 * get_write_access() gets write permission for a file. 308 * put_write_access() releases this write permission. 309 * This is used for regular files. 310 * We cannot support write (and maybe mmap read-write shared) accesses and 311 * MAP_DENYWRITE mmappings simultaneously. The i_writecount field of an inode 312 * can have the following values: 313 * 0: no writers, no VM_DENYWRITE mappings 314 * < 0: (-i_writecount) vm_area_structs with VM_DENYWRITE set exist 315 * > 0: (i_writecount) users are writing to the file. 316 * 317 * Normally we operate on that counter with atomic_{inc,dec} and it's safe 318 * except for the cases where we don't hold i_writecount yet. Then we need to 319 * use {get,deny}_write_access() - these functions check the sign and refuse 320 * to do the change if sign is wrong. Exclusion between them is provided by 321 * the inode->i_lock spinlock. 322 */ 323 324int get_write_access(struct inode * inode) 325{ 326 spin_lock(&inode->i_lock); 327 if (atomic_read(&inode->i_writecount) < 0) { 328 spin_unlock(&inode->i_lock); 329 return -ETXTBSY; 330 } 331 atomic_inc(&inode->i_writecount); 332 spin_unlock(&inode->i_lock); 333 334 return 0; 335} 336 337int deny_write_access(struct file * file) 338{ 339 struct inode *inode = file->f_path.dentry->d_inode; 340 341 spin_lock(&inode->i_lock); 342 if (atomic_read(&inode->i_writecount) > 0) { 343 spin_unlock(&inode->i_lock); 344 return -ETXTBSY; 345 } 346 atomic_dec(&inode->i_writecount); 347 spin_unlock(&inode->i_lock); 348 349 return 0; 350} 351 352/** 353 * path_get - get a reference to a path 354 * @path: path to get the reference to 355 * 356 * Given a path increment the reference count to the dentry and the vfsmount. 357 */ 358void path_get(struct path *path) 359{ 360 mntget(path->mnt); 361 dget(path->dentry); 362} 363EXPORT_SYMBOL(path_get); 364 365/** 366 * path_put - put a reference to a path 367 * @path: path to put the reference to 368 * 369 * Given a path decrement the reference count to the dentry and the vfsmount. 370 */ 371void path_put(struct path *path) 372{ 373 dput(path->dentry); 374 mntput(path->mnt); 375} 376EXPORT_SYMBOL(path_put); 377 378/** 379 * release_open_intent - free up open intent resources 380 * @nd: pointer to nameidata 381 */ 382void release_open_intent(struct nameidata *nd) 383{ 384 if (nd->intent.open.file->f_path.dentry == NULL) 385 put_filp(nd->intent.open.file); 386 else 387 fput(nd->intent.open.file); 388} 389 390static inline struct dentry * 391do_revalidate(struct dentry *dentry, struct nameidata *nd) 392{ 393 int status = dentry->d_op->d_revalidate(dentry, nd); 394 if (unlikely(status <= 0)) { 395 /* 396 * The dentry failed validation. 397 * If d_revalidate returned 0 attempt to invalidate 398 * the dentry otherwise d_revalidate is asking us 399 * to return a fail status. 400 */ 401 if (!status) { 402 if (!d_invalidate(dentry)) { 403 dput(dentry); 404 dentry = NULL; 405 } 406 } else { 407 dput(dentry); 408 dentry = ERR_PTR(status); 409 } 410 } 411 return dentry; 412} 413 414/* 415 * force_reval_path - force revalidation of a dentry 416 * 417 * In some situations the path walking code will trust dentries without 418 * revalidating them. This causes problems for filesystems that depend on 419 * d_revalidate to handle file opens (e.g. NFSv4). When FS_REVAL_DOT is set 420 * (which indicates that it's possible for the dentry to go stale), force 421 * a d_revalidate call before proceeding. 422 * 423 * Returns 0 if the revalidation was successful. If the revalidation fails, 424 * either return the error returned by d_revalidate or -ESTALE if the 425 * revalidation it just returned 0. If d_revalidate returns 0, we attempt to 426 * invalidate the dentry. It's up to the caller to handle putting references 427 * to the path if necessary. 428 */ 429static int 430force_reval_path(struct path *path, struct nameidata *nd) 431{ 432 int status; 433 struct dentry *dentry = path->dentry; 434 435 /* 436 * only check on filesystems where it's possible for the dentry to 437 * become stale. It's assumed that if this flag is set then the 438 * d_revalidate op will also be defined. 439 */ 440 if (!(dentry->d_sb->s_type->fs_flags & FS_REVAL_DOT)) 441 return 0; 442 443 status = dentry->d_op->d_revalidate(dentry, nd); 444 if (status > 0) 445 return 0; 446 447 if (!status) { 448 d_invalidate(dentry); 449 status = -ESTALE; 450 } 451 return status; 452} 453 454/* 455 * Short-cut version of permission(), for calling on directories 456 * during pathname resolution. Combines parts of permission() 457 * and generic_permission(), and tests ONLY for MAY_EXEC permission. 458 * 459 * If appropriate, check DAC only. If not appropriate, or 460 * short-cut DAC fails, then call ->permission() to do more 461 * complete permission check. 462 */ 463static int exec_permission(struct inode *inode) 464{ 465 int ret; 466 467 if (inode->i_op->permission) { 468 ret = inode->i_op->permission(inode, MAY_EXEC); 469 if (!ret) 470 goto ok; 471 return ret; 472 } 473 ret = acl_permission_check(inode, MAY_EXEC, inode->i_op->check_acl); 474 if (!ret) 475 goto ok; 476 477 if (capable(CAP_DAC_OVERRIDE) || capable(CAP_DAC_READ_SEARCH)) 478 goto ok; 479 480 return ret; 481ok: 482 return security_inode_permission(inode, MAY_EXEC); 483} 484 485static __always_inline void set_root(struct nameidata *nd) 486{ 487 if (!nd->root.mnt) { 488 struct fs_struct *fs = current->fs; 489 read_lock(&fs->lock); 490 nd->root = fs->root; 491 path_get(&nd->root); 492 read_unlock(&fs->lock); 493 } 494} 495 496static int link_path_walk(const char *, struct nameidata *); 497 498static __always_inline int __vfs_follow_link(struct nameidata *nd, const char *link) 499{ 500 int res = 0; 501 char *name; 502 if (IS_ERR(link)) 503 goto fail; 504 505 if (*link == '/') { 506 set_root(nd); 507 path_put(&nd->path); 508 nd->path = nd->root; 509 path_get(&nd->root); 510 } 511 512 res = link_path_walk(link, nd); 513 if (nd->depth || res || nd->last_type!=LAST_NORM) 514 return res; 515 /* 516 * If it is an iterative symlinks resolution in open_namei() we 517 * have to copy the last component. And all that crap because of 518 * bloody create() on broken symlinks. Furrfu... 519 */ 520 name = __getname(); 521 if (unlikely(!name)) { 522 path_put(&nd->path); 523 return -ENOMEM; 524 } 525 strcpy(name, nd->last.name); 526 nd->last.name = name; 527 return 0; 528fail: 529 path_put(&nd->path); 530 return PTR_ERR(link); 531} 532 533static void path_put_conditional(struct path *path, struct nameidata *nd) 534{ 535 dput(path->dentry); 536 if (path->mnt != nd->path.mnt) 537 mntput(path->mnt); 538} 539 540static inline void path_to_nameidata(struct path *path, struct nameidata *nd) 541{ 542 dput(nd->path.dentry); 543 if (nd->path.mnt != path->mnt) 544 mntput(nd->path.mnt); 545 nd->path.mnt = path->mnt; 546 nd->path.dentry = path->dentry; 547} 548 549static __always_inline int __do_follow_link(struct path *path, struct nameidata *nd) 550{ 551 int error; 552 void *cookie; 553 struct dentry *dentry = path->dentry; 554 555 touch_atime(path->mnt, dentry); 556 nd_set_link(nd, NULL); 557 558 if (path->mnt != nd->path.mnt) { 559 path_to_nameidata(path, nd); 560 dget(dentry); 561 } 562 mntget(path->mnt); 563 cookie = dentry->d_inode->i_op->follow_link(dentry, nd); 564 error = PTR_ERR(cookie); 565 if (!IS_ERR(cookie)) { 566 char *s = nd_get_link(nd); 567 error = 0; 568 if (s) 569 error = __vfs_follow_link(nd, s); 570 else if (nd->last_type == LAST_BIND) { 571 error = force_reval_path(&nd->path, nd); 572 if (error) 573 path_put(&nd->path); 574 } 575 if (dentry->d_inode->i_op->put_link) 576 dentry->d_inode->i_op->put_link(dentry, nd, cookie); 577 } 578 return error; 579} 580 581/* 582 * This limits recursive symlink follows to 8, while 583 * limiting consecutive symlinks to 40. 584 * 585 * Without that kind of total limit, nasty chains of consecutive 586 * symlinks can cause almost arbitrarily long lookups. 587 */ 588static inline int do_follow_link(struct path *path, struct nameidata *nd) 589{ 590 int err = -ELOOP; 591 if (current->link_count >= MAX_NESTED_LINKS) 592 goto loop; 593 if (current->total_link_count >= 40) 594 goto loop; 595 BUG_ON(nd->depth >= MAX_NESTED_LINKS); 596 cond_resched(); 597 err = security_inode_follow_link(path->dentry, nd); 598 if (err) 599 goto loop; 600 current->link_count++; 601 current->total_link_count++; 602 nd->depth++; 603 err = __do_follow_link(path, nd); 604 path_put(path); 605 current->link_count--; 606 nd->depth--; 607 return err; 608loop: 609 path_put_conditional(path, nd); 610 path_put(&nd->path); 611 return err; 612} 613 614int follow_up(struct path *path) 615{ 616 struct vfsmount *parent; 617 struct dentry *mountpoint; 618 spin_lock(&vfsmount_lock); 619 parent = path->mnt->mnt_parent; 620 if (parent == path->mnt) { 621 spin_unlock(&vfsmount_lock); 622 return 0; 623 } 624 mntget(parent); 625 mountpoint = dget(path->mnt->mnt_mountpoint); 626 spin_unlock(&vfsmount_lock); 627 dput(path->dentry); 628 path->dentry = mountpoint; 629 mntput(path->mnt); 630 path->mnt = parent; 631 return 1; 632} 633 634/* no need for dcache_lock, as serialization is taken care in 635 * namespace.c 636 */ 637static int __follow_mount(struct path *path) 638{ 639 int res = 0; 640 while (d_mountpoint(path->dentry)) { 641 struct vfsmount *mounted = lookup_mnt(path); 642 if (!mounted) 643 break; 644 dput(path->dentry); 645 if (res) 646 mntput(path->mnt); 647 path->mnt = mounted; 648 path->dentry = dget(mounted->mnt_root); 649 res = 1; 650 } 651 return res; 652} 653 654static void follow_mount(struct path *path) 655{ 656 while (d_mountpoint(path->dentry)) { 657 struct vfsmount *mounted = lookup_mnt(path); 658 if (!mounted) 659 break; 660 dput(path->dentry); 661 mntput(path->mnt); 662 path->mnt = mounted; 663 path->dentry = dget(mounted->mnt_root); 664 } 665} 666 667/* no need for dcache_lock, as serialization is taken care in 668 * namespace.c 669 */ 670int follow_down(struct path *path) 671{ 672 struct vfsmount *mounted; 673 674 mounted = lookup_mnt(path); 675 if (mounted) { 676 dput(path->dentry); 677 mntput(path->mnt); 678 path->mnt = mounted; 679 path->dentry = dget(mounted->mnt_root); 680 return 1; 681 } 682 return 0; 683} 684 685static __always_inline void follow_dotdot(struct nameidata *nd) 686{ 687 set_root(nd); 688 689 while(1) { 690 struct vfsmount *parent; 691 struct dentry *old = nd->path.dentry; 692 693 if (nd->path.dentry == nd->root.dentry && 694 nd->path.mnt == nd->root.mnt) { 695 break; 696 } 697 spin_lock(&dcache_lock); 698 if (nd->path.dentry != nd->path.mnt->mnt_root) { 699 nd->path.dentry = dget(nd->path.dentry->d_parent); 700 spin_unlock(&dcache_lock); 701 dput(old); 702 break; 703 } 704 spin_unlock(&dcache_lock); 705 spin_lock(&vfsmount_lock); 706 parent = nd->path.mnt->mnt_parent; 707 if (parent == nd->path.mnt) { 708 spin_unlock(&vfsmount_lock); 709 break; 710 } 711 mntget(parent); 712 nd->path.dentry = dget(nd->path.mnt->mnt_mountpoint); 713 spin_unlock(&vfsmount_lock); 714 dput(old); 715 mntput(nd->path.mnt); 716 nd->path.mnt = parent; 717 } 718 follow_mount(&nd->path); 719} 720 721/* 722 * It's more convoluted than I'd like it to be, but... it's still fairly 723 * small and for now I'd prefer to have fast path as straight as possible. 724 * It _is_ time-critical. 725 */ 726static int do_lookup(struct nameidata *nd, struct qstr *name, 727 struct path *path) 728{ 729 struct vfsmount *mnt = nd->path.mnt; 730 struct dentry *dentry, *parent; 731 struct inode *dir; 732 /* 733 * See if the low-level filesystem might want 734 * to use its own hash.. 735 */ 736 if (nd->path.dentry->d_op && nd->path.dentry->d_op->d_hash) { 737 int err = nd->path.dentry->d_op->d_hash(nd->path.dentry, name); 738 if (err < 0) 739 return err; 740 } 741 742 dentry = __d_lookup(nd->path.dentry, name); 743 if (!dentry) 744 goto need_lookup; 745 if (dentry->d_op && dentry->d_op->d_revalidate) 746 goto need_revalidate; 747done: 748 path->mnt = mnt; 749 path->dentry = dentry; 750 __follow_mount(path); 751 return 0; 752 753need_lookup: 754 parent = nd->path.dentry; 755 dir = parent->d_inode; 756 757 mutex_lock(&dir->i_mutex); 758 /* 759 * First re-do the cached lookup just in case it was created 760 * while we waited for the directory semaphore.. 761 * 762 * FIXME! This could use version numbering or similar to 763 * avoid unnecessary cache lookups. 764 * 765 * The "dcache_lock" is purely to protect the RCU list walker 766 * from concurrent renames at this point (we mustn't get false 767 * negatives from the RCU list walk here, unlike the optimistic 768 * fast walk). 769 * 770 * so doing d_lookup() (with seqlock), instead of lockfree __d_lookup 771 */ 772 dentry = d_lookup(parent, name); 773 if (!dentry) { 774 struct dentry *new; 775 776 /* Don't create child dentry for a dead directory. */ 777 dentry = ERR_PTR(-ENOENT); 778 if (IS_DEADDIR(dir)) 779 goto out_unlock; 780 781 new = d_alloc(parent, name); 782 dentry = ERR_PTR(-ENOMEM); 783 if (new) { 784 dentry = dir->i_op->lookup(dir, new, nd); 785 if (dentry) 786 dput(new); 787 else 788 dentry = new; 789 } 790out_unlock: 791 mutex_unlock(&dir->i_mutex); 792 if (IS_ERR(dentry)) 793 goto fail; 794 goto done; 795 } 796 797 /* 798 * Uhhuh! Nasty case: the cache was re-populated while 799 * we waited on the semaphore. Need to revalidate. 800 */ 801 mutex_unlock(&dir->i_mutex); 802 if (dentry->d_op && dentry->d_op->d_revalidate) { 803 dentry = do_revalidate(dentry, nd); 804 if (!dentry) 805 dentry = ERR_PTR(-ENOENT); 806 } 807 if (IS_ERR(dentry)) 808 goto fail; 809 goto done; 810 811need_revalidate: 812 dentry = do_revalidate(dentry, nd); 813 if (!dentry) 814 goto need_lookup; 815 if (IS_ERR(dentry)) 816 goto fail; 817 goto done; 818 819fail: 820 return PTR_ERR(dentry); 821} 822 823/* 824 * Name resolution. 825 * This is the basic name resolution function, turning a pathname into 826 * the final dentry. We expect 'base' to be positive and a directory. 827 * 828 * Returns 0 and nd will have valid dentry and mnt on success. 829 * Returns error and drops reference to input namei data on failure. 830 */ 831static int link_path_walk(const char *name, struct nameidata *nd) 832{ 833 struct path next; 834 struct inode *inode; 835 int err; 836 unsigned int lookup_flags = nd->flags; 837 838 while (*name=='/') 839 name++; 840 if (!*name) 841 goto return_reval; 842 843 inode = nd->path.dentry->d_inode; 844 if (nd->depth) 845 lookup_flags = LOOKUP_FOLLOW | (nd->flags & LOOKUP_CONTINUE); 846 847 /* At this point we know we have a real path component. */ 848 for(;;) { 849 unsigned long hash; 850 struct qstr this; 851 unsigned int c; 852 853 nd->flags |= LOOKUP_CONTINUE; 854 err = exec_permission(inode); 855 if (err) 856 break; 857 858 this.name = name; 859 c = *(const unsigned char *)name; 860 861 hash = init_name_hash(); 862 do { 863 name++; 864 hash = partial_name_hash(c, hash); 865 c = *(const unsigned char *)name; 866 } while (c && (c != '/')); 867 this.len = name - (const char *) this.name; 868 this.hash = end_name_hash(hash); 869 870 /* remove trailing slashes? */ 871 if (!c) 872 goto last_component; 873 while (*++name == '/'); 874 if (!*name) 875 goto last_with_slashes; 876 877 /* 878 * "." and ".." are special - ".." especially so because it has 879 * to be able to know about the current root directory and 880 * parent relationships. 881 */ 882 if (this.name[0] == '.') switch (this.len) { 883 default: 884 break; 885 case 2: 886 if (this.name[1] != '.') 887 break; 888 follow_dotdot(nd); 889 inode = nd->path.dentry->d_inode; 890 /* fallthrough */ 891 case 1: 892 continue; 893 } 894 /* This does the actual lookups.. */ 895 err = do_lookup(nd, &this, &next); 896 if (err) 897 break; 898 899 err = -ENOENT; 900 inode = next.dentry->d_inode; 901 if (!inode) 902 goto out_dput; 903 904 if (inode->i_op->follow_link) { 905 err = do_follow_link(&next, nd); 906 if (err) 907 goto return_err; 908 err = -ENOENT; 909 inode = nd->path.dentry->d_inode; 910 if (!inode) 911 break; 912 } else 913 path_to_nameidata(&next, nd); 914 err = -ENOTDIR; 915 if (!inode->i_op->lookup) 916 break; 917 continue; 918 /* here ends the main loop */ 919 920last_with_slashes: 921 lookup_flags |= LOOKUP_FOLLOW | LOOKUP_DIRECTORY; 922last_component: 923 /* Clear LOOKUP_CONTINUE iff it was previously unset */ 924 nd->flags &= lookup_flags | ~LOOKUP_CONTINUE; 925 if (lookup_flags & LOOKUP_PARENT) 926 goto lookup_parent; 927 if (this.name[0] == '.') switch (this.len) { 928 default: 929 break; 930 case 2: 931 if (this.name[1] != '.') 932 break; 933 follow_dotdot(nd); 934 inode = nd->path.dentry->d_inode; 935 /* fallthrough */ 936 case 1: 937 goto return_reval; 938 } 939 err = do_lookup(nd, &this, &next); 940 if (err) 941 break; 942 inode = next.dentry->d_inode; 943 if ((lookup_flags & LOOKUP_FOLLOW) 944 && inode && inode->i_op->follow_link) { 945 err = do_follow_link(&next, nd); 946 if (err) 947 goto return_err; 948 inode = nd->path.dentry->d_inode; 949 } else 950 path_to_nameidata(&next, nd); 951 err = -ENOENT; 952 if (!inode) 953 break; 954 if (lookup_flags & LOOKUP_DIRECTORY) { 955 err = -ENOTDIR; 956 if (!inode->i_op->lookup) 957 break; 958 } 959 goto return_base; 960lookup_parent: 961 nd->last = this; 962 nd->last_type = LAST_NORM; 963 if (this.name[0] != '.') 964 goto return_base; 965 if (this.len == 1) 966 nd->last_type = LAST_DOT; 967 else if (this.len == 2 && this.name[1] == '.') 968 nd->last_type = LAST_DOTDOT; 969 else 970 goto return_base; 971return_reval: 972 /* 973 * We bypassed the ordinary revalidation routines. 974 * We may need to check the cached dentry for staleness. 975 */ 976 if (nd->path.dentry && nd->path.dentry->d_sb && 977 (nd->path.dentry->d_sb->s_type->fs_flags & FS_REVAL_DOT)) { 978 err = -ESTALE; 979 /* Note: we do not d_invalidate() */ 980 if (!nd->path.dentry->d_op->d_revalidate( 981 nd->path.dentry, nd)) 982 break; 983 } 984return_base: 985 return 0; 986out_dput: 987 path_put_conditional(&next, nd); 988 break; 989 } 990 path_put(&nd->path); 991return_err: 992 return err; 993} 994 995static int path_walk(const char *name, struct nameidata *nd) 996{ 997 struct path save = nd->path; 998 int result; 999 1000 current->total_link_count = 0; 1001 1002 /* make sure the stuff we saved doesn't go away */ 1003 path_get(&save); 1004 1005 result = link_path_walk(name, nd); 1006 if (result == -ESTALE) { 1007 /* nd->path had been dropped */ 1008 current->total_link_count = 0; 1009 nd->path = save; 1010 path_get(&nd->path); 1011 nd->flags |= LOOKUP_REVAL; 1012 result = link_path_walk(name, nd); 1013 } 1014 1015 path_put(&save); 1016 1017 return result; 1018} 1019 1020static int path_init(int dfd, const char *name, unsigned int flags, struct nameidata *nd) 1021{ 1022 int retval = 0; 1023 int fput_needed; 1024 struct file *file; 1025 1026 nd->last_type = LAST_ROOT; /* if there are only slashes... */ 1027 nd->flags = flags; 1028 nd->depth = 0; 1029 nd->root.mnt = NULL; 1030 1031 if (*name=='/') { 1032 set_root(nd); 1033 nd->path = nd->root; 1034 path_get(&nd->root); 1035 } else if (dfd == AT_FDCWD) { 1036 struct fs_struct *fs = current->fs; 1037 read_lock(&fs->lock); 1038 nd->path = fs->pwd; 1039 path_get(&fs->pwd); 1040 read_unlock(&fs->lock); 1041 } else { 1042 struct dentry *dentry; 1043 1044 file = fget_light(dfd, &fput_needed); 1045 retval = -EBADF; 1046 if (!file) 1047 goto out_fail; 1048 1049 dentry = file->f_path.dentry; 1050 1051 retval = -ENOTDIR; 1052 if (!S_ISDIR(dentry->d_inode->i_mode)) 1053 goto fput_fail; 1054 1055 retval = file_permission(file, MAY_EXEC); 1056 if (retval) 1057 goto fput_fail; 1058 1059 nd->path = file->f_path; 1060 path_get(&file->f_path); 1061 1062 fput_light(file, fput_needed); 1063 } 1064 return 0; 1065 1066fput_fail: 1067 fput_light(file, fput_needed); 1068out_fail: 1069 return retval; 1070} 1071 1072/* Returns 0 and nd will be valid on success; Retuns error, otherwise. */ 1073static int do_path_lookup(int dfd, const char *name, 1074 unsigned int flags, struct nameidata *nd) 1075{ 1076 int retval = path_init(dfd, name, flags, nd); 1077 if (!retval) 1078 retval = path_walk(name, nd); 1079 if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry && 1080 nd->path.dentry->d_inode)) 1081 audit_inode(name, nd->path.dentry); 1082 if (nd->root.mnt) { 1083 path_put(&nd->root); 1084 nd->root.mnt = NULL; 1085 } 1086 return retval; 1087} 1088 1089int path_lookup(const char *name, unsigned int flags, 1090 struct nameidata *nd) 1091{ 1092 return do_path_lookup(AT_FDCWD, name, flags, nd); 1093} 1094 1095int kern_path(const char *name, unsigned int flags, struct path *path) 1096{ 1097 struct nameidata nd; 1098 int res = do_path_lookup(AT_FDCWD, name, flags, &nd); 1099 if (!res) 1100 *path = nd.path; 1101 return res; 1102} 1103 1104/** 1105 * vfs_path_lookup - lookup a file path relative to a dentry-vfsmount pair 1106 * @dentry: pointer to dentry of the base directory 1107 * @mnt: pointer to vfs mount of the base directory 1108 * @name: pointer to file name 1109 * @flags: lookup flags 1110 * @nd: pointer to nameidata 1111 */ 1112int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt, 1113 const char *name, unsigned int flags, 1114 struct nameidata *nd) 1115{ 1116 int retval; 1117 1118 /* same as do_path_lookup */ 1119 nd->last_type = LAST_ROOT; 1120 nd->flags = flags; 1121 nd->depth = 0; 1122 1123 nd->path.dentry = dentry; 1124 nd->path.mnt = mnt; 1125 path_get(&nd->path); 1126 nd->root = nd->path; 1127 path_get(&nd->root); 1128 1129 retval = path_walk(name, nd); 1130 if (unlikely(!retval && !audit_dummy_context() && nd->path.dentry && 1131 nd->path.dentry->d_inode)) 1132 audit_inode(name, nd->path.dentry); 1133 1134 path_put(&nd->root); 1135 nd->root.mnt = NULL; 1136 1137 return retval; 1138} 1139 1140static struct dentry *__lookup_hash(struct qstr *name, 1141 struct dentry *base, struct nameidata *nd) 1142{ 1143 struct dentry *dentry; 1144 struct inode *inode; 1145 int err; 1146 1147 inode = base->d_inode; 1148 1149 /* 1150 * See if the low-level filesystem might want 1151 * to use its own hash.. 1152 */ 1153 if (base->d_op && base->d_op->d_hash) { 1154 err = base->d_op->d_hash(base, name); 1155 dentry = ERR_PTR(err); 1156 if (err < 0) 1157 goto out; 1158 } 1159 1160 dentry = __d_lookup(base, name); 1161 1162 /* lockess __d_lookup may fail due to concurrent d_move() 1163 * in some unrelated directory, so try with d_lookup 1164 */ 1165 if (!dentry) 1166 dentry = d_lookup(base, name); 1167 1168 if (dentry && dentry->d_op && dentry->d_op->d_revalidate) 1169 dentry = do_revalidate(dentry, nd); 1170 1171 if (!dentry) { 1172 struct dentry *new; 1173 1174 /* Don't create child dentry for a dead directory. */ 1175 dentry = ERR_PTR(-ENOENT); 1176 if (IS_DEADDIR(inode)) 1177 goto out; 1178 1179 new = d_alloc(base, name); 1180 dentry = ERR_PTR(-ENOMEM); 1181 if (!new) 1182 goto out; 1183 dentry = inode->i_op->lookup(inode, new, nd); 1184 if (!dentry) 1185 dentry = new; 1186 else 1187 dput(new); 1188 } 1189out: 1190 return dentry; 1191} 1192 1193/* 1194 * Restricted form of lookup. Doesn't follow links, single-component only, 1195 * needs parent already locked. Doesn't follow mounts. 1196 * SMP-safe. 1197 */ 1198static struct dentry *lookup_hash(struct nameidata *nd) 1199{ 1200 int err; 1201 1202 err = exec_permission(nd->path.dentry->d_inode); 1203 if (err) 1204 return ERR_PTR(err); 1205 return __lookup_hash(&nd->last, nd->path.dentry, nd); 1206} 1207 1208static int __lookup_one_len(const char *name, struct qstr *this, 1209 struct dentry *base, int len) 1210{ 1211 unsigned long hash; 1212 unsigned int c; 1213 1214 this->name = name; 1215 this->len = len; 1216 if (!len) 1217 return -EACCES; 1218 1219 hash = init_name_hash(); 1220 while (len--) { 1221 c = *(const unsigned char *)name++; 1222 if (c == '/' || c == '\0') 1223 return -EACCES; 1224 hash = partial_name_hash(c, hash); 1225 } 1226 this->hash = end_name_hash(hash); 1227 return 0; 1228} 1229 1230/** 1231 * lookup_one_len - filesystem helper to lookup single pathname component 1232 * @name: pathname component to lookup 1233 * @base: base directory to lookup from 1234 * @len: maximum length @len should be interpreted to 1235 * 1236 * Note that this routine is purely a helper for filesystem usage and should 1237 * not be called by generic code. Also note that by using this function the 1238 * nameidata argument is passed to the filesystem methods and a filesystem 1239 * using this helper needs to be prepared for that. 1240 */ 1241struct dentry *lookup_one_len(const char *name, struct dentry *base, int len) 1242{ 1243 int err; 1244 struct qstr this; 1245 1246 WARN_ON_ONCE(!mutex_is_locked(&base->d_inode->i_mutex)); 1247 1248 err = __lookup_one_len(name, &this, base, len); 1249 if (err) 1250 return ERR_PTR(err); 1251 1252 err = exec_permission(base->d_inode); 1253 if (err) 1254 return ERR_PTR(err); 1255 return __lookup_hash(&this, base, NULL); 1256} 1257 1258int user_path_at(int dfd, const char __user *name, unsigned flags, 1259 struct path *path) 1260{ 1261 struct nameidata nd; 1262 char *tmp = getname(name); 1263 int err = PTR_ERR(tmp); 1264 if (!IS_ERR(tmp)) { 1265 1266 BUG_ON(flags & LOOKUP_PARENT); 1267 1268 err = do_path_lookup(dfd, tmp, flags, &nd); 1269 putname(tmp); 1270 if (!err) 1271 *path = nd.path; 1272 } 1273 return err; 1274} 1275 1276static int user_path_parent(int dfd, const char __user *path, 1277 struct nameidata *nd, char **name) 1278{ 1279 char *s = getname(path); 1280 int error; 1281 1282 if (IS_ERR(s)) 1283 return PTR_ERR(s); 1284 1285 error = do_path_lookup(dfd, s, LOOKUP_PARENT, nd); 1286 if (error) 1287 putname(s); 1288 else 1289 *name = s; 1290 1291 return error; 1292} 1293 1294/* 1295 * It's inline, so penalty for filesystems that don't use sticky bit is 1296 * minimal. 1297 */ 1298static inline int check_sticky(struct inode *dir, struct inode *inode) 1299{ 1300 uid_t fsuid = current_fsuid(); 1301 1302 if (!(dir->i_mode & S_ISVTX)) 1303 return 0; 1304 if (inode->i_uid == fsuid) 1305 return 0; 1306 if (dir->i_uid == fsuid) 1307 return 0; 1308 return !capable(CAP_FOWNER); 1309} 1310 1311/* 1312 * Check whether we can remove a link victim from directory dir, check 1313 * whether the type of victim is right. 1314 * 1. We can't do it if dir is read-only (done in permission()) 1315 * 2. We should have write and exec permissions on dir 1316 * 3. We can't remove anything from append-only dir 1317 * 4. We can't do anything with immutable dir (done in permission()) 1318 * 5. If the sticky bit on dir is set we should either 1319 * a. be owner of dir, or 1320 * b. be owner of victim, or 1321 * c. have CAP_FOWNER capability 1322 * 6. If the victim is append-only or immutable we can't do antyhing with 1323 * links pointing to it. 1324 * 7. If we were asked to remove a directory and victim isn't one - ENOTDIR. 1325 * 8. If we were asked to remove a non-directory and victim isn't one - EISDIR. 1326 * 9. We can't remove a root or mountpoint. 1327 * 10. We don't allow removal of NFS sillyrenamed files; it's handled by 1328 * nfs_async_unlink(). 1329 */ 1330static int may_delete(struct inode *dir,struct dentry *victim,int isdir) 1331{ 1332 int error; 1333 1334 if (!victim->d_inode) 1335 return -ENOENT; 1336 1337 BUG_ON(victim->d_parent->d_inode != dir); 1338 audit_inode_child(victim->d_name.name, victim, dir); 1339 1340 error = inode_permission(dir, MAY_WRITE | MAY_EXEC); 1341 if (error) 1342 return error; 1343 if (IS_APPEND(dir)) 1344 return -EPERM; 1345 if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)|| 1346 IS_IMMUTABLE(victim->d_inode) || IS_SWAPFILE(victim->d_inode)) 1347 return -EPERM; 1348 if (isdir) { 1349 if (!S_ISDIR(victim->d_inode->i_mode)) 1350 return -ENOTDIR; 1351 if (IS_ROOT(victim)) 1352 return -EBUSY; 1353 } else if (S_ISDIR(victim->d_inode->i_mode)) 1354 return -EISDIR; 1355 if (IS_DEADDIR(dir)) 1356 return -ENOENT; 1357 if (victim->d_flags & DCACHE_NFSFS_RENAMED) 1358 return -EBUSY; 1359 return 0; 1360} 1361 1362/* Check whether we can create an object with dentry child in directory 1363 * dir. 1364 * 1. We can't do it if child already exists (open has special treatment for 1365 * this case, but since we are inlined it's OK) 1366 * 2. We can't do it if dir is read-only (done in permission()) 1367 * 3. We should have write and exec permissions on dir 1368 * 4. We can't do it if dir is immutable (done in permission()) 1369 */ 1370static inline int may_create(struct inode *dir, struct dentry *child) 1371{ 1372 if (child->d_inode) 1373 return -EEXIST; 1374 if (IS_DEADDIR(dir)) 1375 return -ENOENT; 1376 return inode_permission(dir, MAY_WRITE | MAY_EXEC); 1377} 1378 1379/* 1380 * O_DIRECTORY translates into forcing a directory lookup. 1381 */ 1382static inline int lookup_flags(unsigned int f) 1383{ 1384 unsigned long retval = LOOKUP_FOLLOW; 1385 1386 if (f & O_NOFOLLOW) 1387 retval &= ~LOOKUP_FOLLOW; 1388 1389 if (f & O_DIRECTORY) 1390 retval |= LOOKUP_DIRECTORY; 1391 1392 return retval; 1393} 1394 1395/* 1396 * p1 and p2 should be directories on the same fs. 1397 */ 1398struct dentry *lock_rename(struct dentry *p1, struct dentry *p2) 1399{ 1400 struct dentry *p; 1401 1402 if (p1 == p2) { 1403 mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); 1404 return NULL; 1405 } 1406 1407 mutex_lock(&p1->d_inode->i_sb->s_vfs_rename_mutex); 1408 1409 p = d_ancestor(p2, p1); 1410 if (p) { 1411 mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_PARENT); 1412 mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_CHILD); 1413 return p; 1414 } 1415 1416 p = d_ancestor(p1, p2); 1417 if (p) { 1418 mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); 1419 mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_CHILD); 1420 return p; 1421 } 1422 1423 mutex_lock_nested(&p1->d_inode->i_mutex, I_MUTEX_PARENT); 1424 mutex_lock_nested(&p2->d_inode->i_mutex, I_MUTEX_CHILD); 1425 return NULL; 1426} 1427 1428void unlock_rename(struct dentry *p1, struct dentry *p2) 1429{ 1430 mutex_unlock(&p1->d_inode->i_mutex); 1431 if (p1 != p2) { 1432 mutex_unlock(&p2->d_inode->i_mutex); 1433 mutex_unlock(&p1->d_inode->i_sb->s_vfs_rename_mutex); 1434 } 1435} 1436 1437int vfs_create(struct inode *dir, struct dentry *dentry, int mode, 1438 struct nameidata *nd) 1439{ 1440 int error = may_create(dir, dentry); 1441 1442 if (error) 1443 return error; 1444 1445 if (!dir->i_op->create) 1446 return -EACCES; /* shouldn't it be ENOSYS? */ 1447 mode &= S_IALLUGO; 1448 mode |= S_IFREG; 1449 error = security_inode_create(dir, dentry, mode); 1450 if (error) 1451 return error; 1452 vfs_dq_init(dir); 1453 error = dir->i_op->create(dir, dentry, mode, nd); 1454 if (!error) 1455 fsnotify_create(dir, dentry); 1456 return error; 1457} 1458 1459int may_open(struct path *path, int acc_mode, int flag) 1460{ 1461 struct dentry *dentry = path->dentry; 1462 struct inode *inode = dentry->d_inode; 1463 int error; 1464 1465 if (!inode) 1466 return -ENOENT; 1467 1468 switch (inode->i_mode & S_IFMT) { 1469 case S_IFLNK: 1470 return -ELOOP; 1471 case S_IFDIR: 1472 if (acc_mode & MAY_WRITE) 1473 return -EISDIR; 1474 break; 1475 case S_IFBLK: 1476 case S_IFCHR: 1477 if (path->mnt->mnt_flags & MNT_NODEV) 1478 return -EACCES; 1479 /*FALLTHRU*/ 1480 case S_IFIFO: 1481 case S_IFSOCK: 1482 flag &= ~O_TRUNC; 1483 break; 1484 } 1485 1486 error = inode_permission(inode, acc_mode); 1487 if (error) 1488 return error; 1489 1490 /* 1491 * An append-only file must be opened in append mode for writing. 1492 */ 1493 if (IS_APPEND(inode)) { 1494 if ((flag & FMODE_WRITE) && !(flag & O_APPEND)) 1495 return -EPERM; 1496 if (flag & O_TRUNC) 1497 return -EPERM; 1498 } 1499 1500 /* O_NOATIME can only be set by the owner or superuser */ 1501 if (flag & O_NOATIME && !is_owner_or_cap(inode)) 1502 return -EPERM; 1503 1504 /* 1505 * Ensure there are no outstanding leases on the file. 1506 */ 1507 return break_lease(inode, flag); 1508} 1509 1510static int handle_truncate(struct path *path) 1511{ 1512 struct inode *inode = path->dentry->d_inode; 1513 int error = get_write_access(inode); 1514 if (error) 1515 return error; 1516 /* 1517 * Refuse to truncate files with mandatory locks held on them. 1518 */ 1519 error = locks_verify_locked(inode); 1520 if (!error) 1521 error = security_path_truncate(path, 0, 1522 ATTR_MTIME|ATTR_CTIME|ATTR_OPEN); 1523 if (!error) { 1524 error = do_truncate(path->dentry, 0, 1525 ATTR_MTIME|ATTR_CTIME|ATTR_OPEN, 1526 NULL); 1527 } 1528 put_write_access(inode); 1529 return error; 1530} 1531 1532/* 1533 * Be careful about ever adding any more callers of this 1534 * function. Its flags must be in the namei format, not 1535 * what get passed to sys_open(). 1536 */ 1537static int __open_namei_create(struct nameidata *nd, struct path *path, 1538 int flag, int mode) 1539{ 1540 int error; 1541 struct dentry *dir = nd->path.dentry; 1542 1543 if (!IS_POSIXACL(dir->d_inode)) 1544 mode &= ~current_umask(); 1545 error = security_path_mknod(&nd->path, path->dentry, mode, 0); 1546 if (error) 1547 goto out_unlock; 1548 error = vfs_create(dir->d_inode, path->dentry, mode, nd); 1549out_unlock: 1550 mutex_unlock(&dir->d_inode->i_mutex); 1551 dput(nd->path.dentry); 1552 nd->path.dentry = path->dentry; 1553 if (error) 1554 return error; 1555 /* Don't check for write permission, don't truncate */ 1556 return may_open(&nd->path, 0, flag & ~O_TRUNC); 1557} 1558 1559/* 1560 * Note that while the flag value (low two bits) for sys_open means: 1561 * 00 - read-only 1562 * 01 - write-only 1563 * 10 - read-write 1564 * 11 - special 1565 * it is changed into 1566 * 00 - no permissions needed 1567 * 01 - read-permission 1568 * 10 - write-permission 1569 * 11 - read-write 1570 * for the internal routines (ie open_namei()/follow_link() etc) 1571 * This is more logical, and also allows the 00 "no perm needed" 1572 * to be used for symlinks (where the permissions are checked 1573 * later). 1574 * 1575*/ 1576static inline int open_to_namei_flags(int flag) 1577{ 1578 if ((flag+1) & O_ACCMODE) 1579 flag++; 1580 return flag; 1581} 1582 1583static int open_will_truncate(int flag, struct inode *inode) 1584{ 1585 /* 1586 * We'll never write to the fs underlying 1587 * a device file. 1588 */ 1589 if (special_file(inode->i_mode)) 1590 return 0; 1591 return (flag & O_TRUNC); 1592} 1593 1594/* 1595 * Note that the low bits of the passed in "open_flag" 1596 * are not the same as in the local variable "flag". See 1597 * open_to_namei_flags() for more details. 1598 */ 1599struct file *do_filp_open(int dfd, const char *pathname, 1600 int open_flag, int mode, int acc_mode) 1601{ 1602 struct file *filp; 1603 struct nameidata nd; 1604 int error; 1605 struct path path, save; 1606 struct dentry *dir; 1607 int count = 0; 1608 int will_truncate; 1609 int flag = open_to_namei_flags(open_flag); 1610 1611 /* 1612 * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only 1613 * check for O_DSYNC if the need any syncing at all we enforce it's 1614 * always set instead of having to deal with possibly weird behaviour 1615 * for malicious applications setting only __O_SYNC. 1616 */ 1617 if (open_flag & __O_SYNC) 1618 open_flag |= O_DSYNC; 1619 1620 if (!acc_mode) 1621 acc_mode = MAY_OPEN | ACC_MODE(flag); 1622 1623 /* O_TRUNC implies we need access checks for write permissions */ 1624 if (flag & O_TRUNC) 1625 acc_mode |= MAY_WRITE; 1626 1627 /* Allow the LSM permission hook to distinguish append 1628 access from general write access. */ 1629 if (flag & O_APPEND) 1630 acc_mode |= MAY_APPEND; 1631 1632 /* 1633 * The simplest case - just a plain lookup. 1634 */ 1635 if (!(flag & O_CREAT)) { 1636 filp = get_empty_filp(); 1637 1638 if (filp == NULL) 1639 return ERR_PTR(-ENFILE); 1640 nd.intent.open.file = filp; 1641 filp->f_flags = open_flag; 1642 nd.intent.open.flags = flag; 1643 nd.intent.open.create_mode = 0; 1644 error = do_path_lookup(dfd, pathname, 1645 lookup_flags(flag)|LOOKUP_OPEN, &nd); 1646 if (IS_ERR(nd.intent.open.file)) { 1647 if (error == 0) { 1648 error = PTR_ERR(nd.intent.open.file); 1649 path_put(&nd.path); 1650 } 1651 } else if (error) 1652 release_open_intent(&nd); 1653 if (error) 1654 return ERR_PTR(error); 1655 goto ok; 1656 } 1657 1658 /* 1659 * Create - we need to know the parent. 1660 */ 1661 error = path_init(dfd, pathname, LOOKUP_PARENT, &nd); 1662 if (error) 1663 return ERR_PTR(error); 1664 error = path_walk(pathname, &nd); 1665 if (error) { 1666 if (nd.root.mnt) 1667 path_put(&nd.root); 1668 return ERR_PTR(error); 1669 } 1670 if (unlikely(!audit_dummy_context())) 1671 audit_inode(pathname, nd.path.dentry); 1672 1673 /* 1674 * We have the parent and last component. First of all, check 1675 * that we are not asked to creat(2) an obvious directory - that 1676 * will not do. 1677 */ 1678 error = -EISDIR; 1679 if (nd.last_type != LAST_NORM || nd.last.name[nd.last.len]) 1680 goto exit_parent; 1681 1682 error = -ENFILE; 1683 filp = get_empty_filp(); 1684 if (filp == NULL) 1685 goto exit_parent; 1686 nd.intent.open.file = filp; 1687 filp->f_flags = open_flag; 1688 nd.intent.open.flags = flag; 1689 nd.intent.open.create_mode = mode; 1690 dir = nd.path.dentry; 1691 nd.flags &= ~LOOKUP_PARENT; 1692 nd.flags |= LOOKUP_CREATE | LOOKUP_OPEN; 1693 if (flag & O_EXCL) 1694 nd.flags |= LOOKUP_EXCL; 1695 mutex_lock(&dir->d_inode->i_mutex); 1696 path.dentry = lookup_hash(&nd); 1697 path.mnt = nd.path.mnt; 1698 1699do_last: 1700 error = PTR_ERR(path.dentry); 1701 if (IS_ERR(path.dentry)) { 1702 mutex_unlock(&dir->d_inode->i_mutex); 1703 goto exit; 1704 } 1705 1706 if (IS_ERR(nd.intent.open.file)) { 1707 error = PTR_ERR(nd.intent.open.file); 1708 goto exit_mutex_unlock; 1709 } 1710 1711 /* Negative dentry, just create the file */ 1712 if (!path.dentry->d_inode) { 1713 /* 1714 * This write is needed to ensure that a 1715 * ro->rw transition does not occur between 1716 * the time when the file is created and when 1717 * a permanent write count is taken through 1718 * the 'struct file' in nameidata_to_filp(). 1719 */ 1720 error = mnt_want_write(nd.path.mnt); 1721 if (error) 1722 goto exit_mutex_unlock; 1723 error = __open_namei_create(&nd, &path, flag, mode); 1724 if (error) { 1725 mnt_drop_write(nd.path.mnt); 1726 goto exit; 1727 } 1728 filp = nameidata_to_filp(&nd); 1729 mnt_drop_write(nd.path.mnt); 1730 if (nd.root.mnt) 1731 path_put(&nd.root); 1732 if (!IS_ERR(filp)) { 1733 error = ima_path_check(&filp->f_path, filp->f_mode & 1734 (MAY_READ | MAY_WRITE | MAY_EXEC)); 1735 if (error) { 1736 fput(filp); 1737 filp = ERR_PTR(error); 1738 } 1739 } 1740 return filp; 1741 } 1742 1743 /* 1744 * It already exists. 1745 */ 1746 mutex_unlock(&dir->d_inode->i_mutex); 1747 audit_inode(pathname, path.dentry); 1748 1749 error = -EEXIST; 1750 if (flag & O_EXCL) 1751 goto exit_dput; 1752 1753 if (__follow_mount(&path)) { 1754 error = -ELOOP; 1755 if (flag & O_NOFOLLOW) 1756 goto exit_dput; 1757 } 1758 1759 error = -ENOENT; 1760 if (!path.dentry->d_inode) 1761 goto exit_dput; 1762 if (path.dentry->d_inode->i_op->follow_link) 1763 goto do_link; 1764 1765 path_to_nameidata(&path, &nd); 1766 error = -EISDIR; 1767 if (S_ISDIR(path.dentry->d_inode->i_mode)) 1768 goto exit; 1769ok: 1770 /* 1771 * Consider: 1772 * 1. may_open() truncates a file 1773 * 2. a rw->ro mount transition occurs 1774 * 3. nameidata_to_filp() fails due to 1775 * the ro mount. 1776 * That would be inconsistent, and should 1777 * be avoided. Taking this mnt write here 1778 * ensures that (2) can not occur. 1779 */ 1780 will_truncate = open_will_truncate(flag, nd.path.dentry->d_inode); 1781 if (will_truncate) { 1782 error = mnt_want_write(nd.path.mnt); 1783 if (error) 1784 goto exit; 1785 } 1786 error = may_open(&nd.path, acc_mode, flag); 1787 if (error) { 1788 if (will_truncate) 1789 mnt_drop_write(nd.path.mnt); 1790 goto exit; 1791 } 1792 filp = nameidata_to_filp(&nd); 1793 if (!IS_ERR(filp)) { 1794 error = ima_path_check(&filp->f_path, filp->f_mode & 1795 (MAY_READ | MAY_WRITE | MAY_EXEC)); 1796 if (error) { 1797 fput(filp); 1798 filp = ERR_PTR(error); 1799 } 1800 } 1801 if (!IS_ERR(filp)) { 1802 if (acc_mode & MAY_WRITE) 1803 vfs_dq_init(nd.path.dentry->d_inode); 1804 1805 if (will_truncate) { 1806 error = handle_truncate(&nd.path); 1807 if (error) { 1808 fput(filp); 1809 filp = ERR_PTR(error); 1810 } 1811 } 1812 } 1813 /* 1814 * It is now safe to drop the mnt write 1815 * because the filp has had a write taken 1816 * on its behalf. 1817 */ 1818 if (will_truncate) 1819 mnt_drop_write(nd.path.mnt); 1820 if (nd.root.mnt) 1821 path_put(&nd.root); 1822 return filp; 1823 1824exit_mutex_unlock: 1825 mutex_unlock(&dir->d_inode->i_mutex); 1826exit_dput: 1827 path_put_conditional(&path, &nd); 1828exit: 1829 if (!IS_ERR(nd.intent.open.file)) 1830 release_open_intent(&nd); 1831exit_parent: 1832 if (nd.root.mnt) 1833 path_put(&nd.root); 1834 path_put(&nd.path); 1835 return ERR_PTR(error); 1836 1837do_link: 1838 error = -ELOOP; 1839 if (flag & O_NOFOLLOW) 1840 goto exit_dput; 1841 /* 1842 * This is subtle. Instead of calling do_follow_link() we do the 1843 * thing by hands. The reason is that this way we have zero link_count 1844 * and path_walk() (called from ->follow_link) honoring LOOKUP_PARENT. 1845 * After that we have the parent and last component, i.e. 1846 * we are in the same situation as after the first path_walk(). 1847 * Well, almost - if the last component is normal we get its copy 1848 * stored in nd->last.name and we will have to putname() it when we 1849 * are done. Procfs-like symlinks just set LAST_BIND. 1850 */ 1851 nd.flags |= LOOKUP_PARENT; 1852 error = security_inode_follow_link(path.dentry, &nd); 1853 if (error) 1854 goto exit_dput; 1855 save = nd.path; 1856 path_get(&save); 1857 error = __do_follow_link(&path, &nd); 1858 if (error == -ESTALE) { 1859 /* nd.path had been dropped */ 1860 nd.path = save; 1861 path_get(&nd.path); 1862 nd.flags |= LOOKUP_REVAL; 1863 error = __do_follow_link(&path, &nd); 1864 } 1865 path_put(&save); 1866 path_put(&path); 1867 if (error) { 1868 /* Does someone understand code flow here? Or it is only 1869 * me so stupid? Anathema to whoever designed this non-sense 1870 * with "intent.open". 1871 */ 1872 release_open_intent(&nd); 1873 if (nd.root.mnt) 1874 path_put(&nd.root); 1875 return ERR_PTR(error); 1876 } 1877 nd.flags &= ~LOOKUP_PARENT; 1878 if (nd.last_type == LAST_BIND) 1879 goto ok; 1880 error = -EISDIR; 1881 if (nd.last_type != LAST_NORM) 1882 goto exit; 1883 if (nd.last.name[nd.last.len]) { 1884 __putname(nd.last.name); 1885 goto exit; 1886 } 1887 error = -ELOOP; 1888 if (count++==32) { 1889 __putname(nd.last.name); 1890 goto exit; 1891 } 1892 dir = nd.path.dentry; 1893 mutex_lock(&dir->d_inode->i_mutex); 1894 path.dentry = lookup_hash(&nd); 1895 path.mnt = nd.path.mnt; 1896 __putname(nd.last.name); 1897 goto do_last; 1898} 1899 1900/** 1901 * filp_open - open file and return file pointer 1902 * 1903 * @filename: path to open 1904 * @flags: open flags as per the open(2) second argument 1905 * @mode: mode for the new file if O_CREAT is set, else ignored 1906 * 1907 * This is the helper to open a file from kernelspace if you really 1908 * have to. But in generally you should not do this, so please move 1909 * along, nothing to see here.. 1910 */ 1911struct file *filp_open(const char *filename, int flags, int mode) 1912{ 1913 return do_filp_open(AT_FDCWD, filename, flags, mode, 0); 1914} 1915EXPORT_SYMBOL(filp_open); 1916 1917/** 1918 * lookup_create - lookup a dentry, creating it if it doesn't exist 1919 * @nd: nameidata info 1920 * @is_dir: directory flag 1921 * 1922 * Simple function to lookup and return a dentry and create it 1923 * if it doesn't exist. Is SMP-safe. 1924 * 1925 * Returns with nd->path.dentry->d_inode->i_mutex locked. 1926 */ 1927struct dentry *lookup_create(struct nameidata *nd, int is_dir) 1928{ 1929 struct dentry *dentry = ERR_PTR(-EEXIST); 1930 1931 mutex_lock_nested(&nd->path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); 1932 /* 1933 * Yucky last component or no last component at all? 1934 * (foo/., foo/.., /////) 1935 */ 1936 if (nd->last_type != LAST_NORM) 1937 goto fail; 1938 nd->flags &= ~LOOKUP_PARENT; 1939 nd->flags |= LOOKUP_CREATE | LOOKUP_EXCL; 1940 nd->intent.open.flags = O_EXCL; 1941 1942 /* 1943 * Do the final lookup. 1944 */ 1945 dentry = lookup_hash(nd); 1946 if (IS_ERR(dentry)) 1947 goto fail; 1948 1949 if (dentry->d_inode) 1950 goto eexist; 1951 /* 1952 * Special case - lookup gave negative, but... we had foo/bar/ 1953 * From the vfs_mknod() POV we just have a negative dentry - 1954 * all is fine. Let's be bastards - you had / on the end, you've 1955 * been asking for (non-existent) directory. -ENOENT for you. 1956 */ 1957 if (unlikely(!is_dir && nd->last.name[nd->last.len])) { 1958 dput(dentry); 1959 dentry = ERR_PTR(-ENOENT); 1960 } 1961 return dentry; 1962eexist: 1963 dput(dentry); 1964 dentry = ERR_PTR(-EEXIST); 1965fail: 1966 return dentry; 1967} 1968EXPORT_SYMBOL_GPL(lookup_create); 1969 1970int vfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev) 1971{ 1972 int error = may_create(dir, dentry); 1973 1974 if (error) 1975 return error; 1976 1977 if ((S_ISCHR(mode) || S_ISBLK(mode)) && !capable(CAP_MKNOD)) 1978 return -EPERM; 1979 1980 if (!dir->i_op->mknod) 1981 return -EPERM; 1982 1983 error = devcgroup_inode_mknod(mode, dev); 1984 if (error) 1985 return error; 1986 1987 error = security_inode_mknod(dir, dentry, mode, dev); 1988 if (error) 1989 return error; 1990 1991 vfs_dq_init(dir); 1992 error = dir->i_op->mknod(dir, dentry, mode, dev); 1993 if (!error) 1994 fsnotify_create(dir, dentry); 1995 return error; 1996} 1997 1998static int may_mknod(mode_t mode) 1999{ 2000 switch (mode & S_IFMT) { 2001 case S_IFREG: 2002 case S_IFCHR: 2003 case S_IFBLK: 2004 case S_IFIFO: 2005 case S_IFSOCK: 2006 case 0: /* zero mode translates to S_IFREG */ 2007 return 0; 2008 case S_IFDIR: 2009 return -EPERM; 2010 default: 2011 return -EINVAL; 2012 } 2013} 2014 2015SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, int, mode, 2016 unsigned, dev) 2017{ 2018 int error; 2019 char *tmp; 2020 struct dentry *dentry; 2021 struct nameidata nd; 2022 2023 if (S_ISDIR(mode)) 2024 return -EPERM; 2025 2026 error = user_path_parent(dfd, filename, &nd, &tmp); 2027 if (error) 2028 return error; 2029 2030 dentry = lookup_create(&nd, 0); 2031 if (IS_ERR(dentry)) { 2032 error = PTR_ERR(dentry); 2033 goto out_unlock; 2034 } 2035 if (!IS_POSIXACL(nd.path.dentry->d_inode)) 2036 mode &= ~current_umask(); 2037 error = may_mknod(mode); 2038 if (error) 2039 goto out_dput; 2040 error = mnt_want_write(nd.path.mnt); 2041 if (error) 2042 goto out_dput; 2043 error = security_path_mknod(&nd.path, dentry, mode, dev); 2044 if (error) 2045 goto out_drop_write; 2046 switch (mode & S_IFMT) { 2047 case 0: case S_IFREG: 2048 error = vfs_create(nd.path.dentry->d_inode,dentry,mode,&nd); 2049 break; 2050 case S_IFCHR: case S_IFBLK: 2051 error = vfs_mknod(nd.path.dentry->d_inode,dentry,mode, 2052 new_decode_dev(dev)); 2053 break; 2054 case S_IFIFO: case S_IFSOCK: 2055 error = vfs_mknod(nd.path.dentry->d_inode,dentry,mode,0); 2056 break; 2057 } 2058out_drop_write: 2059 mnt_drop_write(nd.path.mnt); 2060out_dput: 2061 dput(dentry); 2062out_unlock: 2063 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2064 path_put(&nd.path); 2065 putname(tmp); 2066 2067 return error; 2068} 2069 2070SYSCALL_DEFINE3(mknod, const char __user *, filename, int, mode, unsigned, dev) 2071{ 2072 return sys_mknodat(AT_FDCWD, filename, mode, dev); 2073} 2074 2075int vfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) 2076{ 2077 int error = may_create(dir, dentry); 2078 2079 if (error) 2080 return error; 2081 2082 if (!dir->i_op->mkdir) 2083 return -EPERM; 2084 2085 mode &= (S_IRWXUGO|S_ISVTX); 2086 error = security_inode_mkdir(dir, dentry, mode); 2087 if (error) 2088 return error; 2089 2090 vfs_dq_init(dir); 2091 error = dir->i_op->mkdir(dir, dentry, mode); 2092 if (!error) 2093 fsnotify_mkdir(dir, dentry); 2094 return error; 2095} 2096 2097SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, int, mode) 2098{ 2099 int error = 0; 2100 char * tmp; 2101 struct dentry *dentry; 2102 struct nameidata nd; 2103 2104 error = user_path_parent(dfd, pathname, &nd, &tmp); 2105 if (error) 2106 goto out_err; 2107 2108 dentry = lookup_create(&nd, 1); 2109 error = PTR_ERR(dentry); 2110 if (IS_ERR(dentry)) 2111 goto out_unlock; 2112 2113 if (!IS_POSIXACL(nd.path.dentry->d_inode)) 2114 mode &= ~current_umask(); 2115 error = mnt_want_write(nd.path.mnt); 2116 if (error) 2117 goto out_dput; 2118 error = security_path_mkdir(&nd.path, dentry, mode); 2119 if (error) 2120 goto out_drop_write; 2121 error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode); 2122out_drop_write: 2123 mnt_drop_write(nd.path.mnt); 2124out_dput: 2125 dput(dentry); 2126out_unlock: 2127 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2128 path_put(&nd.path); 2129 putname(tmp); 2130out_err: 2131 return error; 2132} 2133 2134SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode) 2135{ 2136 return sys_mkdirat(AT_FDCWD, pathname, mode); 2137} 2138 2139/* 2140 * We try to drop the dentry early: we should have 2141 * a usage count of 2 if we're the only user of this 2142 * dentry, and if that is true (possibly after pruning 2143 * the dcache), then we drop the dentry now. 2144 * 2145 * A low-level filesystem can, if it choses, legally 2146 * do a 2147 * 2148 * if (!d_unhashed(dentry)) 2149 * return -EBUSY; 2150 * 2151 * if it cannot handle the case of removing a directory 2152 * that is still in use by something else.. 2153 */ 2154void dentry_unhash(struct dentry *dentry) 2155{ 2156 dget(dentry); 2157 shrink_dcache_parent(dentry); 2158 spin_lock(&dcache_lock); 2159 spin_lock(&dentry->d_lock); 2160 if (atomic_read(&dentry->d_count) == 2) 2161 __d_drop(dentry); 2162 spin_unlock(&dentry->d_lock); 2163 spin_unlock(&dcache_lock); 2164} 2165 2166int vfs_rmdir(struct inode *dir, struct dentry *dentry) 2167{ 2168 int error = may_delete(dir, dentry, 1); 2169 2170 if (error) 2171 return error; 2172 2173 if (!dir->i_op->rmdir) 2174 return -EPERM; 2175 2176 vfs_dq_init(dir); 2177 2178 mutex_lock(&dentry->d_inode->i_mutex); 2179 dentry_unhash(dentry); 2180 if (d_mountpoint(dentry)) 2181 error = -EBUSY; 2182 else { 2183 error = security_inode_rmdir(dir, dentry); 2184 if (!error) { 2185 error = dir->i_op->rmdir(dir, dentry); 2186 if (!error) 2187 dentry->d_inode->i_flags |= S_DEAD; 2188 } 2189 } 2190 mutex_unlock(&dentry->d_inode->i_mutex); 2191 if (!error) { 2192 d_delete(dentry); 2193 } 2194 dput(dentry); 2195 2196 return error; 2197} 2198 2199static long do_rmdir(int dfd, const char __user *pathname) 2200{ 2201 int error = 0; 2202 char * name; 2203 struct dentry *dentry; 2204 struct nameidata nd; 2205 2206 error = user_path_parent(dfd, pathname, &nd, &name); 2207 if (error) 2208 return error; 2209 2210 switch(nd.last_type) { 2211 case LAST_DOTDOT: 2212 error = -ENOTEMPTY; 2213 goto exit1; 2214 case LAST_DOT: 2215 error = -EINVAL; 2216 goto exit1; 2217 case LAST_ROOT: 2218 error = -EBUSY; 2219 goto exit1; 2220 } 2221 2222 nd.flags &= ~LOOKUP_PARENT; 2223 2224 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); 2225 dentry = lookup_hash(&nd); 2226 error = PTR_ERR(dentry); 2227 if (IS_ERR(dentry)) 2228 goto exit2; 2229 error = mnt_want_write(nd.path.mnt); 2230 if (error) 2231 goto exit3; 2232 error = security_path_rmdir(&nd.path, dentry); 2233 if (error) 2234 goto exit4; 2235 error = vfs_rmdir(nd.path.dentry->d_inode, dentry); 2236exit4: 2237 mnt_drop_write(nd.path.mnt); 2238exit3: 2239 dput(dentry); 2240exit2: 2241 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2242exit1: 2243 path_put(&nd.path); 2244 putname(name); 2245 return error; 2246} 2247 2248SYSCALL_DEFINE1(rmdir, const char __user *, pathname) 2249{ 2250 return do_rmdir(AT_FDCWD, pathname); 2251} 2252 2253int vfs_unlink(struct inode *dir, struct dentry *dentry) 2254{ 2255 int error = may_delete(dir, dentry, 0); 2256 2257 if (error) 2258 return error; 2259 2260 if (!dir->i_op->unlink) 2261 return -EPERM; 2262 2263 vfs_dq_init(dir); 2264 2265 mutex_lock(&dentry->d_inode->i_mutex); 2266 if (d_mountpoint(dentry)) 2267 error = -EBUSY; 2268 else { 2269 error = security_inode_unlink(dir, dentry); 2270 if (!error) 2271 error = dir->i_op->unlink(dir, dentry); 2272 } 2273 mutex_unlock(&dentry->d_inode->i_mutex); 2274 2275 /* We don't d_delete() NFS sillyrenamed files--they still exist. */ 2276 if (!error && !(dentry->d_flags & DCACHE_NFSFS_RENAMED)) { 2277 fsnotify_link_count(dentry->d_inode); 2278 d_delete(dentry); 2279 } 2280 2281 return error; 2282} 2283 2284/* 2285 * Make sure that the actual truncation of the file will occur outside its 2286 * directory's i_mutex. Truncate can take a long time if there is a lot of 2287 * writeout happening, and we don't want to prevent access to the directory 2288 * while waiting on the I/O. 2289 */ 2290static long do_unlinkat(int dfd, const char __user *pathname) 2291{ 2292 int error; 2293 char *name; 2294 struct dentry *dentry; 2295 struct nameidata nd; 2296 struct inode *inode = NULL; 2297 2298 error = user_path_parent(dfd, pathname, &nd, &name); 2299 if (error) 2300 return error; 2301 2302 error = -EISDIR; 2303 if (nd.last_type != LAST_NORM) 2304 goto exit1; 2305 2306 nd.flags &= ~LOOKUP_PARENT; 2307 2308 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); 2309 dentry = lookup_hash(&nd); 2310 error = PTR_ERR(dentry); 2311 if (!IS_ERR(dentry)) { 2312 /* Why not before? Because we want correct error value */ 2313 if (nd.last.name[nd.last.len]) 2314 goto slashes; 2315 inode = dentry->d_inode; 2316 if (inode) 2317 atomic_inc(&inode->i_count); 2318 error = mnt_want_write(nd.path.mnt); 2319 if (error) 2320 goto exit2; 2321 error = security_path_unlink(&nd.path, dentry); 2322 if (error) 2323 goto exit3; 2324 error = vfs_unlink(nd.path.dentry->d_inode, dentry); 2325exit3: 2326 mnt_drop_write(nd.path.mnt); 2327 exit2: 2328 dput(dentry); 2329 } 2330 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2331 if (inode) 2332 iput(inode); /* truncate the inode here */ 2333exit1: 2334 path_put(&nd.path); 2335 putname(name); 2336 return error; 2337 2338slashes: 2339 error = !dentry->d_inode ? -ENOENT : 2340 S_ISDIR(dentry->d_inode->i_mode) ? -EISDIR : -ENOTDIR; 2341 goto exit2; 2342} 2343 2344SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag) 2345{ 2346 if ((flag & ~AT_REMOVEDIR) != 0) 2347 return -EINVAL; 2348 2349 if (flag & AT_REMOVEDIR) 2350 return do_rmdir(dfd, pathname); 2351 2352 return do_unlinkat(dfd, pathname); 2353} 2354 2355SYSCALL_DEFINE1(unlink, const char __user *, pathname) 2356{ 2357 return do_unlinkat(AT_FDCWD, pathname); 2358} 2359 2360int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname) 2361{ 2362 int error = may_create(dir, dentry); 2363 2364 if (error) 2365 return error; 2366 2367 if (!dir->i_op->symlink) 2368 return -EPERM; 2369 2370 error = security_inode_symlink(dir, dentry, oldname); 2371 if (error) 2372 return error; 2373 2374 vfs_dq_init(dir); 2375 error = dir->i_op->symlink(dir, dentry, oldname); 2376 if (!error) 2377 fsnotify_create(dir, dentry); 2378 return error; 2379} 2380 2381SYSCALL_DEFINE3(symlinkat, const char __user *, oldname, 2382 int, newdfd, const char __user *, newname) 2383{ 2384 int error; 2385 char *from; 2386 char *to; 2387 struct dentry *dentry; 2388 struct nameidata nd; 2389 2390 from = getname(oldname); 2391 if (IS_ERR(from)) 2392 return PTR_ERR(from); 2393 2394 error = user_path_parent(newdfd, newname, &nd, &to); 2395 if (error) 2396 goto out_putname; 2397 2398 dentry = lookup_create(&nd, 0); 2399 error = PTR_ERR(dentry); 2400 if (IS_ERR(dentry)) 2401 goto out_unlock; 2402 2403 error = mnt_want_write(nd.path.mnt); 2404 if (error) 2405 goto out_dput; 2406 error = security_path_symlink(&nd.path, dentry, from); 2407 if (error) 2408 goto out_drop_write; 2409 error = vfs_symlink(nd.path.dentry->d_inode, dentry, from); 2410out_drop_write: 2411 mnt_drop_write(nd.path.mnt); 2412out_dput: 2413 dput(dentry); 2414out_unlock: 2415 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2416 path_put(&nd.path); 2417 putname(to); 2418out_putname: 2419 putname(from); 2420 return error; 2421} 2422 2423SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname) 2424{ 2425 return sys_symlinkat(oldname, AT_FDCWD, newname); 2426} 2427 2428int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry) 2429{ 2430 struct inode *inode = old_dentry->d_inode; 2431 int error; 2432 2433 if (!inode) 2434 return -ENOENT; 2435 2436 error = may_create(dir, new_dentry); 2437 if (error) 2438 return error; 2439 2440 if (dir->i_sb != inode->i_sb) 2441 return -EXDEV; 2442 2443 /* 2444 * A link to an append-only or immutable file cannot be created. 2445 */ 2446 if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) 2447 return -EPERM; 2448 if (!dir->i_op->link) 2449 return -EPERM; 2450 if (S_ISDIR(inode->i_mode)) 2451 return -EPERM; 2452 2453 error = security_inode_link(old_dentry, dir, new_dentry); 2454 if (error) 2455 return error; 2456 2457 mutex_lock(&inode->i_mutex); 2458 vfs_dq_init(dir); 2459 error = dir->i_op->link(old_dentry, dir, new_dentry); 2460 mutex_unlock(&inode->i_mutex); 2461 if (!error) 2462 fsnotify_link(dir, inode, new_dentry); 2463 return error; 2464} 2465 2466/* 2467 * Hardlinks are often used in delicate situations. We avoid 2468 * security-related surprises by not following symlinks on the 2469 * newname. --KAB 2470 * 2471 * We don't follow them on the oldname either to be compatible 2472 * with linux 2.0, and to avoid hard-linking to directories 2473 * and other special files. --ADM 2474 */ 2475SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, 2476 int, newdfd, const char __user *, newname, int, flags) 2477{ 2478 struct dentry *new_dentry; 2479 struct nameidata nd; 2480 struct path old_path; 2481 int error; 2482 char *to; 2483 2484 if ((flags & ~AT_SYMLINK_FOLLOW) != 0) 2485 return -EINVAL; 2486 2487 error = user_path_at(olddfd, oldname, 2488 flags & AT_SYMLINK_FOLLOW ? LOOKUP_FOLLOW : 0, 2489 &old_path); 2490 if (error) 2491 return error; 2492 2493 error = user_path_parent(newdfd, newname, &nd, &to); 2494 if (error) 2495 goto out; 2496 error = -EXDEV; 2497 if (old_path.mnt != nd.path.mnt) 2498 goto out_release; 2499 new_dentry = lookup_create(&nd, 0); 2500 error = PTR_ERR(new_dentry); 2501 if (IS_ERR(new_dentry)) 2502 goto out_unlock; 2503 error = mnt_want_write(nd.path.mnt); 2504 if (error) 2505 goto out_dput; 2506 error = security_path_link(old_path.dentry, &nd.path, new_dentry); 2507 if (error) 2508 goto out_drop_write; 2509 error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry); 2510out_drop_write: 2511 mnt_drop_write(nd.path.mnt); 2512out_dput: 2513 dput(new_dentry); 2514out_unlock: 2515 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); 2516out_release: 2517 path_put(&nd.path); 2518 putname(to); 2519out: 2520 path_put(&old_path); 2521 2522 return error; 2523} 2524 2525SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname) 2526{ 2527 return sys_linkat(AT_FDCWD, oldname, AT_FDCWD, newname, 0); 2528} 2529 2530/* 2531 * The worst of all namespace operations - renaming directory. "Perverted" 2532 * doesn't even start to describe it. Somebody in UCB had a heck of a trip... 2533 * Problems: 2534 * a) we can get into loop creation. Check is done in is_subdir(). 2535 * b) race potential - two innocent renames can create a loop together. 2536 * That's where 4.4 screws up. Current fix: serialization on 2537 * sb->s_vfs_rename_mutex. We might be more accurate, but that's another 2538 * story. 2539 * c) we have to lock _three_ objects - parents and victim (if it exists). 2540 * And that - after we got ->i_mutex on parents (until then we don't know 2541 * whether the target exists). Solution: try to be smart with locking 2542 * order for inodes. We rely on the fact that tree topology may change 2543 * only under ->s_vfs_rename_mutex _and_ that parent of the object we 2544 * move will be locked. Thus we can rank directories by the tree 2545 * (ancestors first) and rank all non-directories after them. 2546 * That works since everybody except rename does "lock parent, lookup, 2547 * lock child" and rename is under ->s_vfs_rename_mutex. 2548 * HOWEVER, it relies on the assumption that any object with ->lookup() 2549 * has no more than 1 dentry. If "hybrid" objects will ever appear, 2550 * we'd better make sure that there's no link(2) for them. 2551 * d) some filesystems don't support opened-but-unlinked directories, 2552 * either because of layout or because they are not ready to deal with 2553 * all cases correctly. The latter will be fixed (taking this sort of 2554 * stuff into VFS), but the former is not going away. Solution: the same 2555 * trick as in rmdir(). 2556 * e) conversion from fhandle to dentry may come in the wrong moment - when 2557 * we are removing the target. Solution: we will have to grab ->i_mutex 2558 * in the fhandle_to_dentry code. [FIXME - current nfsfh.c relies on 2559 * ->i_mutex on parents, which works but leads to some truely excessive 2560 * locking]. 2561 */ 2562static int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry, 2563 struct inode *new_dir, struct dentry *new_dentry) 2564{ 2565 int error = 0; 2566 struct inode *target; 2567 2568 /* 2569 * If we are going to change the parent - check write permissions, 2570 * we'll need to flip '..'. 2571 */ 2572 if (new_dir != old_dir) { 2573 error = inode_permission(old_dentry->d_inode, MAY_WRITE); 2574 if (error) 2575 return error; 2576 } 2577 2578 error = security_inode_rename(old_dir, old_dentry, new_dir, new_dentry); 2579 if (error) 2580 return error; 2581 2582 target = new_dentry->d_inode; 2583 if (target) { 2584 mutex_lock(&target->i_mutex); 2585 dentry_unhash(new_dentry); 2586 } 2587 if (d_mountpoint(old_dentry)||d_mountpoint(new_dentry)) 2588 error = -EBUSY; 2589 else 2590 error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry); 2591 if (target) { 2592 if (!error) 2593 target->i_flags |= S_DEAD; 2594 mutex_unlock(&target->i_mutex); 2595 if (d_unhashed(new_dentry)) 2596 d_rehash(new_dentry); 2597 dput(new_dentry); 2598 } 2599 if (!error) 2600 if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE)) 2601 d_move(old_dentry,new_dentry); 2602 return error; 2603} 2604 2605static int vfs_rename_other(struct inode *old_dir, struct dentry *old_dentry, 2606 struct inode *new_dir, struct dentry *new_dentry) 2607{ 2608 struct inode *target; 2609 int error; 2610 2611 error = security_inode_rename(old_dir, old_dentry, new_dir, new_dentry); 2612 if (error) 2613 return error; 2614 2615 dget(new_dentry); 2616 target = new_dentry->d_inode; 2617 if (target) 2618 mutex_lock(&target->i_mutex); 2619 if (d_mountpoint(old_dentry)||d_mountpoint(new_dentry)) 2620 error = -EBUSY; 2621 else 2622 error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry); 2623 if (!error) { 2624 if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE)) 2625 d_move(old_dentry, new_dentry); 2626 } 2627 if (target) 2628 mutex_unlock(&target->i_mutex); 2629 dput(new_dentry); 2630 return error; 2631} 2632 2633int vfs_rename(struct inode *old_dir, struct dentry *old_dentry, 2634 struct inode *new_dir, struct dentry *new_dentry) 2635{ 2636 int error; 2637 int is_dir = S_ISDIR(old_dentry->d_inode->i_mode); 2638 const char *old_name; 2639 2640 if (old_dentry->d_inode == new_dentry->d_inode) 2641 return 0; 2642 2643 error = may_delete(old_dir, old_dentry, is_dir); 2644 if (error) 2645 return error; 2646 2647 if (!new_dentry->d_inode) 2648 error = may_create(new_dir, new_dentry); 2649 else 2650 error = may_delete(new_dir, new_dentry, is_dir); 2651 if (error) 2652 return error; 2653 2654 if (!old_dir->i_op->rename) 2655 return -EPERM; 2656 2657 vfs_dq_init(old_dir); 2658 vfs_dq_init(new_dir); 2659 2660 old_name = fsnotify_oldname_init(old_dentry->d_name.name); 2661 2662 if (is_dir) 2663 error = vfs_rename_dir(old_dir,old_dentry,new_dir,new_dentry); 2664 else 2665 error = vfs_rename_other(old_dir,old_dentry,new_dir,new_dentry); 2666 if (!error) { 2667 const char *new_name = old_dentry->d_name.name; 2668 fsnotify_move(old_dir, new_dir, old_name, new_name, is_dir, 2669 new_dentry->d_inode, old_dentry); 2670 } 2671 fsnotify_oldname_free(old_name); 2672 2673 return error; 2674} 2675 2676SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname, 2677 int, newdfd, const char __user *, newname) 2678{ 2679 struct dentry *old_dir, *new_dir; 2680 struct dentry *old_dentry, *new_dentry; 2681 struct dentry *trap; 2682 struct nameidata oldnd, newnd; 2683 char *from; 2684 char *to; 2685 int error; 2686 2687 error = user_path_parent(olddfd, oldname, &oldnd, &from); 2688 if (error) 2689 goto exit; 2690 2691 error = user_path_parent(newdfd, newname, &newnd, &to); 2692 if (error) 2693 goto exit1; 2694 2695 error = -EXDEV; 2696 if (oldnd.path.mnt != newnd.path.mnt) 2697 goto exit2; 2698 2699 old_dir = oldnd.path.dentry; 2700 error = -EBUSY; 2701 if (oldnd.last_type != LAST_NORM) 2702 goto exit2; 2703 2704 new_dir = newnd.path.dentry; 2705 if (newnd.last_type != LAST_NORM) 2706 goto exit2; 2707 2708 oldnd.flags &= ~LOOKUP_PARENT; 2709 newnd.flags &= ~LOOKUP_PARENT; 2710 newnd.flags |= LOOKUP_RENAME_TARGET; 2711 2712 trap = lock_rename(new_dir, old_dir); 2713 2714 old_dentry = lookup_hash(&oldnd); 2715 error = PTR_ERR(old_dentry); 2716 if (IS_ERR(old_dentry)) 2717 goto exit3; 2718 /* source must exist */ 2719 error = -ENOENT; 2720 if (!old_dentry->d_inode) 2721 goto exit4; 2722 /* unless the source is a directory trailing slashes give -ENOTDIR */ 2723 if (!S_ISDIR(old_dentry->d_inode->i_mode)) { 2724 error = -ENOTDIR; 2725 if (oldnd.last.name[oldnd.last.len]) 2726 goto exit4; 2727 if (newnd.last.name[newnd.last.len]) 2728 goto exit4; 2729 } 2730 /* source should not be ancestor of target */ 2731 error = -EINVAL; 2732 if (old_dentry == trap) 2733 goto exit4; 2734 new_dentry = lookup_hash(&newnd); 2735 error = PTR_ERR(new_dentry); 2736 if (IS_ERR(new_dentry)) 2737 goto exit4; 2738 /* target should not be an ancestor of source */ 2739 error = -ENOTEMPTY; 2740 if (new_dentry == trap) 2741 goto exit5; 2742 2743 error = mnt_want_write(oldnd.path.mnt); 2744 if (error) 2745 goto exit5; 2746 error = security_path_rename(&oldnd.path, old_dentry, 2747 &newnd.path, new_dentry); 2748 if (error) 2749 goto exit6; 2750 error = vfs_rename(old_dir->d_inode, old_dentry, 2751 new_dir->d_inode, new_dentry); 2752exit6: 2753 mnt_drop_write(oldnd.path.mnt); 2754exit5: 2755 dput(new_dentry); 2756exit4: 2757 dput(old_dentry); 2758exit3: 2759 unlock_rename(new_dir, old_dir); 2760exit2: 2761 path_put(&newnd.path); 2762 putname(to); 2763exit1: 2764 path_put(&oldnd.path); 2765 putname(from); 2766exit: 2767 return error; 2768} 2769 2770SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname) 2771{ 2772 return sys_renameat(AT_FDCWD, oldname, AT_FDCWD, newname); 2773} 2774 2775int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link) 2776{ 2777 int len; 2778 2779 len = PTR_ERR(link); 2780 if (IS_ERR(link)) 2781 goto out; 2782 2783 len = strlen(link); 2784 if (len > (unsigned) buflen) 2785 len = buflen; 2786 if (copy_to_user(buffer, link, len)) 2787 len = -EFAULT; 2788out: 2789 return len; 2790} 2791 2792/* 2793 * A helper for ->readlink(). This should be used *ONLY* for symlinks that 2794 * have ->follow_link() touching nd only in nd_set_link(). Using (or not 2795 * using) it for any given inode is up to filesystem. 2796 */ 2797int generic_readlink(struct dentry *dentry, char __user *buffer, int buflen) 2798{ 2799 struct nameidata nd; 2800 void *cookie; 2801 int res; 2802 2803 nd.depth = 0; 2804 cookie = dentry->d_inode->i_op->follow_link(dentry, &nd); 2805 if (IS_ERR(cookie)) 2806 return PTR_ERR(cookie); 2807 2808 res = vfs_readlink(dentry, buffer, buflen, nd_get_link(&nd)); 2809 if (dentry->d_inode->i_op->put_link) 2810 dentry->d_inode->i_op->put_link(dentry, &nd, cookie); 2811 return res; 2812} 2813 2814int vfs_follow_link(struct nameidata *nd, const char *link) 2815{ 2816 return __vfs_follow_link(nd, link); 2817} 2818 2819/* get the link contents into pagecache */ 2820static char *page_getlink(struct dentry * dentry, struct page **ppage) 2821{ 2822 char *kaddr; 2823 struct page *page; 2824 struct address_space *mapping = dentry->d_inode->i_mapping; 2825 page = read_mapping_page(mapping, 0, NULL); 2826 if (IS_ERR(page)) 2827 return (char*)page; 2828 *ppage = page; 2829 kaddr = kmap(page); 2830 nd_terminate_link(kaddr, dentry->d_inode->i_size, PAGE_SIZE - 1); 2831 return kaddr; 2832} 2833 2834int page_readlink(struct dentry *dentry, char __user *buffer, int buflen) 2835{ 2836 struct page *page = NULL; 2837 char *s = page_getlink(dentry, &page); 2838 int res = vfs_readlink(dentry,buffer,buflen,s); 2839 if (page) { 2840 kunmap(page); 2841 page_cache_release(page); 2842 } 2843 return res; 2844} 2845 2846void *page_follow_link_light(struct dentry *dentry, struct nameidata *nd) 2847{ 2848 struct page *page = NULL; 2849 nd_set_link(nd, page_getlink(dentry, &page)); 2850 return page; 2851} 2852 2853void page_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) 2854{ 2855 struct page *page = cookie; 2856 2857 if (page) { 2858 kunmap(page); 2859 page_cache_release(page); 2860 } 2861} 2862 2863/* 2864 * The nofs argument instructs pagecache_write_begin to pass AOP_FLAG_NOFS 2865 */ 2866int __page_symlink(struct inode *inode, const char *symname, int len, int nofs) 2867{ 2868 struct address_space *mapping = inode->i_mapping; 2869 struct page *page; 2870 void *fsdata; 2871 int err; 2872 char *kaddr; 2873 unsigned int flags = AOP_FLAG_UNINTERRUPTIBLE; 2874 if (nofs) 2875 flags |= AOP_FLAG_NOFS; 2876 2877retry: 2878 err = pagecache_write_begin(NULL, mapping, 0, len-1, 2879 flags, &page, &fsdata); 2880 if (err) 2881 goto fail; 2882 2883 kaddr = kmap_atomic(page, KM_USER0); 2884 memcpy(kaddr, symname, len-1); 2885 kunmap_atomic(kaddr, KM_USER0); 2886 2887 err = pagecache_write_end(NULL, mapping, 0, len-1, len-1, 2888 page, fsdata); 2889 if (err < 0) 2890 goto fail; 2891 if (err < len-1) 2892 goto retry; 2893 2894 mark_inode_dirty(inode); 2895 return 0; 2896fail: 2897 return err; 2898} 2899 2900int page_symlink(struct inode *inode, const char *symname, int len) 2901{ 2902 return __page_symlink(inode, symname, len, 2903 !(mapping_gfp_mask(inode->i_mapping) & __GFP_FS)); 2904} 2905 2906const struct inode_operations page_symlink_inode_operations = { 2907 .readlink = generic_readlink, 2908 .follow_link = page_follow_link_light, 2909 .put_link = page_put_link, 2910}; 2911 2912EXPORT_SYMBOL(user_path_at); 2913EXPORT_SYMBOL(follow_down); 2914EXPORT_SYMBOL(follow_up); 2915EXPORT_SYMBOL(get_write_access); /* binfmt_aout */ 2916EXPORT_SYMBOL(getname); 2917EXPORT_SYMBOL(lock_rename); 2918EXPORT_SYMBOL(lookup_one_len); 2919EXPORT_SYMBOL(page_follow_link_light); 2920EXPORT_SYMBOL(page_put_link); 2921EXPORT_SYMBOL(page_readlink); 2922EXPORT_SYMBOL(__page_symlink); 2923EXPORT_SYMBOL(page_symlink); 2924EXPORT_SYMBOL(page_symlink_inode_operations); 2925EXPORT_SYMBOL(path_lookup); 2926EXPORT_SYMBOL(kern_path); 2927EXPORT_SYMBOL(vfs_path_lookup); 2928EXPORT_SYMBOL(inode_permission); 2929EXPORT_SYMBOL(file_permission); 2930EXPORT_SYMBOL(unlock_rename); 2931EXPORT_SYMBOL(vfs_create); 2932EXPORT_SYMBOL(vfs_follow_link); 2933EXPORT_SYMBOL(vfs_link); 2934EXPORT_SYMBOL(vfs_mkdir); 2935EXPORT_SYMBOL(vfs_mknod); 2936EXPORT_SYMBOL(generic_permission); 2937EXPORT_SYMBOL(vfs_readlink); 2938EXPORT_SYMBOL(vfs_rename); 2939EXPORT_SYMBOL(vfs_rmdir); 2940EXPORT_SYMBOL(vfs_symlink); 2941EXPORT_SYMBOL(vfs_unlink); 2942EXPORT_SYMBOL(dentry_unhash); 2943EXPORT_SYMBOL(generic_readlink);