usb: gadget: return -ENOMEM on allocation failure
Subsystems (2)
PATCH 1/1 usb: gadget: return -ENOMEM on allocation failure
The error handling is confusing in this function, but if you look closely it is returning success after the allocation fails. I have changed it to return -ENOMEM and re-written it to be more clear.
Fixes 37a3a533429e ('usb: gadget: OS Feature Descriptors support')
Signed-off-by Dan Carpenter <[email protected]>
drivers/usb/gadget/composite.c +5 -10
@@ -1924,24 +1924,19 @@ fail:int composite_os_desc_req_prepare (struct usb_composite_dev *cdev,struct usb_ep *ep0) { -int ret =0 ; - cdev->os_desc_req =usb_ep_alloc_request (ep0,GFP_KERNEL ); -if (!cdev->os_desc_req) { - ret =PTR_ERR (cdev->os_desc_req); - goto end; - } +if (!cdev->os_desc_req) +return -ENOMEM ;/* OS feature descriptor length <= 4kB */ cdev->os_desc_req->buf =kmalloc (4096 ,GFP_KERNEL );if (!cdev->os_desc_req->buf) { - ret =PTR_ERR (cdev->os_desc_req->buf);kfree (cdev->os_desc_req); - goto end; +return -ENOMEM ; } cdev->os_desc_req->complete = composite_setup_complete; -end: -return ret; + +return 0 ; }void composite_dev_cleanup (struct usb_composite_dev *cdev)
W dniu 21.05.2014 14:26, Dan Carpenter pisze:
Quoted 6 lines
The error handling is confusing in this function, but if you look closely it is returning success after the allocation fails. I have changed it to return
-ENOMEMand re-written it to be more clear.Fixes 37a3a533429e ('usb: gadget: OS Feature Descriptors support')Signed-off-by Dan Carpenter <[email protected]>
Quoted 40 lines
drivers/usb/gadget/composite.c +5
-11@@ -1924,24 +1924,19 @@ fail:int composite_os_desc_req_prepare (struct usb_composite_dev *cdev,struct usb_ep *ep0) { -int ret =0 ; - cdev->os_desc_req =usb_ep_alloc_request (ep0,GFP_KERNEL ); -if (!cdev->os_desc_req) { - ret =PTR_ERR (cdev->os_desc_req); - goto end; - } +if (!cdev->os_desc_req) +return -ENOMEM ;/* OS feature descriptor length <= 4kB */ cdev->os_desc_req->buf =kmalloc (4096 ,GFP_KERNEL );if (!cdev->os_desc_req->buf) { - ret =PTR_ERR (cdev->os_desc_req->buf);kfree (cdev->os_desc_req); - goto end; +return -ENOMEM ; } cdev->os_desc_req->complete = composite_setup_complete; -end: -return ret; + +return 0 ; }void composite_dev_cleanup (struct usb_composite_dev *cdev) --To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html