From: Richard Weinberger Date: Tue, 3 Mar 2015 22:55:49 +0000 (+0100) Subject: hostfs: Use __getname() in follow_link X-Git-Tag: v4.14-rc1~5585^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c9509924c711d45d7932548d2c632f44f64e7e3;p=platform%2Fkernel%2Flinux-rpi.git hostfs: Use __getname() in follow_link Be consistent with all other functions in hostfs and just use __getname(). Signed-off-by: Richard Weinberger --- 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); }