From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1425052AbcBRH7g (ORCPT ); Thu, 18 Feb 2016 02:59:36 -0500 Received: from mailout4.w1.samsung.com ([210.118.77.14]:13706 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933759AbcBRH7e (ORCPT ); Thu, 18 Feb 2016 02:59:34 -0500 X-AuditID: cbfec7f4-f79026d00000418a-03-56c579e38f3b From: Marek Szyprowski To: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Marek Szyprowski , Ruslan Bilovol , Bartlomiej Zolnierkiewicz , Vegard Nossum , Maxime Ripard , Greg Kroah-Hartman , Peter Chen , Felipe Balbi Subject: [PATCH RESEND] usb: gadget: gadgetfs: unregister gadget only if it got successfully registered Date: Thu, 18 Feb 2016 08:59:26 +0100 Message-id: <1455782366-4841-1-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.2 In-reply-to: <56B7D2C9.5070301@oracle.com> References: <56B7D2C9.5070301@oracle.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrALMWRmVeSWpSXmKPExsVy+t/xq7qPK4+GGfScMrfYOGM9q8Wxtifs Fs2L17NZXN41h81i0bJWZou1R+6yW2zdtJfZ4tjsv0wWPTtPMFqcbVrD6sDl8WTTRUaPf4f7 mTx2zrrL7rFpVSebx/65a9g9Pj69xeLRt2UVo8fnTXIBHFFcNimpOZllqUX6dglcGd8OzWEq +Mtd0diwjLGB8RJnFyMnh4SAicTbg81sELaYxIV764FsLg4hgaWMEis71zKDJIQEmpgkDqwR ArHZBAwlut52ARVxcIgIWEv0HQwCqWcW+Mgk0TF3AhNIjbBApsSL5lssIDaLgKrElEPnwWxe AXeJCdsWs0Msk5P4/3IFE8gcTgEtiRkf/CBWaUp0PutknMDIu4CRYRWjaGppckFxUnquoV5x Ym5xaV66XnJ+7iZGSDh+2cG4+JjVIUYBDkYlHl6O10fChFgTy4orcw8xSnAwK4nwfnM/GibE m5JYWZValB9fVJqTWnyIUZqDRUmcd+6u9yFCAumJJanZqakFqUUwWSYOTqkGxoVFMUdkTzut vRUR+MV+/erv4X+sJ753/vCAYUJj8o/k6tW1ny/U8BVeixDcmVR++uLZa1OkOA5o2bau/r52 2415y71bNVyWhMX16Vf+EuE4ERoTwJzyuqTroWvrLvF7JZpuLa+ahMKYbhx5E/f5UveHpRvP PF+5vf7zzowTed6fNt/j8nzHU6jEUpyRaKjFXFScCABzgFkAQwIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Gadgetfs driver called usb_gadget_unregister_driver unconditionally, even if it didn't register it earlier due to other failures. This patch fixes this. Reported-by: Vegard Nossum Signed-off-by: Marek Szyprowski Tested-by: Vegard Nossum --- drivers/usb/gadget/legacy/inode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c index 7a62a2f7bc18..cde6a2133c90 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c @@ -130,7 +130,8 @@ struct dev_data { setup_can_stall : 1, setup_out_ready : 1, setup_out_error : 1, - setup_abort : 1; + setup_abort : 1, + gadget_registered : 1; unsigned setup_wLength; /* the rest is basically write-once */ @@ -1179,7 +1180,8 @@ dev_release (struct inode *inode, struct file *fd) /* closing ep0 === shutdown all */ - usb_gadget_unregister_driver (&gadgetfs_driver); + if (dev->gadget_registered) + usb_gadget_unregister_driver (&gadgetfs_driver); /* at this point "good" hardware has disconnected the * device from USB; the host won't see it any more. @@ -1825,6 +1827,7 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) * kick in after the ep0 descriptor is closed. */ value = len; + dev->gadget_registered = true; } return value; -- 1.9.2