Be consistent with all other functions in hostfs and just
use __getname().

Signed-off-by: Richard Weinberger <rich...@nod.at>
---
 fs/hostfs/hostfs_kern.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 7260f16..c60d886 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -142,21 +142,19 @@ static char *follow_link(char *link)
        int len, n;
        char *name, *resolved, *end;
 
-       len = 64;
-       while (1) {
+       name = __getname();
+       if (!name) {
                n = -ENOMEM;
-               name = kmalloc(len, GFP_KERNEL);
-               if (name == NULL)
-                       goto out;
-
-               n = hostfs_do_readlink(link, name, len);
-               if (n < len)
-                       break;
-               len *= 2;
-               kfree(name);
+               goto out_free;
        }
+
+       n = hostfs_do_readlink(link, name, PATH_MAX);
        if (n < 0)
                goto out_free;
+       else if (n == PATH_MAX) {
+               n = -E2BIG;
+               goto out_free;
+       }
 
        if (*name == '/')
                return name;
@@ -175,13 +173,12 @@ static char *follow_link(char *link)
        }
 
        sprintf(resolved, "%s%s", link, name);
-       kfree(name);
+       __putname(name);
        kfree(link);
        return resolved;
 
  out_free:
-       kfree(name);
- out:
+       __putname(name);
        return ERR_PTR(n);
 }
 
-- 
2.3.2


------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to