From patchwork Mon Sep 10 09:20:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Sewior X-Patchwork-Id: 10593745 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 73B83679F for ; Mon, 10 Sep 2018 09:20:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 640A028E26 for ; Mon, 10 Sep 2018 09:20:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5875428E1C; Mon, 10 Sep 2018 09:20:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BA80228E1C for ; Mon, 10 Sep 2018 09:20:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728030AbeIJONO (ORCPT ); Mon, 10 Sep 2018 10:13:14 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:38760 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727867AbeIJONO (ORCPT ); Mon, 10 Sep 2018 10:13:14 -0400 Received: from localhost ([127.0.0.1] helo=bazinga.breakpoint.cc) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1fzIMY-0003a3-5M; Mon, 10 Sep 2018 11:20:06 +0200 From: Sebastian Andrzej Siewior To: linux-media@vger.kernel.org, linux-usb@vger.kernel.org Cc: Mauro Carvalho Chehab , Greg Kroah-Hartman , tglx@linutronix.de, Sebastian Andrzej Siewior , Alan Stern Subject: [PATCH 3/3] usb: core: remove local_irq_save() around ->complete() handler Date: Mon, 10 Sep 2018 11:20:00 +0200 Message-Id: <20180910092000.14693-4-bigeasy@linutronix.de> X-Mailer: git-send-email 2.19.0.rc2 In-Reply-To: <20180910092000.14693-1-bigeasy@linutronix.de> References: <20180910092000.14693-1-bigeasy@linutronix.de> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The core disabled interrupts before invocation the ->complete handler because the handler might have expected that interrupts are disabled. All handlers were audited and use proper locking now. With it, the core code no longer needs to disable interrupts before invoking the ->complete handler. Remove local_irq_save() statement before invoking the ->complete handler. Cc: Alan Stern Signed-off-by: Sebastian Andrzej Siewior Acked-by: Alan Stern --- drivers/usb/core/hcd.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 1c21955fe7c00..f985d2303095c 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1755,20 +1755,7 @@ static void __usb_hcd_giveback_urb(struct urb *urb) /* pass ownership to the completion handler */ urb->status = status; - - /* - * We disable local IRQs here avoid possible deadlock because - * drivers may call spin_lock() to hold lock which might be - * acquired in one hard interrupt handler. - * - * The local_irq_save()/local_irq_restore() around complete() - * will be removed if current USB drivers have been cleaned up - * and no one may trigger the above deadlock situation when - * running complete() in tasklet. - */ - local_irq_save(flags); urb->complete(urb); - local_irq_restore(flags); usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count);