From patchwork Sun Oct 24 19:48:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Lunn X-Patchwork-Id: 12580423 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D285C433EF for ; Sun, 24 Oct 2021 19:48:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2C27E604D2 for ; Sun, 24 Oct 2021 19:48:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232130AbhJXTuq (ORCPT ); Sun, 24 Oct 2021 15:50:46 -0400 Received: from vps0.lunn.ch ([185.16.172.187]:55958 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232008AbhJXTup (ORCPT ); Sun, 24 Oct 2021 15:50:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:From:Sender:Reply-To:Subject:Date: Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Content-Disposition:In-Reply-To:References; bh=9Jw2ytqm18+RHu+g2ogdNjEmcgbT3lBIHrOnWZPPB8Y=; b=NcNbMqwv16rMdjFIT/a2s5hD9C eWWDinRQ/gqgN6RYYk7oBBbG67S2ob+N2ZxNVszpPxRS4XYHUQ2n06D9gDkKtMN+eR2YzjOCyw6/k XOKscPNO/rlTlAGDOEDt3Sf2jL/xj5/0F0jnkMXh7tC+JpPGMewJHjhfx7RhiXKQ2t5k=; Received: from andrew by vps0.lunn.ch with local (Exim 4.94.2) (envelope-from ) id 1mejTf-00Baci-Af; Sun, 24 Oct 2021 21:48:19 +0200 From: Andrew Lunn To: David Miller , Jakub Kicinski Cc: netdev , Walter.Stoll@duagon.com, Russell King , Heiner Kallweit , Andrew Lunn Subject: [PATCH net 4/4] phy: phy_ethtool_ksettings_set: Lock the PHY while changing settings Date: Sun, 24 Oct 2021 21:48:05 +0200 Message-Id: <20211024194805.2762333-5-andrew@lunn.ch> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211024194805.2762333-1-andrew@lunn.ch> References: <20211024194805.2762333-1-andrew@lunn.ch> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org There is a race condition where the PHY state machine can change members of the phydev structure at the same time userspace requests a change via ethtool. To prevent this, have phy_ethtool_ksettings_set take the PHY lock. Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support") Reported-by: Walter Stoll Suggested-by: Walter Stoll Tested-by: Walter Stoll Signed-off-by: Andrew Lunn --- drivers/net/phy/phy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index d845afab1af7..a3bfb156c83d 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -798,6 +798,7 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev, duplex != DUPLEX_FULL))) return -EINVAL; + mutex_lock(&phydev->lock); phydev->autoneg = autoneg; if (autoneg == AUTONEG_DISABLE) { @@ -814,8 +815,9 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev, phydev->mdix_ctrl = cmd->base.eth_tp_mdix_ctrl; /* Restart the PHY */ - phy_start_aneg(phydev); + _phy_start_aneg(phydev); + mutex_unlock(&phydev->lock); return 0; } EXPORT_SYMBOL(phy_ethtool_ksettings_set);