Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
[firefly-linux-kernel-4.4.55.git] / fs / jfs / namei.c
index eaaf2b511e89a64613bd281f82029ee869358484..e17545e15664d77cf5d3af35c2c34c99123b929d 100644 (file)
@@ -893,7 +893,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
        unchar *i_fastsymlink;
        s64 xlen = 0;
        int bmask = 0, xsize;
-       s64 extent = 0, xaddr;
+       s64 xaddr;
        struct metapage *mp;
        struct super_block *sb;
        struct tblock *tblk;
@@ -993,7 +993,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
                        txAbort(tid, 0);
                        goto out3;
                }
-               extent = xaddr;
                ip->i_size = ssize - 1;
                while (ssize) {
                        /* This is kind of silly since PATH_MAX == 4K */
@@ -1456,34 +1455,23 @@ static struct dentry *jfs_lookup(struct inode *dip, struct dentry *dentry, struc
        ino_t inum;
        struct inode *ip;
        struct component_name key;
-       const char *name = dentry->d_name.name;
-       int len = dentry->d_name.len;
        int rc;
 
-       jfs_info("jfs_lookup: name = %s", name);
-
-       if ((name[0] == '.') && (len == 1))
-               inum = dip->i_ino;
-       else if (strcmp(name, "..") == 0)
-               inum = PARENT(dip);
-       else {
-               if ((rc = get_UCSname(&key, dentry)))
-                       return ERR_PTR(rc);
-               rc = dtSearch(dip, &key, &inum, &btstack, JFS_LOOKUP);
-               free_UCSname(&key);
-               if (rc == -ENOENT) {
-                       d_add(dentry, NULL);
-                       return NULL;
-               } else if (rc) {
-                       jfs_err("jfs_lookup: dtSearch returned %d", rc);
-                       return ERR_PTR(rc);
-               }
-       }
-
-       ip = jfs_iget(dip->i_sb, inum);
-       if (IS_ERR(ip)) {
-               jfs_err("jfs_lookup: iget failed on inum %d", (uint) inum);
-               return ERR_CAST(ip);
+       jfs_info("jfs_lookup: name = %s", dentry->d_name.name);
+
+       if ((rc = get_UCSname(&key, dentry)))
+               return ERR_PTR(rc);
+       rc = dtSearch(dip, &key, &inum, &btstack, JFS_LOOKUP);
+       free_UCSname(&key);
+       if (rc == -ENOENT) {
+               ip = NULL;
+       } else if (rc) {
+               jfs_err("jfs_lookup: dtSearch returned %d", rc);
+               ip = ERR_PTR(rc);
+       } else {
+               ip = jfs_iget(dip->i_sb, inum);
+               if (IS_ERR(ip))
+                       jfs_err("jfs_lookup: iget failed on inum %d", (uint)inum);
        }
 
        return d_splice_alias(ip, dentry);
@@ -1548,7 +1536,7 @@ const struct inode_operations jfs_dir_inode_operations = {
        .removexattr    = jfs_removexattr,
        .setattr        = jfs_setattr,
 #ifdef CONFIG_JFS_POSIX_ACL
-       .check_acl      = jfs_check_acl,
+       .get_acl        = jfs_get_acl,
 #endif
 };
 
@@ -1597,8 +1585,6 @@ out:
 
 static int jfs_ci_revalidate(struct dentry *dentry, struct nameidata *nd)
 {
-       if (nd && nd->flags & LOOKUP_RCU)
-               return -ECHILD;
        /*
         * This is not negative dentry. Always valid.
         *
@@ -1624,10 +1610,8 @@ static int jfs_ci_revalidate(struct dentry *dentry, struct nameidata *nd)
         * case sensitive name which is specified by user if this is
         * for creation.
         */
-       if (!(nd->flags & (LOOKUP_CONTINUE | LOOKUP_PARENT))) {
-               if (nd->flags & (LOOKUP_CREATE | LOOKUP_RENAME_TARGET))
-                       return 0;
-       }
+       if (nd->flags & (LOOKUP_CREATE | LOOKUP_RENAME_TARGET))
+               return 0;
        return 1;
 }