Hi, > -----Original Message----- > From: Marek Vasut <marek.vasut+rene...@mailbox.org> > Sent: Sunday, November 3, 2024 5:28 AM > To: u-boot@lists.denx.de > Cc: Marek Vasut <marek.vasut+rene...@mailbox.org>; Heinrich Schuchardt > <xypron.g...@gmx.de>; Cédric Le Goater <c...@kaod.org>; Ashok Reddy Soma > <ashok.reddy.s...@amd.com>; Erkiaga Elorza, Ibai <ibai.erkiaga- > elo...@amd.com>; Jagan Teki <ja...@amarulasolutions.com>; Simek, Michal > <michal.si...@amd.com>; Tom Rini <tr...@konsulko.com>; Abbarapu, Venkatesh > <venkatesh.abbar...@amd.com>; William Zhang <william.zh...@broadcom.com> > Subject: [PATCH] mtd: spi-nor: Fix integer overflow in stacked memories > support > > The 5d40b3d384dc ("mtd: spi-nor: Add parallel and stacked memories support") > adds new SPI bus flags, but also introduces a completely new set of SPI bus > flags in > another location. The existing flags field is type u8, while the new separate > flags are > BIT(8) and higher. Use of those new flags triggers integer overflow. > > Drop the newly introduced flags which were never used anywhere in the code. > Move > the one remaining flag which was used in the correct place and change it from > BIT(8) > to BIT(6) so it fits the u8 flags. > > Fixes: 5d40b3d384dc ("mtd: spi-nor: Add parallel and stacked memories > support") > Addresses-Coverity-ID: 510804 Extra high-order bits > Reported-by: Heinrich Schuchardt <xypron.g...@gmx.de> > Signed-off-by: Marek Vasut <marek.vasut+rene...@mailbox.org> > --- > Cc: "Cédric Le Goater" <c...@kaod.org> > Cc: Ashok Reddy Soma <ashok.reddy.s...@amd.com> > Cc: Heinrich Schuchardt <xypron.g...@gmx.de> > Cc: Ibai Erkiaga <ibai.erkiaga-elo...@amd.com> > Cc: Jagan Teki <ja...@amarulasolutions.com> > Cc: Michal Simek <michal.si...@amd.com> > Cc: Tom Rini <tr...@konsulko.com> > Cc: Venkatesh Yadav Abbarapu <venkatesh.abbar...@amd.com> > Cc: William Zhang <william.zh...@broadcom.com> > --- > Maybe we should revert the whole stacked patchset until it is fixed properly ? > --- > drivers/spi/zynq_qspi.c | 2 +- > drivers/spi/zynqmp_gqspi.c | 6 +++--- > include/spi.h | 8 ++------ > 3 files changed, 6 insertions(+), 10 deletions(-) > > diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c index > 4aad3248d9e..e43dbb40c4a 100644 > --- a/drivers/spi/zynq_qspi.c > +++ b/drivers/spi/zynq_qspi.c > @@ -813,7 +813,7 @@ static int zynq_qspi_exec_op(struct spi_slave *slave, > > priv->is_parallel = false; > priv->is_stacked = false; > - slave->flags &= ~SPI_XFER_MASK; > + slave->flags &= ~SPI_XFER_LOWER; > spi_release_bus(slave); > > return 0; > diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c index > 1d19b2606c5..4251bf28cd3 100644 > --- a/drivers/spi/zynqmp_gqspi.c > +++ b/drivers/spi/zynqmp_gqspi.c > @@ -870,8 +870,8 @@ static int zynqmp_qspi_exec_op(struct spi_slave *slave, > priv->bus = 0; > > if (priv->is_parallel) { > - if (slave->flags & SPI_XFER_MASK) > - priv->bus = (slave->flags & SPI_XFER_MASK) >> 8; > + if (slave->flags & SPI_XFER_LOWER) > + priv->bus = 1; > if (zynqmp_qspi_update_stripe(op)) > priv->stripe = 1; > } > @@ -890,7 +890,7 @@ static int zynqmp_qspi_exec_op(struct spi_slave *slave, > zynqmp_qspi_chipselect(priv, 0); > > priv->is_parallel = false; > - slave->flags &= ~SPI_XFER_MASK; > + slave->flags &= ~SPI_XFER_LOWER; > > return ret; > } > diff --git a/include/spi.h b/include/spi.h index 3a92d02f215..6944773b596 > 100644 > --- a/include/spi.h > +++ b/include/spi.h > @@ -41,12 +41,6 @@ > #define SPI_3BYTE_MODE 0x0 > #define SPI_4BYTE_MODE 0x1 > > -/* SPI transfer flags */ > -#define SPI_XFER_STRIPE (1 << 6) > -#define SPI_XFER_MASK (3 << 8) > -#define SPI_XFER_LOWER (1 << 8) > -#define SPI_XFER_UPPER (2 << 8) > - > /* Max no. of CS supported per spi device */ > #define SPI_CS_CNT_MAX 2 > > @@ -169,6 +163,8 @@ struct spi_slave { > #define SPI_XFER_ONCE (SPI_XFER_BEGIN | SPI_XFER_END) > #define SPI_XFER_U_PAGE BIT(4) > #define SPI_XFER_STACKED BIT(5) > +#define SPI_XFER_LOWER BIT(6) > + > /* > * Flag indicating that the spi-controller has multi chip select > * capability and can assert/de-assert more than one chip select > -- > 2.45.2
Reviewed-by: Venkatesh Yadav Abbarapu <venkatesh.abbar...@amd.com Thanks Venkatesh