From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756300AbbIXBUX (ORCPT ); Wed, 23 Sep 2015 21:20:23 -0400 Received: from mail-bn1bn0101.outbound.protection.outlook.com ([157.56.110.101]:53600 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932131AbbIXBUR (ORCPT ); Wed, 23 Sep 2015 21:20:17 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) 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: Thu, 24 Sep 2015 09:20:02 +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: <20150924012001.GB10369@shlinux2> References: <1442948350-31702-1-git-send-email-eu@felipetonello.com> <1442948350-31702-3-git-send-email-eu@felipetonello.com> <20150923070917.GA16159@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;BL2FFO11FD019;1:1GkQStzzKzHMFhH8Maib5iHOJ+CKgVJCnmH+viPrIfLzxa7bIK5aEKb8H4JyHqlCjEp2u0A7+Cke02pVmhdG484CkJeUpcbqW06gsd17tnb9vuRabjvmGHMCTzWlGWw1HgPFM5AaRCvnkpAaGpIQshK7CQXYioqGhR4xYcyTD1EjFhzXavCzBoO1JqoPXgyr2lMyiRKcWIklN/GtAPehreuqNtGwVF3S70Nu15ex3dlcZQEva9ik/oulmtrCWjR1a01qaggH+7kaE/dNKg0Mxq+9wzSvj/ujIF71gyV3bTo27OHi0noytx6BYl7deu6oioAw492nGMLZIk29E5jA13ymwWRl2M8ZSE6yuXBrgCcSXYxeBd+44lioGwKaxUHt X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(377454003)(24454002)(199003)(189002)(5001960100002)(50466002)(93886004)(33656002)(87936001)(46102003)(86362001)(85426001)(83506001)(81156007)(5007970100001)(6806005)(4001540100001)(46406003)(47776003)(64706001)(4001350100001)(97736004)(104016004)(5001830100001)(5001860100001)(50986999)(76176999)(19580395003)(19580405001)(54356999)(62966003)(33716001)(97756001)(77156002)(68736005)(77096005)(110136002)(2950100001)(105606002)(23726002)(92566002)(189998001)(106466001);DIR:OUT;SFP:1102;SCL:1;SRVR:BN3PR0301MB1267;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1267;2:ZP06kKbHxvYy2Nv3CeBhGVX+ee4EF0EGQCi2zXjHSj7Y30jSXX03WI31KTyJqCeJzq3270I/9NKhhr2mdFxZ3dpa/CWXtbk9uQSJuDHASNpvSrS2dFyOwmcaZM77tdfvdYsRRUY05Yal6D2XlUyW1SholcNmh50O5REf5P79/Uo=;3:RsLJQvRyrVT7X5WFOobYURNHB+FWkva5j+8Q+v5WK5lljoJQRm5mMVbBWz7vWvhyTFeS/9u/qMuRofi7vO5WY0QiQiGQD7BdtTSiDfLnUXvJE2BZMaSpXnF9ACv+axCvsH1ycKTSyMRsF8mnfNb3GyUFs2XooFWqktRM2G0omy6aF72XURIWx9It0+LJtdsIbk410n6bwssglaZ4ZW0p280Aq2+zeey74Hg+sA+RRf0=;25:X3kIE8Awx8CSsl6jeOw49Jq1qgXEsJmFsF85WdwA6AGmKrVIscBCneD0E5uO4iOaPHtIv/OY2pVTHp95aIjBKklZI42APkV5dXPl4TaEc9tTIsfmfiHf1JPtpYbSBuCPfo395aQMI3auXLC/0B2jnqh0+fI0AvhxzD6ntEbBAALnIAqEUYw8LcSm3SMdSqPcQ2OvfrseLbQeADwyJoz9j78E+AnEHTX8jAcJKkYXHoeiIGT/QMUnY9y73suLrmsUwacllDgxDqe5a5gOFq6xyA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1267; X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1267;20:MitJc0OSGvGyGn8yf2pWG4+aOXEtYstRDdYvoBWMB0EnsjVrx10lI7QjGZzYzfl8xP397g8Q/kluMFNWbIhm36J1zwm+rS7zQNXUbaj77I8+mbKitRty/yGMErFmseb95LxuwAyArtpMkz9smoikpKhVSQHJIqeDdx+hBYdCYEYS902jjd2r0kIgeZbIbP4c55zOawjeUC/3bjR3eQlzcBm4VneTmUm/Obgyag/imvOgVKZObXElUuLketdG0z5I1RhsLcs6SQ9KOZGV76kzkOR65RCSc656/56ZJ3fsnAe7ElWmZuYPIgOoG44Wp+4dPpgNtlPBk48CBQrH3mJCKHwoZxlTi3vdPle8U1dC1U0=;4:EY4TLSr0Py4vhUU35V8UnruadMS4FSnSqo7HkvV97s4FkIwHH6wfPKS4cDV8Mzgv0BK0NqvZvdFeB/AYqDiC9SYcVLdMBMIGVxx2gI2d/+z6hznrA1PMUL7ggboZaZucHgqxqoXXswMSXN2+uJLW3v7kyHWSLwOY8oZZSh8S4ByZABGZKjm2UkQPeG9jgOkNaJbUfYKtXuVGL6pHwpaThTgjeTEMcTJuIK+I+XZLZPY5NSRQz2oc29UVDiMvXl5c4jGyqBgFbUGuy9s0Oxs3KZrcSaPVlSzMsS5gTXFvXTJGdMl6usFW6Py5xbGO2JJGed8dtxDVifDuA8HBs9weGzVAl1+X5VqyKqKPZhLr1Nc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:BN3PR0301MB1267;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1267; X-Forefront-PRVS: 070912876F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR0301MB1267;23:87gH3OCGN37ljMSMbSFaxTiYJL4O9PqNtA77cln?= =?us-ascii?Q?LCx39J1sVigEIxm3wsrirqfGL67SIUM0g/t3oTnK0PBHikoB2ENdWPsk8G/H?= =?us-ascii?Q?BJCg/XLYa8l7bsOLJRT1SDPq1vabcv2bgxjIwEx0WXZ9cPPDot9ySwB/ZfhI?= =?us-ascii?Q?Q7V6LAlmDmtcb88e2vbeKoQ6yMMXc7+MgMTnYK20ijk22qgpLtqW/eaRTsPW?= =?us-ascii?Q?Sv59KHbiKCl8wGCvuQSSqTo58YCAMdG6sPCSO6HhfBp89f1hMfDbvsBWXLKc?= =?us-ascii?Q?FG1R3h+c6Djv7KrZXADina3W5jAViUEMQKFXxN2kYlXD0kRjXJVXpMZUdPXd?= =?us-ascii?Q?wlid6rmLZvBxTN+fZv0Zz2G9FChXDNy9wiTtmfoXgI7PXOd2XLI0RdE0y4Wd?= =?us-ascii?Q?W/FTZJ0hwv3yU552diVQbK2LqIRgrOnNp70weGOS3/9vuIJRnsOJ5auo7czq?= =?us-ascii?Q?xgzTNu9PFX2aTVdyMdsq56NueCjbbs9FsJuHU2HjP3E8O3PX0QgSN196kDMm?= =?us-ascii?Q?foUbmzM3K+WVug3XMztQMP/P0MBQeBurqf8URGetBAJ4E5pKZpQf+nH231Y1?= =?us-ascii?Q?XRR5k1Ho7W2tRMhYozJTsMRxjWZEyaY/y1lTqE3Hdh7u6BirtOpIgEhBc0Gi?= =?us-ascii?Q?LZ3rUovY13GmK85tlw8fBs6IprPIHGLqR4BOc+IlzbpzCmFRC1L3d40XVswh?= =?us-ascii?Q?Er5EiVTygiIFMvBZyWUzLZS9OOrS57o82x2FVkCZ7lE7CBsNzdxqW2ZQTNr8?= =?us-ascii?Q?ViAAF0M8yDtEQ9m1ja5rcJe39pY7g8ZBegD3kRS3zol3BJTEjKHzZnW/EuUK?= =?us-ascii?Q?iFucJrYJ0NlpmBkWi7R6s0Ux5Er9ai81AbBXLDun9bbKo0TiReUG5sjCmJm6?= =?us-ascii?Q?1SH8rYwtdxSn1tvNA+ZhdcXN6w5AQ+CIJs+Am+xXQ0DaGIWZXwAMThFXIuzB?= =?us-ascii?Q?oC/KS6ZS5d4EYsUxrCNtWZxh6yaLXPXxb+fQvY7yYrdfsCY2WzI8+JiJvAzB?= =?us-ascii?Q?JmslJ1Iob51oHatPZJqykgV4Vu6gnDDmb8ocTHinnEot+EfdqnXj2pq+0hCO?= =?us-ascii?Q?qWSaY1p886QcoQWLCzF4f0SnmN9+ZHY8D6t4VI9ha9pmUTmb03roy1tmwsm0?= =?us-ascii?Q?K35S1wlHHBu2oE0xH+1hk9O2Oau4aK5tuXG3qPKuHNMG1bzw+rGQg1j/b7BJ?= =?us-ascii?Q?NefBA32LonJn0mBSPrguhsQwFar1Ql+DJZRwASKWUDfYLT9d0jAO4LqrGMs4?= =?us-ascii?Q?ATDyZIvpR8669PsaYr2p2e1Nk8+/mZNibwbP0UKbp?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR0301MB1267;5:j+wlcgZ97kv44lr7bk/BREIj6edI8VrfsPQZSo64bj9Zc5wg7/dnPWCXLSaIcKz6ZErNfPcvmoJssTblZeiASs+V15AGsg6cAMOka0u4bmGqxNENjmfqd+2WSdQa0tichMNkNR2cW9MqhHf9fHEDow==;24:geXU+BhtDwHkHyDiAdWrJ0USPl96iwdUPJjpwdSxPIaLNi1+4l3Pu7isYZy0dVpPzs3soLQDrbXtgeBI07hcA0XBdrMPnxFSFFFliBPCOiI=;20:VGPSqQ73yOi502MB2nxXE9cbtBRxEz1eYtLYjxfcICs9KHQXoDiNa3v5agHo6VgUFX3tGncc2KijHwfppDKs4A== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2015 01:20:13.1989 (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.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0301MB1267 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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? -- Best Regards, Peter Chen