summaryrefslogtreecommitdiffstats
path: root/net/nfc
diff options
context:
space:
mode:
authorEric Lapuyade <eric.lapuyade@linux.intel.com>2013-09-23 18:02:43 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2013-09-25 14:21:09 +0200
commita4ada6cadb8a2246f263ff6a0d0cca8832f3970e (patch)
tree08250fa111f17418b86de18c2c62e53043fb2bc3 /net/nfc
parent5ce3f32b5264b337bfd13a780452a17705307725 (diff)
downloadlinux-a4ada6cadb8a2246f263ff6a0d0cca8832f3970e.tar.gz
linux-a4ada6cadb8a2246f263ff6a0d0cca8832f3970e.tar.bz2
linux-a4ada6cadb8a2246f263ff6a0d0cca8832f3970e.zip
NFC: NCI: zero struct spi_transfer variables before usage
Using ARM compiler, and without zero-ing spi_transfer, spi-s3c64xx driver would issue abnormal errors due to bpw field value being set to unexpected value. This structure MUST be set to all zeros except for those field specifically used. Signed-off-by: Eric Lapuyade <eric.lapuyade@intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc')
-rw-r--r--net/nfc/nci/spi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/nfc/nci/spi.c b/net/nfc/nci/spi.c
index 5c2234024774..c111506b36d1 100644
--- a/net/nfc/nci/spi.c
+++ b/net/nfc/nci/spi.c
@@ -44,6 +44,7 @@ static int __nci_spi_send(struct nci_spi *nspi, struct sk_buff *skb)
struct spi_message m;
struct spi_transfer t;
+ memset(&t, 0, sizeof(struct spi_transfer));
t.tx_buf = skb->data;
t.len = skb->len;
t.cs_change = 0;
@@ -173,16 +174,21 @@ static struct sk_buff *__nci_spi_recv_frame(struct nci_spi *nspi)
int ret;
spi_message_init(&m);
+
+ memset(&tx, 0, sizeof(struct spi_transfer));
req[0] = NCI_SPI_DIRECT_READ;
req[1] = nspi->acknowledge_mode;
tx.tx_buf = req;
tx.len = 2;
tx.cs_change = 0;
spi_message_add_tail(&tx, &m);
+
+ memset(&rx, 0, sizeof(struct spi_transfer));
rx.rx_buf = resp_hdr;
rx.len = 2;
rx.cs_change = 1;
spi_message_add_tail(&rx, &m);
+
ret = spi_sync(nspi->spi, &m);
if (ret)
@@ -199,11 +205,14 @@ static struct sk_buff *__nci_spi_recv_frame(struct nci_spi *nspi)
return NULL;
spi_message_init(&m);
+
+ memset(&rx, 0, sizeof(struct spi_transfer));
rx.rx_buf = skb_put(skb, rx_len);
rx.len = rx_len;
rx.cs_change = 0;
rx.delay_usecs = nspi->xfer_udelay;
spi_message_add_tail(&rx, &m);
+
ret = spi_sync(nspi->spi, &m);
if (ret)