staging: vme: fix memory leak in vme_user_probe()
If vme_master_request() returns NULL when it failed, it need to free buffers for master. And also removes unreachable code in vme_user_probe(). Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d06fb58cb6
commit
1a52489318
|
@ -776,7 +776,8 @@ static int vme_user_probe(struct vme_dev *vdev)
|
|||
image[i].kern_buf = kmalloc(image[i].size_buf, GFP_KERNEL);
|
||||
if (image[i].kern_buf == NULL) {
|
||||
err = -ENOMEM;
|
||||
goto err_master_buf;
|
||||
vme_master_free(image[i].resource);
|
||||
goto err_master;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -819,8 +820,6 @@ static int vme_user_probe(struct vme_dev *vdev)
|
|||
|
||||
return 0;
|
||||
|
||||
/* Ensure counter set correcty to destroy all sysfs devices */
|
||||
i = VME_DEVS;
|
||||
err_sysfs:
|
||||
while (i > 0) {
|
||||
i--;
|
||||
|
@ -830,12 +829,10 @@ err_sysfs:
|
|||
|
||||
/* Ensure counter set correcty to unalloc all master windows */
|
||||
i = MASTER_MAX + 1;
|
||||
err_master_buf:
|
||||
for (i = MASTER_MINOR; i < (MASTER_MAX + 1); i++)
|
||||
kfree(image[i].kern_buf);
|
||||
err_master:
|
||||
while (i > MASTER_MINOR) {
|
||||
i--;
|
||||
kfree(image[i].kern_buf);
|
||||
vme_master_free(image[i].resource);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue