From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755687AbbIYJC5 (ORCPT ); Fri, 25 Sep 2015 05:02:57 -0400 Received: from mail-by2on0103.outbound.protection.outlook.com ([207.46.100.103]:11448 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755414AbbIYJCw (ORCPT ); Fri, 25 Sep 2015 05:02:52 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; samsung.com; dkim=none (message not signed) header.d=none;samsung.com; dmarc=none action=none header.from=freescale.com; Date: Fri, 25 Sep 2015 17:02:33 +0800 From: Peter Chen To: Felipe Tonello CC: USB list , Kernel development list , Greg Kroah-Hartman , Felipe Balbi , "Andrzej Pietrasiewicz" Subject: Re: [PATCH 3/3] usb: gadget: f_midi: free request when usb_ep_queue fails Message-ID: <20150925090232.GB19496@shlinux2> References: <1442948350-31702-1-git-send-email-eu@felipetonello.com> <1442948350-31702-3-git-send-email-eu@felipetonello.com> <20150923070917.GA16159@shlinux2> <20150924012001.GB10369@shlinux2> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD003;1:+BrGD+duyzdyBa/EHfiLYTufbrBG3krAA7/KIg9U2aWe5lhHv/AgWm1CNVfzNU8aRtLj1MAX29hg5mU/J0Symqy5R/jeHY145Ic/8ee0pLIULcbOVsf8g9j0ZJn8jnrQlvLvqm9rzIElguCrpmP1meRbulBQ5NSj5UeeuTrqOXEC6nQWV8jtJ6M+19jTzvVY9S4DI4Pa+hCS4jgb2QtY6Lr/z/TbC8/koIPONQYem9ojjjoKZCKImGNAWxLZE279Xw2Pij5Dav3WPdEsO75wN97eXsPzirnQ9klOrs0Y4h5mTuup9tCE8udH/289piVRdryliZY8vDJgqnGSd2XFlpegRNy5XRBQUn8hHoNpNGpGHCtXq7NtSF+xa59PIA5b X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1110001)(1109001)(339900001)(377454003)(199003)(24454002)(189002)(106466001)(33656002)(50986999)(76176999)(54356999)(83506001)(93886004)(87936001)(85426001)(33716001)(46102003)(105606002)(4001350100001)(86362001)(19580405001)(97736004)(5001920100001)(19580395003)(5001830100001)(2950100001)(11100500001)(110136002)(50466002)(81156007)(77156002)(62966003)(68736005)(5001860100001)(5007970100001)(97756001)(23726002)(5001960100002)(46406003)(92566002)(47776003)(6806005)(4001540100001)(77096005)(64706001)(104016004)(69596002)(189998001);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR03MB483;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB483;2:b35Ey4Vj7CeYSXKvtmeaBryEMdW3PqVFIJ32bBDoOWSl6/eY6D1Yhex1Osa/qB/9pYdg7s4tw6RoI2tKTZF0a47dU+UoIaK0I1VfgK5Rwp5aHVDQgPYuu35AIRVQ3k6AqGvWuSc2aMrx1Eop0sxO11qPX1BRS6gwTc87rxeyLqU=;3:A0UYEQZ5XYgDuFLdoxBpYSeeI+d6UtEdM/dz6zuGXxhVmDEIOYdDxJStDHtTU7YnOGtVzF6Z/J7iBzCEIPyC0SayyveJ6/FUkLqTtwoNZ0Jn+9dPdo1Wx2AvWzlbsI8xpciw0hyDWA+KSZD4WOS67eKe/RXcCcjPKLMJSAw3c1JckL7+5lHh7hD0kELzwJknaPHz3hhQ+vaiAy7WeMFSlV76hS4qlTkfuuXLjei/4bs=;25:S5bPboEOjy0bWUrSeRZhYvPlXCG9t05L81Y7m3VlPbmEElzQs09qWV5R2ZlzzHzTEwoRdbp+ayvXuuvQthPMqI5Ly2xHINDqqaTYdaUEuMCgJs3VT9Sm2VZjUI4AYz8ygWCN8KjsRm9QEOTEvX193KYshrg1WzTl1KxO2sJ3hu31KDK/cdS6Ql9iPiHstEQol6f0lfJDQ+CrEV+lNftsOJSDfVwFwPnHKppbtf0QvkKfryFGBNPuj42Hfm3/4ezghCo0ev/XxQUff+jMXchHIA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB483; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB483;20:i8kSR1Jz+IM5oUROc9u35n951bOwXfe/8lPMfkmJCy0yPf7AxNMwEUEXV6NBMdbTo1FGtN8U65k4XtMJzEpa+EOrCz8GEC6Iyj1iq3DMb3Mwk4d05dnNDg1D3nPQChzBGQJKFo+5qzMoPA8mFxqEAm8adO7r40GTRd6OkexAhW5HJFLt5ng4srDyRP8w2fiXAFI+4InSSs66Kdfh+NkJoN6y15/BaSQOmdPSFrVjtN7wl67KzQwzKBp3h1wq6ui5Kpy02iA50bK8xjyN3VxexRyWm8+hv/+QHPv4ImL5CXSYzYJjw63uYjqKALAIur2LYqDfbRQvvoK8imBgzcb+O4KVIndJJjYTeznGYVM5+6Q=;4:A9++9spp/lcJbSoAs9GJuB0Qxp8LF6uxrNTqN9Bx6RhdHwbfpxUoSjIYDRCnLo0HJHlGPUnd+9axF9ukrzSBNzhEiCq9JeWLl3nMmuX3ParoSWfS1AwTrdYMFbfHnQZXZ6U4x3/UYjrQMJBHNwhFbugRlbVbhZcM3uTwgsZiVeIgR6+Yaa7aw6jCvmrJ1PqhmBJwhpDUsADhObnDz6cJX05S3iFp7ej45mahIjzLjrAeMCkG1RbFDYER+S0TjkKpABu7azJjqU12OoWhXe1da6+ZFXMWiv7m4bO9E9VWkSlVRQQfTuWuRqQWBrAQwvmh4fOj1cwoFi+wzNmF+eYhGkitgw8dAIUlxXOWIF8nCC0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001);SRVR:BL2PR03MB483;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB483; X-Forefront-PRVS: 07106EF9B9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB483;23:x+xTkZpa+eM1xJi9vrWSPBniOFOKaYSwDqaAnFCW+6?= =?us-ascii?Q?CBGaK9oBq309uDQKYwfjLzIM1Ij6F79J6unjtv0HpyTTD4Q+bWHZgeLtrtf0?= =?us-ascii?Q?tzr9o1kHy0kFG2cHkOyDFrYjVO1LsIuCIp/JKtAwdxU5VaOVswoDxK8DMN7V?= =?us-ascii?Q?JLutftG/BzFo/BZDkd74zLmL8Kw8bloXEqHrzGPXWcDenbQfXOMZHZHdvspo?= =?us-ascii?Q?wwiCw2Zyv4gF3NncO2LkOj6iSGwOGux5sivsILJxRlpwrXjcUFqOkhy3r7VD?= =?us-ascii?Q?DkrjF64eMrwJjI+FKwrqFXS3210M4B6TPXNK50G2jg8Myf/scHsm67E8WUMq?= =?us-ascii?Q?kqnAaaaGK+QjQdbAreMYQEoIickiQGgOYhlIc2GLfDwrW205nu+ju1BJyONM?= =?us-ascii?Q?tCOBiohuWM/GOqWQlk9LmVCAsKUbDD0z6aEdznf+fPUGRaPqve/ziCSSBc6q?= =?us-ascii?Q?sr+QkMTKl40BYwWLzMfSYKMLasKKR0vCHRiEkYjKglxS7nvBJWsiFXjIlK+w?= =?us-ascii?Q?aYOQy1pSSq8E2Qa/g8X8PaDB0qI7VMP87fMZcSFSkZvLk+pgCTufZ/4P97g8?= =?us-ascii?Q?RiKj/oO95i6UFbHJMeau87RwQT+taKGW5J30duuQHnS9K2aBewFWSe20tFDs?= =?us-ascii?Q?KUO3OPVLHo2QQ+uEjEQNgZXlpqq2BxCdybaF5mu9n1xnKo0hYp5RvBMhigya?= =?us-ascii?Q?6JLMZNWiOb4nDkKzKytMRpUusC4ugBA/P5x/l3/IwhUTZp6o6bgBObs7zUG2?= =?us-ascii?Q?sURELILV1kYdX+CfD1bxoGeXe08diSQDAUuZQhNkmUgDcwEeiuJewRlqs9jg?= =?us-ascii?Q?Vn6gTyyyh1nHi+BQQ6lBHWBFCvfbTZPeyTABTE2dBT+fA4ERRGduLQKC7WV+?= =?us-ascii?Q?CqXwuY/nNtCb7S88vlNP22lUZ6jSMGMWKprIXNRQUrpA3CBa+MsdvQC3FtnK?= =?us-ascii?Q?n9rZ2rgucVE7eKWnX/xLzBRvjqqsqtKmJDbNC07y3zJDYD7psqlJCzLQceeH?= =?us-ascii?Q?Efmno6gVirgsAjr+6tEwGUwLUlvX/8C76hmOzDEb91eXZ/q6nCwB+A2wMRhD?= =?us-ascii?Q?xvtLrC7dmVUCmoK0UzZ8I5RiZP0uCAKTT0UtkrokdYn2xIT4oHZQ5HPBS2KP?= =?us-ascii?Q?sBh0SXiRNY0UhxDgwlCRLF0ytDvJ2y5hRSrsA7JVi7vFHUFcTJ5CVKcn6ps5?= =?us-ascii?Q?ciThM1MUhSD7rHzodozrzkKiQzYYB+DASsmA68FFtgpmVuI3Nv0xDcwUgtOZ?= =?us-ascii?Q?OMEbYlqoRnaieZ9jZiE3y8o9F1fOdAkEO7qlWAgXbJZszcYW4vxWeMQ6Ojfp?= =?us-ascii?Q?gHTjGks0TjFQmAtGuW5S0p52VEY6BG6mIRnOUVpldVxFxRjXAAle48DvsuvH?= =?us-ascii?Q?mV7Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB483;5:rKJvPQE7bBPOP4v6G7wEnZJnrVrcoL2FJTM4ivhCFtYv2Hcr0mfQpOXEpNtw2qqeOq0JSFguophUQt9Bo7wmQARR/gyZeqqOoef//jHMHKcQoU0R0zHQXKsFXuxD1LGqZ/K9k2+kvZuEvPEHhOAywg==;24:gRvkrT58Bi9akNpCmYX3iUU8NDOspNJ7OdPCj3eK5gI7x2I8HvXpYUZTNgiz70GWnby1MRDKEvmA1ksaJEYf4/NLPFknZ3JB8MDOLPHpnGI=;20:mSyJunh8FzRShWafvmUi7IMWr8O225Sc6PtZ7a51unVV6Z52x+8Lz2TzbPwEf1dGd7wjrozK+8/t9L/LMYTGmw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2015 09:02:48.8423 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB483 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 25, 2015 at 09:27:49AM +0100, Felipe Tonello wrote: > On Thu, Sep 24, 2015 at 2:20 AM, Peter Chen wrote: > > On Wed, Sep 23, 2015 at 12:40:46PM +0100, Felipe Tonello wrote: > >> Hi Peter, > >> > >> On Wed, Sep 23, 2015 at 8:09 AM, Peter Chen wrote: > >> > On Tue, Sep 22, 2015 at 07:59:10PM +0100, Felipe F. Tonello wrote: > >> >> This fix a memory leak that will occur in this case. > >> >> > >> >> Signed-off-by: Felipe F. Tonello > >> >> --- > >> >> drivers/usb/gadget/function/f_midi.c | 4 +++- > >> >> 1 file changed, 3 insertions(+), 1 deletion(-) > >> >> > >> >> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c > >> >> index e92aff5..e6a114b 100644 > >> >> --- a/drivers/usb/gadget/function/f_midi.c > >> >> +++ b/drivers/usb/gadget/function/f_midi.c > >> >> @@ -550,9 +550,11 @@ static void f_midi_transmit(struct f_midi *midi, struct usb_request *req) > >> >> int err; > >> >> > >> >> err = usb_ep_queue(ep, req, GFP_ATOMIC); > >> >> - if (err < 0) > >> >> + if (err < 0) { > >> >> ERROR(midi, "%s queue req: %d\n", > >> >> midi->in_ep->name, err); > >> >> + free_ep_req(ep, req); > >> >> + } > >> >> } else { > >> >> free_ep_req(ep, req); > >> >> } > >> >> -- > >> >> 2.1.4 > >> >> > >> > > >> > I may know your problem, current midi library, alsa and this driver > >> > allow device sends as much data as possible, but without block the > >> > sending until host reads data, it only allocates the request buffer > >> > (using midi_alloc_ep_req), but without free, so after you send > >> > enough data, it is out of memory. > >> > >> Yes. Also there is the case where the usb cable is not conected, thus > >> failing to hardware enqueue the request, causing a memory leak on this > >> request. > >> > > > > If the usb cable is not connected, the related endpoints should be > > not enabled. Would you really observe enqueue the request without > > cable connected? > > The usb_ep_queue() returns an error if it is not connected, causing > the request never to be freed and never to be queued. Thus a memory > leak happens. > If it is not connected, the ep is not enabled, why we will call usb_ep_queue? If it really does, there must be something wrong. -- Best Regards, Peter Chen