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 Andrzej Siewior X-Patchwork-Id: 10593753 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 89DD46CB for ; Mon, 10 Sep 2018 09:20:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7C0D828E11 for ; Mon, 10 Sep 2018 09:20:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7078428E16; Mon, 10 Sep 2018 09:20:22 +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=unavailable 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 7CFB828E23 for ; Mon, 10 Sep 2018 09:20:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728020AbeIJONO (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-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@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);