From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756563Ab3IML2y (ORCPT ); Fri, 13 Sep 2013 07:28:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:24157 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755675Ab3IML11 (ORCPT ); Fri, 13 Sep 2013 07:27:27 -0400 From: Gerd Hoffmann To: linux-usb@vger.kernel.org Cc: Gerd Hoffmann , Matthew Wilcox , Sarah Sharp , Matthew Dharm , Greg Kroah-Hartman , linux-scsi@vger.kernel.org (open list:USB ATTACHED SCSI), usb-storage@lists.one-eyed-alien.net (open list:USB MASS STORAGE...), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v3 2/6] uas: properly reinitialize in uas_eh_bus_reset_handler Date: Fri, 13 Sep 2013 13:27:11 +0200 Message-Id: <1379071635-30701-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1379071635-30701-1-git-send-email-kraxel@redhat.com> References: <1379071635-30701-1-git-send-email-kraxel@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Gerd Hoffmann --- drivers/usb/storage/uas.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index d966b59..fc08ee9 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -85,6 +85,8 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, struct uas_dev_info *devinfo, gfp_t gfp); static void uas_do_work(struct work_struct *work); static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller); +static void uas_configure_endpoints(struct uas_dev_info *devinfo); +static void uas_free_streams(struct uas_dev_info *devinfo); static DECLARE_WORK(uas_work, uas_do_work); static DEFINE_SPINLOCK(uas_work_lock); @@ -800,7 +802,10 @@ static int uas_eh_bus_reset_handler(struct scsi_cmnd *cmnd) usb_kill_anchored_urbs(&devinfo->cmd_urbs); usb_kill_anchored_urbs(&devinfo->sense_urbs); usb_kill_anchored_urbs(&devinfo->data_urbs); + uas_free_streams(devinfo); err = usb_reset_device(udev); + if (!err) + uas_configure_endpoints(devinfo); devinfo->resetting = 0; if (err) { -- 1.8.3.1