These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / lustre / lustre / llite / symlink.c
index 3711e67..69b2036 100644 (file)
@@ -118,7 +118,7 @@ failed:
        return rc;
 }
 
-static void *ll_follow_link(struct dentry *dentry, struct nameidata *nd)
+static const char *ll_follow_link(struct dentry *dentry, void **cookie)
 {
        struct inode *inode = d_inode(dentry);
        struct ptlrpc_request *request = NULL;
@@ -126,32 +126,22 @@ static void *ll_follow_link(struct dentry *dentry, struct nameidata *nd)
        char *symname = NULL;
 
        CDEBUG(D_VFSTRACE, "VFS Op\n");
-       /* Limit the recursive symlink depth to 5 instead of default
-        * 8 links when kernel has 4k stack to prevent stack overflow.
-        * For 8k stacks we need to limit it to 7 for local servers. */
-       if (THREAD_SIZE < 8192 && current->link_count >= 6) {
-               rc = -ELOOP;
-       } else if (THREAD_SIZE == 8192 && current->link_count >= 8) {
-               rc = -ELOOP;
-       } else {
-               ll_inode_size_lock(inode);
-               rc = ll_readlink_internal(inode, &request, &symname);
-               ll_inode_size_unlock(inode);
-       }
+       ll_inode_size_lock(inode);
+       rc = ll_readlink_internal(inode, &request, &symname);
+       ll_inode_size_unlock(inode);
        if (rc) {
                ptlrpc_req_finished(request);
-               request = NULL;
-               symname = ERR_PTR(rc);
+               return ERR_PTR(rc);
        }
 
-       nd_set_link(nd, symname);
        /* symname may contain a pointer to the request message buffer,
         * we delay request releasing until ll_put_link then.
         */
-       return request;
+       *cookie = request;
+       return symname;
 }
 
-static void ll_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
+static void ll_put_link(struct inode *unused, void *cookie)
 {
        ptlrpc_req_finished(cookie);
 }