Merge "usb: gadget: f_hid: use free_ep_req()"

This commit is contained in:
Linux Build Service Account 2019-01-03 07:43:38 -08:00 committed by Gerrit - the friendly Code Review server
commit 8e1e1a68b5
6 changed files with 13 additions and 23 deletions

View file

@ -377,7 +377,7 @@ static int f_hidg_open(struct inode *inode, struct file *fd)
static inline struct usb_request *hidg_alloc_ep_req(struct usb_ep *ep,
unsigned length)
{
return alloc_ep_req(ep, length, length);
return alloc_ep_req(ep, length);
}
static void hidg_set_report_complete(struct usb_ep *ep, struct usb_request *req)
@ -693,11 +693,8 @@ fail_free_descs:
usb_free_all_descriptors(f);
fail:
ERROR(f->config->cdev, "hidg_bind FAILED\n");
if (hidg->req != NULL) {
kfree(hidg->req->buf);
if (hidg->in_ep != NULL)
usb_ep_free_request(hidg->in_ep, hidg->req);
}
if (hidg->req != NULL)
free_ep_req(hidg->in_ep, hidg->req);
return status;
}
@ -936,8 +933,7 @@ static void hidg_unbind(struct usb_configuration *c, struct usb_function *f)
/* disable/free request and end point */
usb_ep_disable(hidg->in_ep);
kfree(hidg->req->buf);
usb_ep_free_request(hidg->in_ep, hidg->req);
free_ep_req(hidg->in_ep, hidg->req);
usb_free_all_descriptors(f);
}

View file

@ -308,9 +308,7 @@ static void disable_loopback(struct f_loopback *loop)
static inline struct usb_request *lb_alloc_ep_req(struct usb_ep *ep, int len)
{
struct f_loopback *loop = ep->driver_data;
return alloc_ep_req(ep, len, loop->buflen);
return alloc_ep_req(ep, len);
}
static int alloc_requests(struct usb_composite_dev *cdev,
@ -333,7 +331,7 @@ static int alloc_requests(struct usb_composite_dev *cdev,
if (!in_req)
goto fail;
out_req = lb_alloc_ep_req(loop->out_ep, 0);
out_req = lb_alloc_ep_req(loop->out_ep, loop->buflen);
if (!out_req)
goto fail_in;

View file

@ -207,7 +207,7 @@ static struct usb_gadget_strings *midi_strings[] = {
static inline struct usb_request *midi_alloc_ep_req(struct usb_ep *ep,
unsigned length)
{
return alloc_ep_req(ep, length, length);
return alloc_ep_req(ep, length);
}
static const uint8_t f_midi_cin_length[] = {

View file

@ -298,9 +298,7 @@ static struct usb_gadget_strings *sourcesink_strings[] = {
static inline struct usb_request *ss_alloc_ep_req(struct usb_ep *ep, int len)
{
struct f_sourcesink *ss = ep->driver_data;
return alloc_ep_req(ep, len, ss->buflen);
return alloc_ep_req(ep, len);
}
static void disable_ep(struct usb_composite_dev *cdev, struct usb_ep *ep)
@ -611,7 +609,7 @@ static int source_sink_start_ep(struct f_sourcesink *ss, bool is_in,
req = ss_alloc_ep_req(ep, size);
} else {
ep = is_in ? ss->in_ep : ss->out_ep;
req = ss_alloc_ep_req(ep, 0);
req = ss_alloc_ep_req(ep, ss->buflen);
}
if (!req)

View file

@ -14,15 +14,14 @@
#include "u_f.h"
#include <linux/usb/ch9.h>
struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len, int default_len)
struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len)
{
struct usb_request *req;
req = usb_ep_alloc_request(ep, GFP_ATOMIC);
if (req) {
req->length = len ?: default_len;
if (usb_endpoint_dir_out(ep->desc))
req->length = usb_ep_align(ep, req->length);
req->length = usb_endpoint_dir_out(ep->desc) ?
usb_ep_align(ep, len) : len;
req->buf = kmalloc(req->length, GFP_ATOMIC);
if (!req->buf) {
usb_ep_free_request(ep, req);

View file

@ -53,14 +53,13 @@ struct usb_request;
*
* @ep: the endpoint to allocate a usb_request
* @len: usb_requests's buffer suggested size
* @default_len: used if @len is not provided, ie, is 0
*
* In case @ep direction is OUT, the @len will be aligned to ep's
* wMaxPacketSize. In order to avoid memory leaks or drops, *always* use
* usb_requests's length (req->length) to refer to the allocated buffer size.
* Requests allocated via alloc_ep_req() *must* be freed by free_ep_req().
*/
struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len, int default_len);
struct usb_request *alloc_ep_req(struct usb_ep *ep, size_t len);
/* Frees a usb_request previously allocated by alloc_ep_req() */
static inline void free_ep_req(struct usb_ep *ep, struct usb_request *req)