aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/davinci_spi.c
diff options
context:
space:
mode:
authorBrian Niebuhr <bniebuhr@efjohnson.com>2010-08-19 17:04:25 +0530
committerSekhar Nori <nsekhar@ti.com>2010-11-18 18:38:28 +0530
commit53d454a170e86594af1d27be820e678a582af751 (patch)
tree437b09d173aa8ee0479ba7c8e7e04875fbdafb13 /drivers/spi/davinci_spi.c
parentb7ab24a0da96c8fc6d551ea87e82692299df6ac6 (diff)
downloadkernel_samsung_smdk4412-53d454a170e86594af1d27be820e678a582af751.tar.gz
kernel_samsung_smdk4412-53d454a170e86594af1d27be820e678a582af751.tar.bz2
kernel_samsung_smdk4412-53d454a170e86594af1d27be820e678a582af751.zip
spi: davinci: check for NULL buffer pointer before using it
In the davinci_spi_{tx|rx}_u{8|16}() functions, check for buffer pointer being valid before using it. While providing for better error checking, this change will help simplify code in the caller. Signed-off-by: Brian Niebuhr <bniebuhr@efjohnson.com> Tested-By: Michael Williamson <michael.williamson@criticallink.com> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Diffstat (limited to 'drivers/spi/davinci_spi.c')
-rw-r--r--drivers/spi/davinci_spi.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index b0b338fc446..10b0a08d262 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -158,37 +158,41 @@ static unsigned use_dma;
static void davinci_spi_rx_buf_u8(u32 data, struct davinci_spi *davinci_spi)
{
- u8 *rx = davinci_spi->rx;
-
- *rx++ = (u8)data;
- davinci_spi->rx = rx;
+ if (davinci_spi->rx) {
+ u8 *rx = davinci_spi->rx;
+ *rx++ = (u8)data;
+ davinci_spi->rx = rx;
+ }
}
static void davinci_spi_rx_buf_u16(u32 data, struct davinci_spi *davinci_spi)
{
- u16 *rx = davinci_spi->rx;
-
- *rx++ = (u16)data;
- davinci_spi->rx = rx;
+ if (davinci_spi->rx) {
+ u16 *rx = davinci_spi->rx;
+ *rx++ = (u16)data;
+ davinci_spi->rx = rx;
+ }
}
static u32 davinci_spi_tx_buf_u8(struct davinci_spi *davinci_spi)
{
- u32 data;
- const u8 *tx = davinci_spi->tx;
-
- data = *tx++;
- davinci_spi->tx = tx;
+ u32 data = 0;
+ if (davinci_spi->tx) {
+ const u8 *tx = davinci_spi->tx;
+ data = *tx++;
+ davinci_spi->tx = tx;
+ }
return data;
}
static u32 davinci_spi_tx_buf_u16(struct davinci_spi *davinci_spi)
{
- u32 data;
- const u16 *tx = davinci_spi->tx;
-
- data = *tx++;
- davinci_spi->tx = tx;
+ u32 data = 0;
+ if (davinci_spi->tx) {
+ const u16 *tx = davinci_spi->tx;
+ data = *tx++;
+ davinci_spi->tx = tx;
+ }
return data;
}