Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2384960pxb; Tue, 9 Mar 2021 00:47:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwJbvGMUYACOB8rvrE+MY5PR4MAiY6EC7RtVCBDvO2yo7CZLRMjZCGzuPAYwb5+NDGlvYYw X-Received: by 2002:a17:907:3e92:: with SMTP id hs18mr18783284ejc.396.1615279631946; Tue, 09 Mar 2021 00:47:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615279631; cv=none; d=google.com; s=arc-20160816; b=YuAxev35iF6NUKwQ0uCukM33AsCYva6QQdmVKW/ljQgoL8aW3dATDqAI53aZgpmMFQ bhXTvJmcclBdQebDuVnVLrYg2ihQE1DPwdxNy+6w7UZEsNH5HifqMmd4JWpKP9Eg8dmY tcxUBkVkbgmxuSi+w0jU7riKU14C2YnrI0Ni34dwEpt28yG1YaKEUbETpzThNCSl2rPV y0tUaKGwR6cZxz4XJcnr8Hw+bQgSL2gg/q9ddnrIg0WaKF9n7R6tGF6kNjLHAzTfMeey cvla06RyYcPhU/2BxC9DOP3qAIH6+PTeBS90fhye4ev5kooi73btcTjqUxjvAnHzhZd4 L8xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:subject:cc:to:from:date:dkim-signature:dkim-signature :message-id; bh=tlyvAn/iLsnm16cCofFKPPKUvuYjwP7bNofYqMtepoU=; b=sapNfdy5+9U4ozaRtzHVqJe6Umls44H9D7hKzIw65vjjj964dE1f7JSMvllC0XJGee b+upKJFgaFowWkUqnqxFJ5CnLfirnihFkWhUvGd6PKqemDQeU87hOqw/NcEJz3pxGsKe ZWpQI6mobT1pTQiIU5xDGDCDpGgHRson73hJk9REPITavDk1ngHB8eRg1WP5DSGJCx0h XGQHhvgcsWopTIsDZ/F4jNC6gRTc29k2cNYvQcb8fdCMNhIYQqihMij+HohZwS495y1A QkSQBWbYdm6UHY+dYTyKSYBftSpyIXDD+oK925IVcH6zv/6FaLU6MsNOfed2aoQc+YSW 7z4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=Qlzwohm0; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=4uviCJ31; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g6si8652908ejo.534.2021.03.09.00.46.49; Tue, 09 Mar 2021 00:47:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=Qlzwohm0; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=4uviCJ31; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231352AbhCIIqW (ORCPT + 99 others); Tue, 9 Mar 2021 03:46:22 -0500 Received: from Galois.linutronix.de ([193.142.43.55]:51322 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230476AbhCIIpq (ORCPT ); Tue, 9 Mar 2021 03:45:46 -0500 Message-Id: <20210309084242.616379058@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1615279544; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: references:references; bh=tlyvAn/iLsnm16cCofFKPPKUvuYjwP7bNofYqMtepoU=; b=Qlzwohm0ky1Wc0yoAaFc1u7qAxUQot4tEXPvu5fFgMXwl8en8cJNZqPLoDOXlh+yWNCdyA 7CvuQrdNx8rNz1AfWKfp7iu7JJI1fARHIfbiCBh2Y7QoujPJ7jd7/iZILi+8hg/MuJBtQ6 sf5gHlbIZy7sEnj16W1LaivwXrHTx2iphw7GtshoGLN+aI4O3nEKodZtfrYcJGpNa4w3Jk tsk7W6FG48rHe17gdBaF1k4TwBMZme3Yvx+GPES6K6c5/jDZ2DuFBthglaOQNKxfvdnaNT iyeBbpnMxyky1tIueNyKNnDmJtLJdAjMJ+LU9+DUS+5LSqiWsRhRbbyjQenOTg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1615279544; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: references:references; bh=tlyvAn/iLsnm16cCofFKPPKUvuYjwP7bNofYqMtepoU=; b=4uviCJ31waHDVyHXuUlHnZ6PNw0FIonj8rD9WJzrc5m+wDPM7Ai550CdyaMdzhAP03Jqt1 Ixw9TwLF4CvNbACg== Date: Tue, 09 Mar 2021 09:42:16 +0100 From: Thomas Gleixner To: LKML Cc: Frederic Weisbecker , Sebastian Andrzej Siewior , "Ahmed S. Darwish" , Stefan Richter , linux1394-devel@lists.sourceforge.net, Peter Zijlstra , Denis Kirjanov , "David S. Miller" , Jakub Kicinski , netdev@vger.kernel.org, ath9k-devel@qca.qualcomm.com, Kalle Valo , linux-wireless@vger.kernel.org, Chas Williams <3chas3@gmail.com>, linux-atm-general@lists.sourceforge.net, "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Wei Liu , Lorenzo Pieralisi , Rob Herring , Bjorn Helgaas , linux-hyperv@vger.kernel.org, linux-pci@vger.kernel.org Subject: [patch 13/14] firewire: ohci: Use tasklet_disable_in_atomic() where required References: <20210309084203.995862150@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-transfer-encoding: 8-bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Sebastian Andrzej Siewior tasklet_disable() is invoked in several places. Some of them are in atomic context which prevents a conversion of tasklet_disable() to a sleepable function. The atomic callchains are: ar_context_tasklet() ohci_cancel_packet() tasklet_disable() ... ohci_flush_iso_completions() tasklet_disable() The invocation of tasklet_disable() from at_context_flush() is always in preemptible context. Use tasklet_disable_in_atomic() for the two invocations in ohci_cancel_packet() and ohci_flush_iso_completions(). Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Thomas Gleixner Cc: Stefan Richter Cc: linux1394-devel@lists.sourceforge.net --- drivers/firewire/ohci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -2545,7 +2545,7 @@ static int ohci_cancel_packet(struct fw_ struct driver_data *driver_data = packet->driver_data; int ret = -ENOENT; - tasklet_disable(&ctx->tasklet); + tasklet_disable_in_atomic(&ctx->tasklet); if (packet->ack != 0) goto out; @@ -3465,7 +3465,7 @@ static int ohci_flush_iso_completions(st struct iso_context *ctx = container_of(base, struct iso_context, base); int ret = 0; - tasklet_disable(&ctx->context.tasklet); + tasklet_disable_in_atomic(&ctx->context.tasklet); if (!test_and_set_bit_lock(0, &ctx->flushing_completions)) { context_tasklet((unsigned long)&ctx->context);