From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754149AbbJ0Jrt (ORCPT ); Tue, 27 Oct 2015 05:47:49 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15905 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753990AbbJ0Jro (ORCPT ); Tue, 27 Oct 2015 05:47:44 -0400 X-AuditID: cbfec7f5-f794b6d000001495-4b-562f483d0bcd Subject: Re: [PATCH v4 3/7] usb: gadget: define free_ep_req as universal function To: Felipe Ferreri Tonello , linux-usb@vger.kernel.org References: <1445878509-12084-1-git-send-email-eu@felipetonello.com> <1445878509-12084-4-git-send-email-eu@felipetonello.com> <562F1F7E.3040908@samsung.com> <562F4156.50104@felipetonello.com> Cc: linux-kernel@vger.kernel.org, Felipe Balbi , Greg Kroah-Hartman , Andrzej Pietrasiewicz , Clemens Ladisch From: Robert Baldyga Message-id: <562F483C.9000307@samsung.com> Date: Tue, 27 Oct 2015 10:47:40 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-version: 1.0 In-reply-to: <562F4156.50104@felipetonello.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrALMWRmVeSWpSXmKPExsVy+t/xK7q2HvphBtOnSFrMetnOYnHwfr3F khMPmSw6559lt2hevJ7N4vKuOWwWi5a1Mjuwe9z9+pDd48eKfmaP/XPXsHv0bVnF6HH8xnYm j8+b5ALYorhsUlJzMstSi/TtErgyjix6wFpwV7HiwJlutgbGx9JdjJwcEgImEjeWrGCBsMUk Ltxbz9bFyMUhJLCUUWLt6vUsEM4zRon3c34wgVQJCwRL/DmzmRnEFhHwkZiz5iEzRNFhRonH 7YfYQRxmgZOMEh3P+tlAqtgEdCS2fJ/ACGLzCmhJdE/+CRZnEVCV+LpuB5gtKhAhMXFCAytE jaDEj8n3wG7iFNCX+H+3HyjOATRUT+L+RS2QMLOAvMTmNW+ZJzAKzELSMQuhahaSqgWMzKsY RVNLkwuKk9JzjfSKE3OLS/PS9ZLzczcxQsL96w7GpcesDjEKcDAq8fAaVOiFCbEmlhVX5h5i lOBgVhLhFdTRDxPiTUmsrEotyo8vKs1JLT7EKM3BoiTOO3PX+xAhgfTEktTs1NSC1CKYLBMH p1QDY+osm3XnTibcXZ22SMhr9zv+N1NEmN/z7Dl74x3bxut7q5I/PGA977ukVLK7YY7l7QK7 h8fnKmzOd7R2v6SsOX1miqKVa1CcRZWvj+PlSIE/c9+HhS9Vnh3s/UpS7q/CH63qtREMCuFa QbW1Vlc/r7DosHgTfYm/vmmBwqEHKUafe0I0Lm0+p8RSnJFoqMVcVJwIAMe0T+hzAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/27/2015 10:18 AM, Felipe Ferreri Tonello wrote: > Hi Robert, > > On 27/10/15 06:53, Robert Baldyga wrote: >> On 10/26/2015 05:55 PM, Felipe F. Tonello wrote: >>> This function is shared between gadget functions, so this avoid unnecessary >>> duplicated code and potentially avoid memory leaks. >>> >>> Signed-off-by: Felipe F. Tonello >>> --- >>> drivers/usb/gadget/function/f_midi.c | 6 ------ >>> drivers/usb/gadget/function/f_sourcesink.c | 6 ------ >>> drivers/usb/gadget/function/g_zero.h | 1 - >>> drivers/usb/gadget/u_f.c | 8 ++++++++ >>> drivers/usb/gadget/u_f.h | 3 +-- >>> 5 files changed, 9 insertions(+), 15 deletions(-) >>> >>> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c >>> index c19f154..4c01c8a 100644 >>> --- a/drivers/usb/gadget/function/f_midi.c >>> +++ b/drivers/usb/gadget/function/f_midi.c >>> @@ -202,12 +202,6 @@ static inline struct usb_request *midi_alloc_ep_req(struct usb_ep *ep, >>> return alloc_ep_req(ep, length, length); >>> } >>> >>> -static void free_ep_req(struct usb_ep *ep, struct usb_request *req) >>> -{ >>> - kfree(req->buf); >>> - usb_ep_free_request(ep, req); >>> -} >>> - >>> static const uint8_t f_midi_cin_length[] = { >>> 0, 0, 2, 3, 3, 1, 2, 3, 3, 3, 3, 3, 2, 2, 3, 1 >>> }; >>> diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c >>> index 3a5ae99..eedea7f 100644 >>> --- a/drivers/usb/gadget/function/f_sourcesink.c >>> +++ b/drivers/usb/gadget/function/f_sourcesink.c >>> @@ -307,12 +307,6 @@ static inline struct usb_request *ss_alloc_ep_req(struct usb_ep *ep, int len) >>> return alloc_ep_req(ep, len, buflen); >>> } >>> >>> -void free_ep_req(struct usb_ep *ep, struct usb_request *req) >>> -{ >>> - kfree(req->buf); >>> - usb_ep_free_request(ep, req); >>> -} >>> - >>> static void disable_ep(struct usb_composite_dev *cdev, struct usb_ep *ep) >>> { >>> int value; >>> diff --git a/drivers/usb/gadget/function/g_zero.h b/drivers/usb/gadget/function/g_zero.h >>> index 15f1809..5ed90b4 100644 >>> --- a/drivers/usb/gadget/function/g_zero.h >>> +++ b/drivers/usb/gadget/function/g_zero.h >>> @@ -59,7 +59,6 @@ void lb_modexit(void); >>> int lb_modinit(void); >>> >>> /* common utilities */ >>> -void free_ep_req(struct usb_ep *ep, struct usb_request *req); >>> void disable_endpoints(struct usb_composite_dev *cdev, >>> struct usb_ep *in, struct usb_ep *out, >>> struct usb_ep *iso_in, struct usb_ep *iso_out); >>> diff --git a/drivers/usb/gadget/u_f.c b/drivers/usb/gadget/u_f.c >>> index c6276f0..f78bd1f 100644 >>> --- a/drivers/usb/gadget/u_f.c >>> +++ b/drivers/usb/gadget/u_f.c >>> @@ -14,6 +14,7 @@ >>> #include >>> #include "u_f.h" >>> >>> +/* Requests allocated via alloc_ep_req() must be freed by free_ep_req(). */ >>> struct usb_request *alloc_ep_req(struct usb_ep *ep, int len, int default_len) >>> { >>> struct usb_request *req; >>> @@ -30,3 +31,10 @@ struct usb_request *alloc_ep_req(struct usb_ep *ep, int len, int default_len) >>> return req; >>> } >>> EXPORT_SYMBOL_GPL(alloc_ep_req); >>> + >>> +void free_ep_req(struct usb_ep *ep, struct usb_request *req) >>> +{ >>> + kfree(req->buf); >>> + usb_ep_free_request(ep, req); >>> +} >>> +EXPORT_SYMBOL_GPL(free_ep_req); >>> diff --git a/drivers/usb/gadget/u_f.h b/drivers/usb/gadget/u_f.h >>> index 1d5f0eb..2a1a6fb 100644 >>> --- a/drivers/usb/gadget/u_f.h >>> +++ b/drivers/usb/gadget/u_f.h >>> @@ -46,7 +46,6 @@ struct usb_ep; >>> struct usb_request; >>> >>> struct usb_request *alloc_ep_req(struct usb_ep *ep, int len, int default_len); >>> +void free_ep_req(struct usb_ep *ep, struct usb_request *req); >>> >>> #endif /* __U_F_H__ */ >>> - >>> - >>> >> >> Isn't it simple enough to be static inline? > > inline yes. And the compiler will do it automatically. But I can add it > for clarity. No, compiler will never make function inline when you export its symbol. To make it inline you should place it in header. > > Make it static it doesn't make sense. This function is exported in the > kernel. > Best regards, Robert