lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 170/639] staging: most: cdev: add missing check for cdev_add failure
    Date
    From: Colin Ian King <colin.king@canonical.com>

    [ Upstream commit 5ae890780e1b4d08f2c0c5d4ea96fc3928fc0ee9 ]

    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: 9bc79bbcd0c5 ("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>
    ---
    drivers/staging/most/cdev/cdev.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/staging/most/cdev/cdev.c b/drivers/staging/most/cdev/cdev.c
    index 0b48677fa958a..27d58b55b8108 100644
    --- a/drivers/staging/most/cdev/cdev.c
    +++ b/drivers/staging/most/cdev/cdev.c
    @@ -453,7 +453,9 @@ static int comp_probe(struct most_interface *iface, int channel_id,
    c->devno = MKDEV(comp.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;
    @@ -485,6 +487,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(&comp.minor_id, current_minor);
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:08    [W:4.290 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site