]> git.karo-electronics.de Git - linux-beck.git/commitdiff
NFC: NCI: zero struct spi_transfer variables before usage
authorEric Lapuyade <eric.lapuyade@linux.intel.com>
Mon, 23 Sep 2013 16:02:43 +0000 (18:02 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 25 Sep 2013 12:21:09 +0000 (14:21 +0200)
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>
net/nfc/nci/spi.c

index 5c223402477495c51cb65be330a90f7b22d9b1e5..c111506b36d1f7ed245c421cf1e3a3dc4338730b 100644 (file)
@@ -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)