From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jagan Teki Date: Thu, 20 Dec 2018 16:26:25 +0530 Subject: [U-Boot] [PATCH 1/1] arm: sunxi: Add NULL pointer check In-Reply-To: <18e25666-911a-8dc6-f8f5-223f1761eafa@olimex.com> References: <20181205122757.14523-1-stefan@olimex.com> <18e25666-911a-8dc6-f8f5-223f1761eafa@olimex.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Thu, Dec 20, 2018 at 4:18 PM Stefan Mavrodiev wrote: > > > On 12/20/18 12:45 PM, Jagan Teki wrote: > > On Thu, Dec 20, 2018 at 3:59 PM Stefan Mavrodiev wrote: > >> > >> On 12/20/18 12:14 PM, Jagan Teki wrote: > >>> On Fri, Dec 14, 2018 at 3:48 PM Jagan Teki wrote: > >>>> On Wed, Dec 5, 2018 at 5:58 PM Stefan Mavrodiev wrote: > >>>>> Current driver doesn't check if the destination pointer is NULL. > >>>>> This cause the data from the FIFO to be stored inside the internal > >>>>> SDRAM ( address 0 ). > >>>>> > >>>>> The patch add simple check if the destination pointer is NULL. > >>>>> > >>>>> Signed-off-by: Stefan Mavrodiev > >>>>> --- > >>>>> drivers/spi/sun4i_spi.c | 3 ++- > >>>>> 1 file changed, 2 insertions(+), 1 deletion(-) > >>>>> > >>>>> diff --git a/drivers/spi/sun4i_spi.c b/drivers/spi/sun4i_spi.c > >>>>> index b86b5a00ad..38cc743c61 100644 > >>>>> --- a/drivers/spi/sun4i_spi.c > >>>>> +++ b/drivers/spi/sun4i_spi.c > >>>>> @@ -129,7 +129,8 @@ static inline void sun4i_spi_drain_fifo(struct sun4i_spi_priv *priv, int len) > >>>>> > >>>>> while (len--) { > >>>>> byte = readb(&priv->regs->rxdata); > >>>>> - *priv->rx_buf++ = byte; > >>>>> + if (priv->rx_buf) > >>>>> + *priv->rx_buf++ = byte; > >>>> Acked-by: Jagan Teki > >>>> > >>>> But, have you tested how much data in the fifo before drained? It's > >>>> better we can get the available data before reading via fifo_sta > >> I don't understand what's the point of doing this? > > Didn't get? don't you understand what I'm saying or it not require > > from point of you? > Maybe I don't understand correctly what you're saying. You comment now and previous mail doesn't match. better be specific. For draining fifo. We can find how much data available before reading from fifo and assign to local rx. static inline void sun4i_spi_drain_fifo(struct sun4i_spi_priv *priv, int len) { u32 reg, cnt u8 byte; /* See how much data is available */ reg = readl(&priv->regs->fifo_sta); reg &= SUN4I_FIFO_STA_RF_CNT_MASK; cnt = reg >> SUN4I_FIFO_STA_RF_CNT_BITS; if (len > cnt) len = cnt; while (len--) { byte = readb(&priv->regs->rxdata); *priv->rx_buf++ = byte; } } This can be perfect drain fifo, and this is what I'm trying to test you with existing code and after your patch and verify whether all the data perfectly drain or not before and after. Hope you understand, this time.