Sysfs: fix possible memleak in sysfs_follow_link
There is the possiblity of a memory leak if a page is allocated and if sysfs_getlink() fails in the sysfs_follow_link. Signed-off-by: Armin Kuster <akuster@mvista.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
b22813b373
commit
557411eb2c
|
@ -192,8 +192,11 @@ static void *sysfs_follow_link(struct dentry *dentry, struct nameidata *nd)
|
||||||
{
|
{
|
||||||
int error = -ENOMEM;
|
int error = -ENOMEM;
|
||||||
unsigned long page = get_zeroed_page(GFP_KERNEL);
|
unsigned long page = get_zeroed_page(GFP_KERNEL);
|
||||||
if (page)
|
if (page) {
|
||||||
error = sysfs_getlink(dentry, (char *) page);
|
error = sysfs_getlink(dentry, (char *) page);
|
||||||
|
if (error < 0)
|
||||||
|
free_page((unsigned long)page);
|
||||||
|
}
|
||||||
nd_set_link(nd, error ? ERR_PTR(error) : (char *)page);
|
nd_set_link(nd, error ? ERR_PTR(error) : (char *)page);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue