Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp658160pxb; Tue, 5 Apr 2022 17:37:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzuObO00gmfCr2jOxh2WeltVMFdCLROAP1Z5cV48vb4knrqxwBF5UJvquJBVdeH7C67Ocva X-Received: by 2002:a17:907:3e99:b0:6db:6c1c:d9d9 with SMTP id hs25-20020a1709073e9900b006db6c1cd9d9mr5943794ejc.688.1649205330624; Tue, 05 Apr 2022 17:35:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649205330; cv=none; d=google.com; s=arc-20160816; b=pl9+SKrDXDnSYf/89RU56VJ/C9Y0PfSAYLeuvDshoyL9IqxkkBe1SJWtIUtYDZj7Ci 2H4LEaDNhVly8TSNhKrnCkC6MBevfSC3JfJYccijuvCu36U0uKVjeuSA/+YV1iKRmzFq xgthFlD/SOo0wbiTX1jsiIQ1v8QGA6tl9g6swk3UXAFwMll5eI5f++s4WiFghACpjk/w cDLLTIMTlretk8R4lh0mrmNJPXtDI64AZeNgydOpxypLi/0BFzuF9uOA+JbaVninE+/4 jHQvFTZXC/5nUIo3hE/6wOWMVCsnTjpE+062p4OQpkkaPRTi1S9AoywOHghho6LNbCOY 0MAQ== 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=/FWEKqJ1jRPNF9wUV3Y/lff624iEl2cKeuach41SOT0=; b=XVW/Au9Ax4SzdSMfvG4+UlJ6+VMK7yqN+5N4XUv2IHkoODYqUS39n2KlRYjApccfcl ZqUNiwb6dLRuJJYbg8pjFqENs0+5XoF5fKdbxuDa7EU15lodZWILEWO1ZzVN6ukAuvwB 25JB4CAL/p5VADGLc+szWAL4+PeByU1zCGgLa2vUkqp+kOIlFZsEjoHOFuh3odjXrFx+ ON1FSJVwOQinMUat6EPzlq0Jp8gLDw/5Wuy67UzODisoz93NWOY6/Cwldb/zqNdsYqhu Yi0YVQAoDzX0MaDME+0LflaYUCadIzLlF+2l5qDykcfIirPbgONjgHAPHonZwyzlRBDa ljDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="hbquNh/X"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r14-20020a170906280e00b006df76385be3si9457183ejc.131.2022.04.05.17.35.05; Tue, 05 Apr 2022 17:35:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="hbquNh/X"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S1380245AbiDEMxn (ORCPT + 99 others); Tue, 5 Apr 2022 08:53:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343739AbiDEJMm (ORCPT ); Tue, 5 Apr 2022 05:12:42 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A322636693; Tue, 5 Apr 2022 02:00:24 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 4EF00B818F3; Tue, 5 Apr 2022 09:00:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BC148C385A0; Tue, 5 Apr 2022 09:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649149222; bh=2xrrqqAmurLYBbNH7gEODCEGzcqKSrwq1J93E5yRers=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hbquNh/X0cuSG1GuBo4SB0L8bCCt4IM1i6DWZLoi/13O6YxSW3IKcc0GigcvAO6np OvjGEJbHR9uMtZx0IIZA2uTnzAO2Yuy4oJcyq9NnbNvuZZjIzI81XVExWGiw6htcpU ec1LacT4TuNJgLm6gXjkerOkDG3AYLyNFgaCqqUo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jan Sondhauss , Vignesh Raghavendra , Jakub Kicinski , Sasha Levin Subject: [PATCH 5.16 0639/1017] drivers: ethernet: cpsw: fix panic when interrupt coaleceing is set via ethtool Date: Tue, 5 Apr 2022 09:25:52 +0200 Message-Id: <20220405070413.250573972@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070354.155796697@linuxfoundation.org> References: <20220405070354.155796697@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sondhauß, Jan [ Upstream commit 2844e2434385819f674d1fb4130c308c50ba681e ] cpsw_ethtool_begin directly returns the result of pm_runtime_get_sync when successful. pm_runtime_get_sync returns -error code on failure and 0 on successful resume but also 1 when the device is already active. So the common case for cpsw_ethtool_begin is to return 1. That leads to inconsistent calls to pm_runtime_put in the call-chain so that pm_runtime_put is called one too many times and as result leaving the cpsw dev behind suspended. The suspended cpsw dev leads to an access violation later on by different parts of the cpsw driver. Fix this by calling the return-friendly pm_runtime_resume_and_get function. Fixes: d43c65b05b84 ("ethtool: runtime-resume netdev parent in ethnl_ops_begin") Signed-off-by: Jan Sondhauss Reviewed-by: Vignesh Raghavendra Link: https://lore.kernel.org/r/20220323084725.65864-1-jan.sondhauss@wago.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/ti/cpsw_ethtool.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/ti/cpsw_ethtool.c b/drivers/net/ethernet/ti/cpsw_ethtool.c index 158c8d3793f4..b5bae6324970 100644 --- a/drivers/net/ethernet/ti/cpsw_ethtool.c +++ b/drivers/net/ethernet/ti/cpsw_ethtool.c @@ -364,11 +364,9 @@ int cpsw_ethtool_op_begin(struct net_device *ndev) struct cpsw_common *cpsw = priv->cpsw; int ret; - ret = pm_runtime_get_sync(cpsw->dev); - if (ret < 0) { + ret = pm_runtime_resume_and_get(cpsw->dev); + if (ret < 0) cpsw_err(priv, drv, "ethtool begin failed %d\n", ret); - pm_runtime_put_noidle(cpsw->dev); - } return ret; } -- 2.34.1