From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7397B48A8B1 for ; Thu, 13 Aug 2026 15:31:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786635099; cv=none; b=YGn2fjwcxO6rgS8MCoDSSo8jpBn+G5UI4GrI4rsu49dCMgXJEGg8aQ4fX/qKQQheM35HBY/Wir8tkdhLQUNAVvr1hUdUwD1Y33Oa2qu1gNkN6JMIXPkPn7hJA2AVeFUgv0D0dJaxRHQRkX4TsFexeS3rtQKBtHkQxiaNZAuuuRQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786635099; c=relaxed/simple; bh=ubC8xB2KvWN77EL+tuwQjmKjp/A3BkprKNZHUU9qR1I=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=qFrjNDS+XRah8P6LzEBfV+yJMJneIlD7T82ocEYC41MI/2pbuF+z7zVepT47PcnIYWVg08ra2p9ryIb7jrH3sX+go5NpXv6+4RUe6F93KB12M1VUy5FjIxFU413zDHnIkGsEValrOneX1WOvDFtCOwLGNkcVWVdwaTLeGleoBks= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mp9U5VIJ; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mp9U5VIJ" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2cc7e86e7aeso588685ad.2 for ; Thu, 13 Aug 2026 08:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786635098; x=1787239898; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=HaMXv5uU2gav+xr2y+0CuLYsTKZezZiW55X0WMSejck=; b=mp9U5VIJmTefwW7GwFju11hOGwVCl5GV6FoHn8leIiZD6R6wz3ePMLmVRzR9eIP5iC aMlLwNFbgay5YOLCm/2/2jviUEootCbTIw6muEcIkHCBxMtggnFErGzS6bdRRVpMXkOq CJGSCLr8b3fnSDh0IssRKRIwS5BUrxGb+KsDIE/Vpw7HevpK6lbHWkqDmF68vv7IxKvZ G0oiA8t1LrevAT3MjpgCvNAVe0dn50q2JX1NfvenedRyMADCdj01kyQHFZr4hzGi0qW3 I8MCoy6cZXShtYUk+4O/07DBm2ATxu+BJfd5A+CGZ2ZHlSSNUgA6al2r2UEBqtpCbpZn I9rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786635098; x=1787239898; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HaMXv5uU2gav+xr2y+0CuLYsTKZezZiW55X0WMSejck=; b=N8ErdPNWy4pHrL7/j4YQ52QxpnKvGQT7wC/0X6hSarrI6QA/RVamwvwB4TolTBfEOn bl2tMMZfMnC12JR9LNEiCwQFfCTI7SI8QW5cwssDEUvO0tbFUF0O5OGj4lhbf/G0587T 6hb34uDij0X3xqPTZndAiWlCKV74uvz1HFJGI7trg1Ra8UmRvK6F8gUyPCQIvlO/Rtff n60pgMQZDjvGxAL38VXX3TRXFRgpR7tGO4xERk3/uNaJoOBfBbbQIG3JhUu7gGsTE+3L DtHhQDwnLbQxUrLY/Zy21X4IttIKxCSbwHDiGK1u+FODgRJ+LZy4gzMEYsqnlGk5TpiQ 0KFg== X-Forwarded-Encrypted: i=1; AHgh+RoMVKNKBHuHpptnoCosj/EluwGRLRY0Zcdsoduov2EBdBzYXq+pySy3ZThxqmW4SzHc7zV9ch9VaLoVsDY=@vger.kernel.org X-Gm-Message-State: AOJu0YxDOT3frK6dlZ4UoZb4Tec8zt5KTjytWSdetTI1hrP1Anm7XWo5 Ay0/RTlnwWh3hbbubujHOaQgVeh1NDVrTxde7FXE73kc6eGrRfSqLZFe X-Gm-Gg: AR+sD10vYJV4erIxyBHAshr75oqBtLqQLmzqtv7Lcr6Q0Ogplb8yIlCE47aIhGBcUIN 4/y4YPfRynht609pwSWGD56Ck0ceCY/2r7/cCYz0OHFqaATnmiv8j8LepQSbwbw5foqSmNUkiUt 95RzYZtnSNGkC8qjzcxJfXIpmRU0ptYnlk5o9u7fX/BsWSrWNAvLZX0Q1bxyet4lRV5z7NcVxTc 94eagdIYUQsebMRrk4ee0KTnKYv8X/MHcXTnZFCwEJcVfwH1QfBGp+MHlZ0Gownfpt4LkzDlUzG UFFfOJCAicuN/zCp/cZK8dIPMpOWJid4+hW1PipaYRXVoMBC03uyXgyKw2Vg0pGWliP5CyXo0t5 D1Sf9Gt71RkZ4HtctGY4vkZI2oanp2EN9vV/YAeS/ZoeauQrTFrpvDu1F1c/To2wPwmrECx014J Kv+44wL1MJnZHz2rpcLzrDPpLpW6m51URz9WRUAxlq96Sv6tmRiy+CTC0xlGYtiKHHRx3ozJJoM l4ZBtY= X-Received: by 2002:a17:903:4588:b0:2c9:e2c1:4fb5 with SMTP id d9443c01a7336-2d37ebcf007mr71805905ad.22.1786635097517; Thu, 13 Aug 2026 08:31:37 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:3b7:6da1:c188:d14f]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d37c49cc32sm11881255ad.63.2026.08.13.08.31.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2026 08:31:37 -0700 (PDT) From: Ruoyu Wang To: netdev@vger.kernel.org Cc: andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, linux-kernel@vger.kernel.org, Ruoyu Wang Subject: [PATCH net] net: dsa: mv88e6xxx: Fix PCS link check on CMODE read error Date: Thu, 13 Aug 2026 23:31:31 +0800 Message-ID: <20260813153131.3952970-1-ruoyuw560@gmail.com> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit mv88e6352_pcs_link_check() ignores errors returned by port_get_cmode(). If the port status register read fails, mv88e6352_port_get_cmode() returns without setting cmode. The link check then compares an uninitialized value and may incorrectly treat the PCS as active. Save the return value and fail the link check after releasing the register lock. marvell_c22_pcs_get_state() initializes the reported link state to down before calling the check, so a read failure is handled safely until a later poll succeeds. This issue was found by a static analysis checker and confirmed by manual source review. Fixes: 85764555442f ("net: dsa: mv88e6xxx: convert 88e6352 to phylink_pcs") Signed-off-by: Ruoyu Wang --- drivers/net/dsa/mv88e6xxx/pcs-6352.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/mv88e6xxx/pcs-6352.c b/drivers/net/dsa/mv88e6xxx/pcs-6352.c index 4228ae5bb9db0f..437054711a2d8b 100644 --- a/drivers/net/dsa/mv88e6xxx/pcs-6352.c +++ b/drivers/net/dsa/mv88e6xxx/pcs-6352.c @@ -305,13 +305,16 @@ static bool mv88e6352_pcs_link_check(struct marvell_c22_pcs *mpcs) struct mv88e6xxx_port *port = mpcs->port; struct mv88e6xxx_chip *chip = port->chip; u8 cmode; + int err; /* Port 4 can be in auto-media mode. Check that the port is * associated with the mpcs. */ mv88e6xxx_reg_lock(chip); - chip->info->ops->port_get_cmode(chip, port->port, &cmode); + err = chip->info->ops->port_get_cmode(chip, port->port, &cmode); mv88e6xxx_reg_unlock(chip); + if (err) + return false; return cmode == MV88E6XXX_PORT_STS_CMODE_100BASEX || cmode == MV88E6XXX_PORT_STS_CMODE_1000BASEX || -- 2.51.0