Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4158081pxv; Mon, 19 Jul 2021 18:47:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxo/v4Khf4+e71+NPTAr+f1MMRmQKnvDbbmEgEjyc6FnFGbxcaHI9QwpjHBuIRfgAeeVnFE X-Received: by 2002:a17:906:7151:: with SMTP id z17mr31071405ejj.166.1626745629972; Mon, 19 Jul 2021 18:47:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626745629; cv=none; d=google.com; s=arc-20160816; b=QdsB+cZHlm8YNrzt5rLt50oJ3Nsx+tgi3JJb9VEqpl8Fd43YvQXerwkSIAQgG7RJxn dkIjnjG5NN4cCOf6J7XnUqToJBOUM/D+//9SjbuFPyDksxDjnva26p0ie+U5EnaMFQhs EWrOL1i+k5XmuxQZPSpcNd0dx9iWpup4fgN1MwISf41Si+WlZeT96557KXCjb9ED/8Fv XK/Vh1USq0Inc725VyMLbLKCr71zUHrz93q5lQKJLZGjTlWySYiFwS2wTHAPFynzJBKN yLvdAG/IPHfk2365Q+e0gOUxw7G27pM3fK3ZDYwzQmDl2+Lcrjj2qktE0tnaQ5V7u6PW wUkQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=obp1JBy6NjeYxNCvn0hVWbhoGY4IX682sXfuzbgxNCw=; b=LdSDPiNNtVMxXKt3oGkdcjVvRp1kuWvjoxs/09MW2V2clncOrMR+buSR5o4jGXBL65 8hR0r8pojXfX0+NjGDSNh20Z+nimFo9qeOtLxrsDWFS9K09FJdvzkr2Ke5IqfdYz/N7w 1+fYmQrpOnAY6fZlykGj9djulvrBlz788t+USGUUzKJj1kIgY99gNLDvDpm5oN8bhGly cJ7upj6IVgYk4myzAPBsK5MuMSyZK0KlxzhU/+A/LDQ3oCVPexhyQJrWtUEphrQA72hO NgKppHDKCLlBLbZgFCeIVwFdP/NdfLtErcuOgzS4XSPQLFYS6jZO7MfpSUjYQANE+w5+ SyKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=KVrl60qY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m29si23502305edj.170.2021.07.19.18.46.47; Mon, 19 Jul 2021 18:47:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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=@linuxfoundation.org header.s=korg header.b=KVrl60qY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344967AbhGSPDI (ORCPT + 99 others); Mon, 19 Jul 2021 11:03:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:60916 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244208AbhGSOka (ORCPT ); Mon, 19 Jul 2021 10:40:30 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BCC5461175; Mon, 19 Jul 2021 15:21:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626708069; bh=qsIHHwD5PwQiuhnjDssTRMjsBvM7qqNQlrYb/pmkRdI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KVrl60qYIhMa7dGjLMc3mQg2PNZS4pnjw/6jTrVcSYuHSgn/Jn0bzBc+AYNCzdaec X8KCc3vXxzJ6L9tpXaRwjitNniJXgvCGE5vxa+HQpOiI4DsxH2iWxmWgn45eHYtNdO o4Df/U0xrgkLTSpMYqN6L9zLl2NnEzvdaMCEYqmA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Juri Lelli , Sebastian Andrzej Siewior , Thomas Gleixner , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 168/315] net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT Date: Mon, 19 Jul 2021 16:50:57 +0200 Message-Id: <20210719144948.420026059@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.861561397@linuxfoundation.org> References: <20210719144942.861561397@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sebastian Andrzej Siewior [ Upstream commit 8380c81d5c4fced6f4397795a5ae65758272bbfd ] __napi_schedule_irqoff() is an optimized version of __napi_schedule() which can be used where it is known that interrupts are disabled, e.g. in interrupt-handlers, spin_lock_irq() sections or hrtimer callbacks. On PREEMPT_RT enabled kernels this assumptions is not true. Force- threaded interrupt handlers and spinlocks are not disabling interrupts and the NAPI hrtimer callback is forced into softirq context which runs with interrupts enabled as well. Chasing all usage sites of __napi_schedule_irqoff() is a whack-a-mole game so make __napi_schedule_irqoff() invoke __napi_schedule() for PREEMPT_RT kernels. The callers of ____napi_schedule() in the networking core have been audited and are correct on PREEMPT_RT kernels as well. Reported-by: Juri Lelli Signed-off-by: Sebastian Andrzej Siewior Reviewed-by: Thomas Gleixner Reviewed-by: Juri Lelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/core/dev.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 7ee89125cd53..aa419f3162b8 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5277,11 +5277,18 @@ EXPORT_SYMBOL(napi_schedule_prep); * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule * - * Variant of __napi_schedule() assuming hard irqs are masked + * Variant of __napi_schedule() assuming hard irqs are masked. + * + * On PREEMPT_RT enabled kernels this maps to __napi_schedule() + * because the interrupt disabled assumption might not be true + * due to force-threaded interrupts and spinlock substitution. */ void __napi_schedule_irqoff(struct napi_struct *n) { - ____napi_schedule(this_cpu_ptr(&softnet_data), n); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + ____napi_schedule(this_cpu_ptr(&softnet_data), n); + else + __napi_schedule(n); } EXPORT_SYMBOL(__napi_schedule_irqoff); -- 2.30.2