mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
staging: most: cdev: add missing check for cdev_add failure
[ Upstream commit5ae890780e] Currently the call to cdev_add is missing a check for failure. Fix this by checking for failure and exiting via a new error path that ensures the allocated comp_channel struct is kfree'd. Detected by CoverityScan, CID#1462359 ("Unchecked return value") Fixes:9bc79bbcd0("Staging: most: add MOST driver's aim-cdev module") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
@@ -451,7 +451,9 @@ static int aim_probe(struct most_interface *iface, int channel_id,
|
||||
c->devno = MKDEV(major, current_minor);
|
||||
cdev_init(&c->cdev, &channel_fops);
|
||||
c->cdev.owner = THIS_MODULE;
|
||||
cdev_add(&c->cdev, c->devno, 1);
|
||||
retval = cdev_add(&c->cdev, c->devno, 1);
|
||||
if (retval < 0)
|
||||
goto err_free_c;
|
||||
c->iface = iface;
|
||||
c->cfg = cfg;
|
||||
c->channel_id = channel_id;
|
||||
@@ -487,6 +489,7 @@ error_create_device:
|
||||
list_del(&c->list);
|
||||
error_alloc_kfifo:
|
||||
cdev_del(&c->cdev);
|
||||
err_free_c:
|
||||
kfree(c);
|
||||
error_alloc_channel:
|
||||
ida_simple_remove(&minor_id, current_minor);
|
||||
|
||||
Reference in New Issue
Block a user