Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3771013pxv; Mon, 19 Jul 2021 08:21:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzQm24YIJyvuOCD03kDJ+rJvg8P9ws9QYPEMovxqrUPdMGsazLv2POvtKTUSQXY3MYQVZvt X-Received: by 2002:a17:906:6047:: with SMTP id p7mr27286321ejj.206.1626708116205; Mon, 19 Jul 2021 08:21:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626708116; cv=none; d=google.com; s=arc-20160816; b=ZNfflTkV/VNDk2Andsph0/W/6wl30i86XnBsUp1y1oPudBlsyPttIPaPtH880JqpDf FR5sgEguoFkAIqWreDg16Iour0sEQUe+3OsIghwQ7+pKF7ttabVZEUN7489uqL1MGcMq BR+MHVS5H2czhNqR7A6VXW11t/wmK2174mSv9uVrQtL5Z2h/yPO2mknzVpDNMQySj1S1 uhTrB8ZRG8oOGYg/9OkrlxpTpczbMxpLMfs2uIqUlzQm2/PNnsfyRpcaFUzeq6Q0l37i B3a0GRcFCiq3F+HCxra7QtJEy6bVWkLzMJipX1QcMU2xwoLASXK8MqxKNQaNddqmabC3 0SGw== 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=UN6PpR2EgeB2b0ESuiDS26KWYfhZcd95tMdklsd9TOs=; b=Ozwh2yJaSsq4XpiIl1CQ0It5loissgnL22rKdPHDy9HhYQSD/FhDcjEaRYnC7y2Ngy o1ArAW2YUoYUJ48e9wfPJDpvTw2PW15v6dYrJxgEff73DgaNZ4QlLn6MCQiCJhEmYZsq M3CXGcozeZ4RqLC0wLqlhrm7MfJJyOlKMLXfxcWtzr2abUdYhkIFkB+KZ1SgP7CfRWV9 RcSobbA38a2aWH2NnHXDHDwE28yi5j2TYaFzN0aZYkOMR5mvrnIv9Eqve2Fm0A/DvvD1 ddYF0aTCmXcdtsk4OROHQVCsGT68YuVRLg8jxULB+lr49j5wGV/y2kvTh847uz4U+jaa SJAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=tScd++kG; 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 l13si20600808edw.20.2021.07.19.08.21.32; Mon, 19 Jul 2021 08:21:56 -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=tScd++kG; 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 S243822AbhGSOjL (ORCPT + 99 others); Mon, 19 Jul 2021 10:39:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:39738 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244333AbhGSO3g (ORCPT ); Mon, 19 Jul 2021 10:29:36 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id F2EA661357; Mon, 19 Jul 2021 15:09:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626707360; bh=xdNVNWj+EF5c1s5ti6/KbPy938IFVnsEObk7O4JrChI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tScd++kGimckHpT5JGQT3G3nbsh1HxgcUWH3zgoZ6k74NLTHhI6nrD4TkFLoaknxd cmfSwDIjQuFaJNpVSi8uWhnft1p2cfiJWRmlXZoQ3hufMic0n3ic+3sLTuFdoHJRbd UffPy2XaSgP8nArIFo6LPutBuEXgwoWmGmH6Lbhg= 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.9 129/245] net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT Date: Mon, 19 Jul 2021 16:51:11 +0200 Message-Id: <20210719144944.574116710@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144940.288257948@linuxfoundation.org> References: <20210719144940.288257948@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 5b69a9a41dd5..47468fc5d0c9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4998,11 +4998,18 @@ EXPORT_SYMBOL(__napi_schedule); * __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