From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CD1EC61CE4 for ; Sun, 20 Jan 2019 09:05:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6AE2B2085B for ; Sun, 20 Jan 2019 09:05:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kcliPpKR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730338AbfATJF3 (ORCPT ); Sun, 20 Jan 2019 04:05:29 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:33640 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730186AbfATJF2 (ORCPT ); Sun, 20 Jan 2019 04:05:28 -0500 Received: by mail-wm1-f65.google.com with SMTP id r24so3950889wmh.0 for ; Sun, 20 Jan 2019 01:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=rRS55ki7DD2GMtvh8+Qu4p0y024PoHo49XySfQ9COEY=; b=kcliPpKR95MZbtvzgeRPKtfuC6c3kaq78UOkWaZyIbkUQvab2gsWYCDbsHPL5X59y7 WfcmitPROttp5bkIeS6IrNoMWdMMPoa/qbRnTn4TGZYLlmvZ2beYdEZBVh1aaDU80fZ/ 2dUki+JTrc6vm+KWUCIYuJNVK7bYCUNEfgcgnyxA1frteZVBCmd2tNhs9P2qFhHdk5Tl ZPoa8970+ux4ra20Y8CGoUWCcX1qa7GSaghZeCvBFgw/vbgCTYske0znWbihsZNU+ICK e+3lrvRBfralbK+gjGguSfox0Y5h6aekGDsNXd3/kON8AN1RDCKD9rQySRXrcyaClzqe vFog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=rRS55ki7DD2GMtvh8+Qu4p0y024PoHo49XySfQ9COEY=; b=nJbl6gVoLgajqIyjY4rgnzHUgQ65XnkVcRPsf8jCY9TmsoU8irMUFtRs5SPQPtKLqm y6QgqMXdeXSYjmnCcHb6o+EZWdAmIPrpmdtHXvQKyscBgqENb44X/D9h3d+e4mj7Xp9p RSUiDSfsjNoaeaoJDNBcXy1hsz3+7u4lMlF+kKbDHwX2f0fQEgdK3FZHEoS0R0vpwh9J urS9Et0Wp7QQx1HsNytpPdjgdZYrY2gBnjgWpRL72ErlpupPe4sRLYXa4yIy9qkLhpcJ 73Ofc1EiW7/XqIpkiPSsXX5PDmXhvtBt8AmzaXqFF+1Wfp7GSraW2PqLJjc75ivY7Sbh RkiQ== X-Gm-Message-State: AJcUukcA+61VKh6JZMFPpmP9NAeyhJEY2MszNhGUMLwEi8tDAQQvoSSR 5Z8vmozS0wQ3prEfsqQrH0LG8xAZ X-Google-Smtp-Source: ALg8bN4ua3GDYUvfeq1x25MxXd5ya2VaqYuoPbDqj9WGfWModHcTp3y3xgzWt5KvfUIM8XWdnec08w== X-Received: by 2002:a1c:c90b:: with SMTP id f11mr20891039wmb.33.1547975126060; Sun, 20 Jan 2019 01:05:26 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035? (p200300EA8BF1E200F1BDC97D6FA2E035.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:f1bd:c97d:6fa2:e035]) by smtp.googlemail.com with ESMTPSA id c21sm46474044wre.71.2019.01.20.01.05.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 Jan 2019 01:05:25 -0800 (PST) Subject: [PATCH net-next v2 2/4] net: phy: warn if phy_start is called from invalid state From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Message-ID: Date: Sun, 20 Jan 2019 10:02:13 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <36a3f6a9-7f4c-7d51-05aa-71e847132102@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org phy_start() should be called from states PHY_READY or PHY_HALTED only. Check for this to detect misbehaving drivers. Also the state machine should be started only when being called from one of the valid states. Signed-off-by: Heiner Kallweit --- drivers/net/phy/phy.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 3df6aadc5..fd928979b 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -861,9 +861,16 @@ void phy_start(struct phy_device *phydev) mutex_lock(&phydev->lock); + if (phydev->state != PHY_READY && phydev->state != PHY_HALTED) { + WARN(1, "called from state %s\n", + phy_state_to_str(phydev->state)); + goto out; + } + switch (phydev->state) { case PHY_READY: phydev->state = PHY_UP; + phy_start_machine(phydev); break; case PHY_HALTED: /* if phy was suspended, bring the physical link up again */ @@ -877,13 +884,13 @@ void phy_start(struct phy_device *phydev) } phydev->state = PHY_RESUMING; + phy_start_machine(phydev); break; default: break; } +out: mutex_unlock(&phydev->lock); - - phy_start_machine(phydev); } EXPORT_SYMBOL(phy_start); -- 2.20.1