From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755979AbbJVBmu (ORCPT ); Wed, 21 Oct 2015 21:42:50 -0400 Received: from mail-bl2on0115.outbound.protection.outlook.com ([65.55.169.115]:47001 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753523AbbJVBms (ORCPT ); Wed, 21 Oct 2015 21:42:48 -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, 22 Oct 2015 09:41:28 +0800 From: Peter Chen To: CC: , , "Greg Kroah-Hartman" , Felipe Balbi , Andrzej Pietrasiewicz Subject: Re: [PATCH 2/3] usb: chipidea: udc: improve error handling on ep_queue Message-ID: <20151022014126.GA5624@shlinux2> References: <1442597421-3641-1-git-send-email-eu@felipetonello.com> <1442597421-3641-2-git-send-email-eu@felipetonello.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1442597421-3641-2-git-send-email-eu@felipetonello.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD039;1:3fMKTvXnWhoE3ja9LRGIDqznzAL14RnoMwI4eX3PDndnzYye6PxgoEsrXeR8BepnXvuUF+rt6lJ/Z8tBC/BMceVPm5TtggAzseH2vUP1BDr+f+FkWZptEdFcgR94T/WmcQDWh3r7hDdFvousZRisdZG8WtM1cB/tq2LhE7U29oiwyIVII0wMo/G8nWjM8nJ1eeTNLvyfkTCnKpKz0H8C+9mRhq3Hdcu9Gjqy2MA7vx2tz1BfmXzJkk91Vq6FtKn62iainNBVl8fM3ytvi+wqYaLaCr9+UqnhNH5Lx9YApurWx42ZMWvtKWZkCDRG65D+FIFqFRCGrsD8xixjaU9KOmz/SH4hpjm0KhYLHFEZGyeBxOGCZ+b64w/jfgW5y78s X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(24454002)(19580405001)(19580395003)(15975445007)(33716001)(46406003)(77096005)(54356999)(76176999)(50986999)(92566002)(85426001)(87936001)(105606002)(64706001)(106466001)(2351001)(47776003)(83506001)(189998001)(5001920100001)(104016004)(86362001)(4001350100001)(5001960100002)(110136002)(81156007)(50466002)(97736004)(11100500001)(6806005)(97756001)(33656002)(5007970100001)(23726002)(2950100001)(46102003)(5008740100001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR0301MB1278;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1278;2:JRkXKXhKTPbtvohGnKWBAxV6D4kO/MJQ6dgA6h3S7w4KQunQeurNgTztsKpGJ5iWmwBNZoBddpAcGAC/tVi6CQUMpAm/HXSFMGlMQYpXKSG2gCdXciZiU3TxjSUOoMbjU1nu+edGueemKb4mZVcTFR7gahJg+du18Rg0srWV2cs=;3:zmzEOm8ZSMKfrT6vyoi0IB1GzBiCpfJNzElW5B8I/BEfQoGjgZcxcRJta4ZDrYLRI428N3ok4HNegTKm4Uhou7BmRqJFQ6crK79cpqUIwF8GTjd7TTfI9JK9+tirRexnrGNlOdx614vXpTZiDwIw+Wj6r16DqlYGvNv4i1vscFS5+VaKFW3d8VDjc43Ku56uHI3sJohdn8uzs7wGO2lRQnPFPQLlrV1gvSstPYmCZSg=;25:GbEHBZd0DSTujGjfF5Pg/xwHy6Px04zzAFG0U4YFSip9LvRLCBXKiqKVhTyUBf1C5cmpuuUpX3/BaWX6igNyimDXzBx7SmXVpjZifg6/lsENJ5bHl8ZRcaclywASzlKJWP7gJ5uifsJ5ybt0WWIe6WB1cKDdELSp1ulQG9LFIwiEo6YxYSB64D9re+n7P3VMxenwgkcR6LSxyk2u4tPD5NQXehBWztbXCJOUGL4KwurT+psnMfUQh25qCFEkn3Fq X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1278; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1278;20:QgNSqYeBEKp7SV140V6xg+sKwR1w7QIovIWGr4kmaQd/V8FG59jimhxlBAgwJ/CCD152EWV7qsAaGfdOaJBniHgV8XtXQ/De2z+tVzZjnoZMjYhDCta4m5Jbr4iu3eMNEQjnJ3jS4mXMQW1v5oI1qoiIlYFXGkPKpIWXaT9ytvQuniTxILc8LIkaQNDaNFBSMz7zdSNVWJdovupsw65hUMcQ6gkQzgtbXBJ5cbYJmY0gc2gzXcc4tVPJ6cp2gR4x0GhehKdkasg1fwCybRsYArf8kbBBuvtIjRaOERfDAv1jHnOZrKWNdUGx1LQNVlx3e6qQvx5w4l90700k9XL+pyTdtsqzIL8MCpB+RXiF9d4=;4:A9oKqmnIWUVfEMaRvogBBdEwOIfTWPhEr7/rIzw2ql72mYxMBNRfDxUDDOw/oHow2Kv3SvKsFIg8ksu8lF25K5Vw6zzz+tw/1XVjLRYdDCVhY9ztVlFFmS0MvcytcgouFyJGeyvQsidTlT2FVyujwGtxKbn4BTd2UfYo2yJjEPEI7p1qZKkmbGu72wljGV54ynVNuWDLDPpuNr0JTDKNhaRETPVYHWBmQaKG1CpFhdM+r7Di9lGSXsyIVtKJ7WCmCFIsQOjdF36GEjIqiF2r6WQUVx0kbSmjSp+2BPNjRW8UbC8OnpLOq6V1rXOAHI3iBcP2lJ9v7lA3B5wqCE5ntGaPYBAa6Z0ogJ8ocqpYYGo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:DM2PR0301MB1278;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1278; X-Forefront-PRVS: 0737B96801 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB1278;23:XLBFRAQ+43oI6+4qO7tspB+ZnZYVNo3g5Li+bAA?= =?us-ascii?Q?xxmEsnDUgjh28mWpLaNmyR/VhBWFc2Zv831iSLO4sgTUiBPU8WE6Xtn4nMGj?= =?us-ascii?Q?qraogiJRl9xnxhnyXG/Q2KGfzjwnkBl818sLcAChqfjGwnCGZo4iyRvxzUE8?= =?us-ascii?Q?oUHhhNzy82t04Wn0pf9aCGbdvi3wg4WpqIilW6IVM0gda5GcDGVCjex9Gz2K?= =?us-ascii?Q?eQT2Hp548NVcB5i1UhPxT/C2la+mCHVTERz1CCRAqgeqqdsix4KLWkpiClcO?= =?us-ascii?Q?LvmBMqv0d2vmRKrfEz/f2GWgpByznjvQkFuSv+qa/L6/84kWHXsyXLJz4dlf?= =?us-ascii?Q?Xq+J6bxNBM4FlLQ8/tFs1ncQnWw6iAF7Aa+idHSDaiPZOMbI1BIMI3Nal9uP?= =?us-ascii?Q?5kd95lh30XM/MNcA/jBZxSev/rKWh48Wa2d7vq320Vduo/AitzelOze9X47V?= =?us-ascii?Q?2TA+yjX/1ck1uU+SfbjfdtI0k/lBPc4Ev8DRLm8s0jdTDDiF1JdSNT92iwpr?= =?us-ascii?Q?FOaQFQICWHR2nz5r1BM3BHL6heNLW8tSZE6f4HXYTrGA4qdQe/JoWqHLCOOC?= =?us-ascii?Q?NDb+N5pCcH9U59rtlKlIXOWO3nvQPvpb0C2KlSMMNNyu2tFVokeM/TkNcolm?= =?us-ascii?Q?RjkrwT2PoC/kizIQwDKpUaOg0plKXCegkwncMJ5s7oV1vvLKBX5JRvyerHqn?= =?us-ascii?Q?l4opdC57RmHejCCshEe5vxXiOh3jDDGbg/9smfIF+jtk4eqiWc8Dxy32AgwQ?= =?us-ascii?Q?EgYS0JCk/Dr94BpX4lFSMVLcBASih5e1yrXE08PNtPbskLQNzdFXS7cc0XIm?= =?us-ascii?Q?g8x1I0+5WwSLuBjhCH5kDzfCKTa93c52Q1DEcaXOvda1mLBiTg8BdteXBwmL?= =?us-ascii?Q?cOeVl8feS86oJRZNgTl4kWxUrkU1F9w3yPe9KMyAKOBSpEc+TPDi0dss3/WJ?= =?us-ascii?Q?9MYHtyAwJl4EtjeUbgLUKURz2jNcGZjCok8Sm39tLC4vTn7BU+nwQrTANIJH?= =?us-ascii?Q?aX2yhAVdEcJtp3rGNXy/UxGaBI7Nyi+2R56DzHkqu8yltF7IJf9qhttHECqc?= =?us-ascii?Q?qtBIiS+v6TpUs5XG5GSAnVT7LFuxhciLDep4yxRLGXW91keo4Rj1CbXyekrk?= =?us-ascii?Q?qgcBDsFiHGQ2rKU/83tpacs38lpM729fcuF9v7gc8iuT94CIOlULZ9rg5IhO?= =?us-ascii?Q?lShxNjTYBecN2123oaVNKQDYVBGB2tGKNskHB?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1278;5:t4+WH3HGnRTOu+XVzPCqGVwMNsf3SNYeb6KYI4HFqroEE+UapCWe1dYI/PBPFOmgjdrUt199uldwY/EnDE01eWB6cTdHG8O5rdzUGMUslzfK6lOUvOGc1WeHDjyDOKgfa2Yjv8hh2QldGMqIX3BhSw==;24:BxnGFA9vVrx8QsNkwU+7yZA8V1GwUIoTddKR1G1QtLko3rX+9c91NN0D/rxm/Vzlk7d1xpaNI/DyQgMvDMdEV17rDCCsFZXhwCSH0iIDWvg=;20:O53X4hLTgcmYqDdUodmxQqDF4b9+pFU2Z9YaCFJYY6gcOU/UQNpsP5+2ViUrzPu378Q+H5fUeIJoTot+szYX6Q== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2015 01:42:42.7709 (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: DM2PR0301MB1278 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 18, 2015 at 06:30:20PM +0100, eu@felipetonello.com wrote: > From: "Felipe F. Tonello" > > _ep_queue() didn't check for errors when using add_td_to_list() > which can fail if dma_pool_alloc fails, thus causing a kernel > panic when lastnode->ptr is NULL. > > Signed-off-by: Felipe F. Tonello > --- > > Changes for v2: > - Use separate patch for cleanups. > > drivers/usb/chipidea/udc.c | 18 +++++++++++++----- > 1 file changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > index c936c72..7169113e 100644 > --- a/drivers/usb/chipidea/udc.c > +++ b/drivers/usb/chipidea/udc.c > @@ -435,19 +435,27 @@ static int _hardware_enqueue(struct ci_hw_ep *hwep, struct ci_hw_req *hwreq) > if (hwreq->req.dma % PAGE_SIZE) > pages--; > > - if (rest == 0) > - add_td_to_list(hwep, hwreq, 0); > + if (rest == 0) { > + ret = add_td_to_list(hwep, hwreq, 0); > + if (ret < 0) > + goto done; > + } > > while (rest > 0) { > unsigned count = min(hwreq->req.length - hwreq->req.actual, > (unsigned)(pages * CI_HDRC_PAGE_SIZE)); > - add_td_to_list(hwep, hwreq, count); > + ret = add_td_to_list(hwep, hwreq, count); > + if (ret < 0) > + goto done; > rest -= count; > } > > if (hwreq->req.zero && hwreq->req.length > - && (hwreq->req.length % hwep->ep.maxpacket == 0)) > - add_td_to_list(hwep, hwreq, 0); > + && (hwreq->req.length % hwep->ep.maxpacket == 0)) { > + ret = add_td_to_list(hwep, hwreq, 0); > + if (ret < 0) > + goto done; > + } > > firstnode = list_first_entry(&hwreq->tds, struct td_node, td); > > -- > 2.1.4 > Hi Felipe, I can't apply it in my tree, would you please create it based on chipdea tree? https://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git branch: ci-for-usb-next -- Best Regards, Peter Chen