OSDN Git Service

usb: gadget: f_uac2: improve error handling
authorPeter Chen <peter.chen@nxp.com>
Wed, 4 Jan 2017 02:19:22 +0000 (10:19 +0800)
committerAjay Agarwal <ajaya@codeaurora.org>
Wed, 9 Jan 2019 04:46:54 +0000 (10:16 +0530)
If it is out of memory, we should return -ENOMEM;

Change-Id: Ibc46944ebf72d0dc2191191dbd1c643eac302fe0
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Git-commit: 88f950a69174eca60d3e7df558ecb53d6d4d4e6f
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
drivers/usb/gadget/function/f_uac2.c

index ac19065..380092f 100644 (file)
@@ -1099,6 +1099,7 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
        prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL);
        if (!prm->rbuf) {
                prm->max_psize = 0;
+               ret = -ENOMEM;
                goto err_free_descs;
        }
 
@@ -1107,20 +1108,21 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
        prm->rbuf = kzalloc(prm->max_psize * USB_XFERS, GFP_KERNEL);
        if (!prm->rbuf) {
                prm->max_psize = 0;
-               goto err;
+               ret = -ENOMEM;
+               goto err_no_memory;
        }
 
        ret = alsa_uac2_init(agdev);
        if (ret)
-               goto err;
+               goto err_no_memory;
        return 0;
 
-err:
+err_no_memory:
        kfree(agdev->uac2.p_prm.rbuf);
        kfree(agdev->uac2.c_prm.rbuf);
 err_free_descs:
        usb_free_all_descriptors(fn);
-       return -EINVAL;
+       return ret;
 }
 
 static int