spi: spi-mt65xx: Fix NULL pointer access in interrupt handler
[sfrench/cifs-2.6.git] / drivers / spi / spi-mt65xx.c
index 8d4633b353eef662b224c966f7b9d9ba7527e076..e4cb22fe007523a3e07551fc86c126213330be16 100644 (file)
@@ -788,17 +788,19 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
                mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, len);
                mtk_spi_setup_packet(host);
 
-               cnt = mdata->xfer_len / 4;
-               iowrite32_rep(mdata->base + SPI_TX_DATA_REG,
-                               trans->tx_buf + mdata->num_xfered, cnt);
+               if (trans->tx_buf) {
+                       cnt = mdata->xfer_len / 4;
+                       iowrite32_rep(mdata->base + SPI_TX_DATA_REG,
+                                       trans->tx_buf + mdata->num_xfered, cnt);
 
-               remainder = mdata->xfer_len % 4;
-               if (remainder > 0) {
-                       reg_val = 0;
-                       memcpy(&reg_val,
-                               trans->tx_buf + (cnt * 4) + mdata->num_xfered,
-                               remainder);
-                       writel(reg_val, mdata->base + SPI_TX_DATA_REG);
+                       remainder = mdata->xfer_len % 4;
+                       if (remainder > 0) {
+                               reg_val = 0;
+                               memcpy(&reg_val,
+                                       trans->tx_buf + (cnt * 4) + mdata->num_xfered,
+                                       remainder);
+                               writel(reg_val, mdata->base + SPI_TX_DATA_REG);
+                       }
                }
 
                mtk_spi_enable_transfer(host);