Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753847AbbKYNCS (ORCPT ); Wed, 25 Nov 2015 08:02:18 -0500 Received: from mail-wm0-f49.google.com ([74.125.82.49]:34102 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753054AbbKYNCQ (ORCPT ); Wed, 25 Nov 2015 08:02:16 -0500 Subject: Re: [PATCH v5 4/7] usb: gadget: f_midi: fix leak on failed to enqueue out requests To: Robert Baldyga , linux-usb@vger.kernel.org References: <1447177929-22252-1-git-send-email-eu@felipetonello.com> <1447177929-22252-5-git-send-email-eu@felipetonello.com> <56459FCF.8090409@samsung.com> <5649B92B.2010202@felipetonello.com> <5649C168.2030805@samsung.com> Cc: linux-kernel@vger.kernel.org, Felipe Balbi , Greg Kroah-Hartman , Clemens Ladisch From: Felipe Ferreri Tonello Message-ID: <5655B154.8060806@felipetonello.com> Date: Wed, 25 Nov 2015 13:02:12 +0000 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: <5649C168.2030805@samsung.com> Content-Type: multipart/mixed; boundary="------------030709020902050002030604" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 7430 Lines: 150 This is a multi-part message in MIME format. --------------030709020902050002030604 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Hi Robert, On 16/11/15 11:43, Robert Baldyga wrote: > On 11/16/2015 12:08 PM, Felipe Ferreri Tonello wrote: >> Hi Robert, >> >> On 13/11/15 08:31, Robert Baldyga wrote: >>> Hi Felipe, >>> >>> On 11/10/2015 06:52 PM, Felipe F. Tonello wrote: >>>> This patch fixes a memory leak that occurs when an endpoint fails to enqueue >>>> the request. If that happens the complete function will never be called, thus >>>> never freeing the request. >>>> >>>> Signed-off-by: Felipe F. Tonello >>>> --- >>>> drivers/usb/gadget/function/f_midi.c | 1 + >>>> 1 file changed, 1 insertion(+) >>>> >>>> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c >>>> index f36db2d..76ea53c 100644 >>>> --- a/drivers/usb/gadget/function/f_midi.c >>>> +++ b/drivers/usb/gadget/function/f_midi.c >>>> @@ -345,6 +345,7 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) >>>> if (err) { >>>> ERROR(midi, "%s queue req: %d\n", >>>> midi->out_ep->name, err); >>>> + free_ep_req(midi->out_ep, req); >>>> } >>>> } >>>> >>>> >>> >>> There is one more thing I haven't noticed before. We can have situation >>> when all requests were allocated successfully, but their allocation >>> failed. What we get then is set_alt() returning 0, while no request is >>> allocated, hence the function is, in fact, inactive. >> >> Right. So in this case should we return some error? We can restrict the >> function to work iff allocates the 'qlen' number of allocations, >> otherwise returns an error and frees all other requests (IN and OUT). >> > > Yes, IMO it's a proper solution. When user sets qlen to given value he > expects that exact number of requests to be allocated and enqueued, and > if we cannot do that we should consider this as an error. > Ok. I will do that in a new patch on v6 since this patch is correct anyway and Blabi already applied to his test branch. Felipe --------------030709020902050002030604 Content-Type: application/pgp-keys; name="0x92698E6A.asc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0x92698E6A.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 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 =VNJV -----END PGP PUBLIC KEY BLOCK----- --------------030709020902050002030604-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/