Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp40135lfv; Tue, 12 Apr 2022 16:24:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRSmDpkB9tHoB5ICIJKyIKonsy0VyEqEz/WgwWp9mc/yPLIJCInlq+B8Em3Hp/Qol4SFYd X-Received: by 2002:a17:90a:560a:b0:1bc:72e7:3c13 with SMTP id r10-20020a17090a560a00b001bc72e73c13mr7579730pjf.246.1649805863291; Tue, 12 Apr 2022 16:24:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649805863; cv=none; d=google.com; s=arc-20160816; b=NGTwtPDEUmCnXd47LrywsPTu2F2pgxzlde2zicPlIUjvlAfwdyt6pmAHkYhcYi4uz8 C58LwFw/HasTvOiCh9ai8ubLiGlZCZA4mw+gQqtAddOqcRzQmi7fEOkLOE9zmI/3ClqG UBx+tdg0Dn5dhE2U/Mr7Ke+rq3UrOBG6vgzQwVmcG3O7nyfXdMyQ/AsklyhF7eeq7K/V WFLJVI4c7oFx1L2gR9xvhzU9WRBHR5MnXf1vBvPMVk5hBaOCFTBI6PrO5odX5GB5xMHt QPK466d8V+wkLS7W+MmhSmbhCTUBYSoDybkd0FP6s00EIdQZpFYylrsUQFtNxgTMjHTa 9V7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=yDzV8oILCqZnZHmcWwpZe6R6V8go9wvrc35SpOP7S1U=; b=UPml0kmI32BrT0/IOlJy8zJI1wm1EWy47E/KkgXzOj8TkeokuIo4PsnlL1GKpF/GMF J8hjwlQ8DiPMoKuhCGM/eo0nkRH/7T4EcGrvFKklYobiigVSriWOK7iB1x2/LD5UGSbI n6rxq2zX/SXOT9y+s9GmV3sPy3d9XxpIvR6cUjhMOh/QyCTO6ZYMrAI0/gdb0pK253Uz 3kPuV3ckLkG220sMOsLWm2QlOGq0fGb5CYo/wOSXmFEU7ZBnM/7TVPHFE6/h0wcWXptm EO9P8Xlm5CuS0LU2CX95oyD2F8haivhddP7U6D3CX9KwB+oJd9fjNAnZ+ubn0XH/9OQz cVRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=D8ocojwe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id lk14-20020a17090b33ce00b001cd44931fa4si1356936pjb.17.2022.04.12.16.24.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 16:24:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=D8ocojwe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 00D871A593B; Tue, 12 Apr 2022 14:17:04 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239405AbiDLCsP (ORCPT + 99 others); Mon, 11 Apr 2022 22:48:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230519AbiDLCsN (ORCPT ); Mon, 11 Apr 2022 22:48:13 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9BF720F74; Mon, 11 Apr 2022 19:45:57 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id cw11so166890pfb.1; Mon, 11 Apr 2022 19:45:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id; bh=yDzV8oILCqZnZHmcWwpZe6R6V8go9wvrc35SpOP7S1U=; b=D8ocojwebwAuVJECvGE3HrvkWDauww9u6f7Tl2oYIPQ0gsIgMB9u8uztM/2K0GwILr 3HKcPawRWq/xTBxzs7fAJWCdQDykBOqi9Qm4rusaEJxnhpe+FH1gcpQeex0PEaOHw1Wi Y3tVLouwBnAYqN7TsejC8fHS3fxX/QOLwGWIByepGEU/4W9/cgmv/vI0QQMczSQtjgbS 8e5RrQG+a04nCTgD6J56U8UyeofccX7OPy0Aw8PTnZtZPKKlEhptmCuugEw0qpKE9q1e Y2ee3+S7FMwaGo8KslZCyV56rnc548CqSdwY533xCGo4+K+7bZ6GyE1NROmIeifna0my jDbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=yDzV8oILCqZnZHmcWwpZe6R6V8go9wvrc35SpOP7S1U=; b=kWabYskaacVYr3+Py3568rqq7W0925kc7rlvml3GU8t0MCJ9wqLv2dY23o7H3RG6Qn I3+jsKpgZwmficZ0LxEYexlBg4Md1ywL3jINUdJ5ePbdeFCTT9EA5IKI/RRRiwF5ZF9l Crh8az2riTlQc4x/3DvyVwgIkRb6yhoygi+aiKvkzBYCPUs1qZ00xluGOW6I+AeE153R 45BpKbyzdeekseeZeFt5taI0/K55SA+1hoHRhr/mieuNuYbZJBG0oavd3ac2+3OuUbq4 NrvRIGrp+madrs0dbyqHRe8/881UzMPjU0no5/vN6megqnr6JgsA8/YkKIVrT7fms5Or 2yoQ== X-Gm-Message-State: AOAM531Y6rZY8Ld5kg3p0404Z9yYRKfx6C1lusIgct3SR5s3cIetBkG5 /9+mP2krnlDfN5UKNK9LhSA= X-Received: by 2002:aa7:8094:0:b0:505:b544:d1ca with SMTP id v20-20020aa78094000000b00505b544d1camr10176143pff.26.1649731557334; Mon, 11 Apr 2022 19:45:57 -0700 (PDT) Received: from localhost.localdomain ([159.226.95.43]) by smtp.googlemail.com with ESMTPSA id f16-20020a056a00239000b004fa7103e13csm38292926pfc.41.2022.04.11.19.45.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 19:45:57 -0700 (PDT) From: Miaoqian Lin To: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Jakub Kicinski , Paolo Abeni , Ansuel Smith , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: linmq006@gmail.com Subject: [PATCH] net: dsa: Fix return value check of wait_for_completion_timeout Date: Tue, 12 Apr 2022 02:45:40 +0000 Message-Id: <20220412024541.17572-1-linmq006@gmail.com> X-Mailer: git-send-email 2.17.1 X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 wait_for_completion_timeout() returns unsigned long not int. It returns 0 if timed out, and positive if completed. The check for <= 0 is ambiguous and should be == 0 here indicating timeout which is the only error case. Fixes: 2cd548566384 ("net: dsa: qca8k: add support for phy read/write with mgmt Ethernet") Fixes: 5950c7c0a68c ("net: dsa: qca8k: add support for mgmt read/write in Ethernet packet") Signed-off-by: Miaoqian Lin --- drivers/net/dsa/qca8k.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c index d3ed0a7f8077..bd8c238955a8 100644 --- a/drivers/net/dsa/qca8k.c +++ b/drivers/net/dsa/qca8k.c @@ -300,7 +300,7 @@ static int qca8k_read_eth(struct qca8k_priv *priv, u32 reg, u32 *val, int len) struct qca8k_mgmt_eth_data *mgmt_eth_data = &priv->mgmt_eth_data; struct sk_buff *skb; bool ack; - int ret; + unsigned long ret; skb = qca8k_alloc_mdio_header(MDIO_READ, reg, NULL, QCA8K_ETHERNET_MDIO_PRIORITY, len); @@ -338,7 +338,7 @@ static int qca8k_read_eth(struct qca8k_priv *priv, u32 reg, u32 *val, int len) mutex_unlock(&mgmt_eth_data->mutex); - if (ret <= 0) + if (ret == 0) return -ETIMEDOUT; if (!ack) @@ -352,7 +352,7 @@ static int qca8k_write_eth(struct qca8k_priv *priv, u32 reg, u32 *val, int len) struct qca8k_mgmt_eth_data *mgmt_eth_data = &priv->mgmt_eth_data; struct sk_buff *skb; bool ack; - int ret; + unsigned long ret; skb = qca8k_alloc_mdio_header(MDIO_WRITE, reg, val, QCA8K_ETHERNET_MDIO_PRIORITY, len); @@ -386,7 +386,7 @@ static int qca8k_write_eth(struct qca8k_priv *priv, u32 reg, u32 *val, int len) mutex_unlock(&mgmt_eth_data->mutex); - if (ret <= 0) + if (ret == 0) return -ETIMEDOUT; if (!ack) @@ -956,7 +956,7 @@ qca8k_phy_eth_busy_wait(struct qca8k_mgmt_eth_data *mgmt_eth_data, { struct sk_buff *skb = skb_copy(read_skb, GFP_KERNEL); bool ack; - int ret; + unsigned long ret; reinit_completion(&mgmt_eth_data->rw_done); @@ -972,7 +972,7 @@ qca8k_phy_eth_busy_wait(struct qca8k_mgmt_eth_data *mgmt_eth_data, ack = mgmt_eth_data->ack; - if (ret <= 0) + if (ret == 0) return -ETIMEDOUT; if (!ack) @@ -993,6 +993,7 @@ qca8k_phy_eth_command(struct qca8k_priv *priv, bool read, int phy, struct net_device *mgmt_master; int ret, ret1; bool ack; + unsigned long time_left; if (regnum >= QCA8K_MDIO_MASTER_MAX_REG) return -EINVAL; @@ -1059,12 +1060,12 @@ qca8k_phy_eth_command(struct qca8k_priv *priv, bool read, int phy, dev_queue_xmit(write_skb); - ret = wait_for_completion_timeout(&mgmt_eth_data->rw_done, - QCA8K_ETHERNET_TIMEOUT); + time_left = wait_for_completion_timeout(&mgmt_eth_data->rw_done, + QCA8K_ETHERNET_TIMEOUT); ack = mgmt_eth_data->ack; - if (ret <= 0) { + if (time_left == 0) { ret = -ETIMEDOUT; kfree_skb(read_skb); goto exit; @@ -1096,12 +1097,12 @@ qca8k_phy_eth_command(struct qca8k_priv *priv, bool read, int phy, dev_queue_xmit(read_skb); - ret = wait_for_completion_timeout(&mgmt_eth_data->rw_done, - QCA8K_ETHERNET_TIMEOUT); + time_left = wait_for_completion_timeout(&mgmt_eth_data->rw_done, + QCA8K_ETHERNET_TIMEOUT); ack = mgmt_eth_data->ack; - if (ret <= 0) { + if (time_left == 0) { ret = -ETIMEDOUT; goto exit; } -- 2.17.1