diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 04474b8ccf0acb6be40e9a1686203d1da6bb59a3..7b8f17ee52243171fac7b30284c8986725a8232c 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1214,22 +1214,17 @@ static void nfsd_symlink(struct dentry *parent, const char *name,
 {
 	struct inode *dir = parent->d_inode;
 	struct dentry *dentry;
-	int ret = -ENOMEM;
+	int ret;
 
 	inode_lock(dir);
 	dentry = d_alloc_name(parent, name);
 	if (!dentry)
-		goto out_err;
+		goto out;
 	ret = __nfsd_symlink(d_inode(parent), dentry, S_IFLNK | 0777, content);
 	if (ret)
-		goto out_err;
+		dput(dentry);
 out:
 	inode_unlock(dir);
-	return;
-out_err:
-	dput(dentry);
-	dentry = ERR_PTR(ret);
-	goto out;
 }
 #else
 static inline void nfsd_symlink(struct dentry *parent, const char *name,