From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B3B7420408E; Sun, 24 Nov 2024 13:44:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732455857; cv=none; b=nCtbpHtd2T4jXExYfvySEMNlD8zfucp2pvWxk7ACYb00BNcgHOypUW6UROt1k+dPhlLIGiMpNRAOnDUXheq11oDCXqG+f5cl+EchXI/P7DgfNEvnAfKsKEHJJbwpO9jKj23743SHgRmQd78WBKw7Gi336bASkkb7MxZLcYBDoUQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732455857; c=relaxed/simple; bh=FKkLCagGZZI+0/8piRcbpFI14zgHSDxcKrCvRX5yhws=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IMEZpcLC/NqdkWJ0sUrc9u8Kq0GXAd6gY89iKnIm++lvJXgPy/bLGRHQrdc0KfVN9MjRJ5UnvKR4KTWLsbC1N9vqG6GRTpuWnWF3gELpW/NPqSBzlaU2uBr2yDTKqRGJuzwJNsnk/b9GvPm9yt7I2gItrIL2kBt+12YTWVdQd6A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Tgv2NdD/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Tgv2NdD/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F1A5DC4CECC; Sun, 24 Nov 2024 13:44:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1732455857; bh=FKkLCagGZZI+0/8piRcbpFI14zgHSDxcKrCvRX5yhws=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Tgv2NdD/u48D6T8aU6j9+Je9Lbn3TapAmqGVAF7p23nZ4dlgB17ZzKR348XeAddZs 4KEWI/rUBUbvCYP0G106z5xzgCCjs1ydvoKYz7M4Uu6mmmcBH8khkDEvgXjawrxS/n a2Kd1OVumFfsKSSZWFqNdqUOZRG4UtVJLrHsT0ahYSOZNS0DOXsau7ZymOn3D9bKow OwanCkBZxXvww/Ly7EWm9uVmRKoTgmsROxfAEAhOM18etiWhALitTkjOP1soTsFqdJ nZey0ZZPLOLYboW3st48yXw0txPgy8UbKH3FX8ez3USfqvtGBogLa2Fa6RdL9OaaMR kh8RcSUm+DzJQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Aleksandr Mishin , Sean Anderson , Jakub Kicinski , Sasha Levin , madalin.bucur@nxp.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, pabeni@redhat.com, netdev@vger.kernel.org Subject: [PATCH AUTOSEL 6.11 59/87] fsl/fman: Validate cell-index value obtained from Device Tree Date: Sun, 24 Nov 2024 08:38:37 -0500 Message-ID: <20241124134102.3344326-59-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241124134102.3344326-1-sashal@kernel.org> References: <20241124134102.3344326-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.11.10 Content-Transfer-Encoding: 8bit From: Aleksandr Mishin [ Upstream commit bd50c4125c98bd1a86f8e514872159700a9c678c ] Cell-index value is obtained from Device Tree and then used to calculate the index for accessing arrays port_mfl[], mac_mfl[] and intr_mng[]. In case of broken DT due to any error cell-index can contain any value and it is possible to go beyond the array boundaries which can lead at least to memory corruption. Validate cell-index value obtained from Device Tree. Found by Linux Verification Center (linuxtesting.org) with SVACE. Reviewed-by: Sean Anderson Signed-off-by: Aleksandr Mishin Link: https://patch.msgid.link/20241028065824.15452-1-amishin@t-argos.ru Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/freescale/fman/fman.c | 1 - drivers/net/ethernet/freescale/fman/fman.h | 3 +++ drivers/net/ethernet/freescale/fman/mac.c | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/fman/fman.c b/drivers/net/ethernet/freescale/fman/fman.c index d96028f01770c..fb416d60dcd72 100644 --- a/drivers/net/ethernet/freescale/fman/fman.c +++ b/drivers/net/ethernet/freescale/fman/fman.c @@ -24,7 +24,6 @@ /* General defines */ #define FMAN_LIODN_TBL 64 /* size of LIODN table */ -#define MAX_NUM_OF_MACS 10 #define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4 #define BASE_RX_PORTID 0x08 #define BASE_TX_PORTID 0x28 diff --git a/drivers/net/ethernet/freescale/fman/fman.h b/drivers/net/ethernet/freescale/fman/fman.h index 2ea575a46675b..74eb62eba0d7f 100644 --- a/drivers/net/ethernet/freescale/fman/fman.h +++ b/drivers/net/ethernet/freescale/fman/fman.h @@ -74,6 +74,9 @@ #define BM_MAX_NUM_OF_POOLS 64 /* Buffers pools */ #define FMAN_PORT_MAX_EXT_POOLS_NUM 8 /* External BM pools per Rx port */ +/* General defines */ +#define MAX_NUM_OF_MACS 10 + struct fman; /* FMan data */ /* Enum for defining port types */ diff --git a/drivers/net/ethernet/freescale/fman/mac.c b/drivers/net/ethernet/freescale/fman/mac.c index 11da139082e1b..1916a2ac48b9f 100644 --- a/drivers/net/ethernet/freescale/fman/mac.c +++ b/drivers/net/ethernet/freescale/fman/mac.c @@ -259,6 +259,11 @@ static int mac_probe(struct platform_device *_of_dev) err = -EINVAL; goto _return_dev_put; } + if (val >= MAX_NUM_OF_MACS) { + dev_err(dev, "cell-index value is too big for %pOF\n", mac_node); + err = -EINVAL; + goto _return_dev_put; + } priv->cell_index = (u8)val; /* Get the MAC address */ -- 2.43.0