hostfs: Use __getname() in follow_link
Be consistent with all other functions in hostfs and just use __getname(). Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
@ -142,21 +142,19 @@ static char *follow_link(char *link)
|
|||||||
int len, n;
|
int len, n;
|
||||||
char *name, *resolved, *end;
|
char *name, *resolved, *end;
|
||||||
|
|
||||||
len = 64;
|
name = __getname();
|
||||||
while (1) {
|
if (!name) {
|
||||||
n = -ENOMEM;
|
n = -ENOMEM;
|
||||||
name = kmalloc(len, GFP_KERNEL);
|
goto out_free;
|
||||||
if (name == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
n = hostfs_do_readlink(link, name, len);
|
|
||||||
if (n < len)
|
|
||||||
break;
|
|
||||||
len *= 2;
|
|
||||||
kfree(name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
n = hostfs_do_readlink(link, name, PATH_MAX);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
else if (n == PATH_MAX) {
|
||||||
|
n = -E2BIG;
|
||||||
|
goto out_free;
|
||||||
|
}
|
||||||
|
|
||||||
if (*name == '/')
|
if (*name == '/')
|
||||||
return name;
|
return name;
|
||||||
@ -175,13 +173,12 @@ static char *follow_link(char *link)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sprintf(resolved, "%s%s", link, name);
|
sprintf(resolved, "%s%s", link, name);
|
||||||
kfree(name);
|
__putname(name);
|
||||||
kfree(link);
|
kfree(link);
|
||||||
return resolved;
|
return resolved;
|
||||||
|
|
||||||
out_free:
|
out_free:
|
||||||
kfree(name);
|
__putname(name);
|
||||||
out:
|
|
||||||
return ERR_PTR(n);
|
return ERR_PTR(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user