From: "André Przywara" <andre.przywara@arm.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/1] arm: sunxi: Add NULL pointer check
Date: Sun, 16 Dec 2018 11:16:00 +0000 [thread overview]
Message-ID: <ebc7cfc5-e51b-47e9-14d5-d3fcbf56597d@arm.com> (raw)
In-Reply-To: <20181205154619.ffzfl7yt6vfo3qra@flea>
On 05/12/2018 15:46, Maxime Ripard wrote:
Hi,
> On Wed, Dec 05, 2018 at 02:27:57PM +0200, 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 <stefan@olimex.com>
>> ---
>> 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;
>
> It seems pretty inefficient to test the pointer at each access, it
> would be better to check it once before starting the transfer.
I appreciate the intention to avoid bloat and the attention to detail, but:
This check boils down to exactly one 16-bit instruction:
10c: b11a cbz r2, 116 <sun4i_spi_xfer+0x116>
- which only accesses a register
- inside a loop with does an MMIO(!) read from a device
- handling transfers from a serial device transferring 100s of KB/s
- in a system which's sole purpose is to read data on a single core
- in U-Boot ;-)
So the "performance impact" of this check is probably totally negligible.
There are quite some spi_xfer() calls with explicit NULL arguments, for
instance when we just want to transfer something.
So I wonder if we just want to take this patch, since it fixes a memory
corruption issue, plus we have a similar check in the TX path.
Cheers,
Andre.
next prev parent reply other threads:[~2018-12-16 11:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-05 12:27 [U-Boot] [PATCH 1/1] arm: sunxi: Add NULL pointer check Stefan Mavrodiev
2018-12-05 15:46 ` Maxime Ripard
2018-12-06 6:41 ` Stefan Mavrodiev
2018-12-13 7:12 ` Stefan Mavrodiev
2018-12-14 9:25 ` Maxime Ripard
2018-12-14 14:14 ` Stefan Mavrodiev
2018-12-14 15:55 ` Maxime Ripard
2018-12-17 6:37 ` Stefan Mavrodiev
2018-12-20 6:45 ` Stefan Mavrodiev
2018-12-16 11:16 ` André Przywara [this message]
2018-12-14 10:18 ` Jagan Teki
2018-12-14 10:49 ` Maxime Ripard
2018-12-14 12:09 ` Jagan Teki
2018-12-20 10:14 ` Jagan Teki
2018-12-20 10:29 ` Stefan Mavrodiev
2018-12-20 10:45 ` Jagan Teki
2018-12-20 10:48 ` Stefan Mavrodiev
2018-12-20 10:56 ` Jagan Teki
2018-12-20 11:19 ` Stefan Mavrodiev
2018-12-20 11:54 ` Jagan Teki
2018-12-20 12:07 ` Stefan Mavrodiev
2018-12-20 12:38 ` Jagan Teki
2018-12-20 12:41 ` Stefan Mavrodiev
2018-12-20 12:44 ` Jagan Teki
2018-12-20 12:46 ` Stefan Mavrodiev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ebc7cfc5-e51b-47e9-14d5-d3fcbf56597d@arm.com \
--to=andre.przywara@arm.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox