From mboxrd@z Thu Jan 1 00:00:00 1970 From: mina86@mina86.com (Michal Nazarewicz) Date: Wed, 08 Jul 2015 15:44:44 +0200 Subject: [PATCH v2 1/5] usb: gadget: ffs: call functionfs_unbind() if _ffs_func_bind() fails In-Reply-To: <1436346323-31593-2-git-send-email-r.baldyga@samsung.com> References: <1436346323-31593-1-git-send-email-r.baldyga@samsung.com> <1436346323-31593-2-git-send-email-r.baldyga@samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Jul 08 2015, Robert Baldyga wrote: > Function ffs_do_functionfs_bind() calls functionfs_bind() which allocates > usb request and increments refcounts. These things needs to be cleaned > up by if further steps of initialization fail by calling functionfs_unbind(). > > Signed-off-by: Robert Baldyga Acked-by: Michal Nazarewicz > --- > drivers/usb/gadget/function/f_fs.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c > index 6e7be91..6516187 100644 > --- a/drivers/usb/gadget/function/f_fs.c > +++ b/drivers/usb/gadget/function/f_fs.c > @@ -2897,11 +2897,18 @@ static int ffs_func_bind(struct usb_configuration *c, > struct usb_function *f) > { > struct f_fs_opts *ffs_opts = ffs_do_functionfs_bind(f, c); > + struct ffs_function *func = ffs_func_from_usb(f); > + int ret; > > if (IS_ERR(ffs_opts)) > return PTR_ERR(ffs_opts); > > - return _ffs_func_bind(c, f); > + ret = _ffs_func_bind(c, f); > + if (ret) > + if(!--ffs_opts->refcnt) > + functionfs_unbind(func->ffs); > + > + return ret; > } > > > -- > 1.9.1 > -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Micha? ?mina86? Nazarewicz (o o) ooo +------ooO--(_)--Ooo-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758703AbbGHNo7 (ORCPT ); Wed, 8 Jul 2015 09:44:59 -0400 Received: from mail-wi0-f175.google.com ([209.85.212.175]:33229 "EHLO mail-wi0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754103AbbGHNos convert rfc822-to-8bit (ORCPT ); Wed, 8 Jul 2015 09:44:48 -0400 From: Michal Nazarewicz To: Robert Baldyga , gregkh@linuxfoundation.org, balbi@ti.com Cc: nicolas.ferre@atmel.com, dan.carpenter@oracle.com, sergei.shtylyov@cogentembedded.com, andrzej.p@samsung.com, m.szyprowski@samsung.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Robert Baldyga Subject: Re: [PATCH v2 1/5] usb: gadget: ffs: call functionfs_unbind() if _ffs_func_bind() fails In-Reply-To: <1436346323-31593-2-git-send-email-r.baldyga@samsung.com> Organization: http://mina86.com/ References: <1436346323-31593-1-git-send-email-r.baldyga@samsung.com> <1436346323-31593-2-git-send-email-r.baldyga@samsung.com> User-Agent: Notmuch/0.19+53~g2e63a09 (http://notmuchmail.org) Emacs/25.0.50.1 (x86_64-unknown-linux-gnu) X-Face: PbkBB1w#)bOqd`iCe"Ds{e+!C7`pkC9a|f)Qo^BMQvy\q5x3?vDQJeN(DS?|-^$uMti[3D*#^_Ts"pU$jBQLq~Ud6iNwAw_r_o_4]|JO?]}P_}Nc&"p#D(ZgUb4uCNPe7~a[DbPG0T~!&c.y$Ur,=N4RT>]dNpd;KFrfMCylc}gc??'U2j,!8%xdD Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEWbfGlUPDDHgE57V0jUupKjgIObY0PLrom9mH4dFRK4gmjPs41MxjOgAAACQElEQVQ4jW3TMWvbQBQHcBk1xE6WyALX1069oZBMlq+ouUwpEQQ6uRjttkWP4CmBgGM0BQLBdPFZYPsyFUo6uEtKDQ7oy/U96XR2Ux8ehH/89Z6enqxBcS7Lg81jmSuujrfCZcLI/TYYvbGj+jbgFpHJ/bqQAUISj8iLyu4LuFHJTosxsucO4jSDNE0Hq3hwK/ceQ5sx97b8LcUDsILfk+ovHkOIsMbBfg43VuQ5Ln9YAGCkUdKJoXR9EclFBhixy3EGVz1K6eEkhxCAkeMMnqoAhAKwhoUJkDrCqvbecaYINlFKSRS1i12VKH1XpUd4qxL876EkMcDvHj3s5RBajHHMlA5iK32e0C7VgG0RlzFPvoYHZLRmAC0BmNcBruhkE0KsMsbEc62ZwUJDxWUdMsMhVqovoT96i/DnX/ASvz/6hbCabELLk/6FF/8PNpPCGqcZTGFcBhhAaZZDbQPaAB3+KrWWy2XgbYDNIinkdWAFcCpraDE/knwe5DBqGmgzESl1p2E4MWAz0VUPgYYzmfWb9yS4vCvgsxJriNTHoIBz5YteBvg+VGISQWUqhMiByPIPpygeDBE6elD973xWwKkEiHZAHKjhuPsFnBuArrzxtakRcISv+XMIPl4aGBUJm8Emk7qBYU8IlgNEIpiJhk/No24jHwkKTFHDWfPniR4iw5vJaw2nzSjfq2zffcE/GDjRC2dn0J0XwPAbDL84TvaFCJEU4Oml9pRyEUhR3Cl2t01AoEjRbs0sYugp14/4X5n4pU4EHHnMAAAAAElFTkSuQmCC X-PGP: 50751FF4 X-PGP-FP: AC1F 5F5C D418 88F8 CC84 5858 2060 4012 5075 1FF4 X-Hashcash: 1:20:150708:r.baldyga@samsung.com::cb5YjuNjwcACxfMv:00000000000000000000000000000000000000000HPh X-Hashcash: 1:20:150708:andrzej.p@samsung.com::hc3emlJmCFhF76ef:00000000000000000000000000000000000000000ekS X-Hashcash: 1:20:150708:linux-usb@vger.kernel.org::uVSJT83mNdv7oham:0000000000000000000000000000000000000a3F X-Hashcash: 1:20:150708:linux-kernel@vger.kernel.org::rTMy6UztHs48EIP1:0000000000000000000000000000000000ZLH X-Hashcash: 1:20:150708:r.baldyga@samsung.com::MymM7WyXIzTQI00J:00000000000000000000000000000000000000002KJv X-Hashcash: 1:20:150708:nicolas.ferre@atmel.com::MmMqkOB01dWJRzM/:000000000000000000000000000000000000001pHd X-Hashcash: 1:20:150708:sergei.shtylyov@cogentembedded.com::GqTEqZf4ypc8z7Te:00000000000000000000000000040T+ X-Hashcash: 1:20:150708:m.szyprowski@samsung.com::kCKWaMmu/DDUaY+f:000000000000000000000000000000000000051lU X-Hashcash: 1:20:150708:dan.carpenter@oracle.com::qNKPZ3ya83SQCymi:00000000000000000000000000000000000006bvg X-Hashcash: 1:20:150708:balbi@ti.com::sV5qkf3kbmSz2Dii:000008SEh X-Hashcash: 1:20:150708:linux-arm-kernel@lists.infradead.org::M5x6dowp2Hmqttga:00000000000000000000000009Hg/ X-Hashcash: 1:20:150708:devel@driverdev.osuosl.org::Ox7YabE5NvhXd/iv:00000000000000000000000000000000000Ck0k X-Hashcash: 1:20:150708:gregkh@linuxfoundation.org::0yZttJZ31Db9HE0R:00000000000000000000000000000000000ETBP Date: Wed, 08 Jul 2015 15:44:44 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 08 2015, Robert Baldyga wrote: > Function ffs_do_functionfs_bind() calls functionfs_bind() which allocates > usb request and increments refcounts. These things needs to be cleaned > up by if further steps of initialization fail by calling functionfs_unbind(). > > Signed-off-by: Robert Baldyga Acked-by: Michal Nazarewicz > --- > drivers/usb/gadget/function/f_fs.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c > index 6e7be91..6516187 100644 > --- a/drivers/usb/gadget/function/f_fs.c > +++ b/drivers/usb/gadget/function/f_fs.c > @@ -2897,11 +2897,18 @@ static int ffs_func_bind(struct usb_configuration *c, > struct usb_function *f) > { > struct f_fs_opts *ffs_opts = ffs_do_functionfs_bind(f, c); > + struct ffs_function *func = ffs_func_from_usb(f); > + int ret; > > if (IS_ERR(ffs_opts)) > return PTR_ERR(ffs_opts); > > - return _ffs_func_bind(c, f); > + ret = _ffs_func_bind(c, f); > + if (ret) > + if(!--ffs_opts->refcnt) > + functionfs_unbind(func->ffs); > + > + return ret; > } > > > -- > 1.9.1 > -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz (o o) ooo +------ooO--(_)--Ooo--