Skip to content

Commit f9378c7

Browse files
Fabio EstevamLiuHui-Jason
Fabio Estevam
authored andcommitted
spi: spi-bitbang: Fix conversion of spi_bitbang_transfer_one()
Since commit 2025172e3 (spi/bitbang: Use core message pump), the following kernel crash is seen: Unable to handle kernel NULL pointer dereference at virtual address 0000000d pgd = 80004000 [0000000d] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 1 PID: 48 Comm: spi32766 Not tainted 3.11.0-rc1+ imx6-dongle#4 task: bfa3e580 ti: bfb90000 task.ti: bfb90000 PC is at spi_bitbang_transfer_one+0x50/0x248 LR is at spi_bitbang_transfer_one+0x20/0x248 ... ,and also the following build warning: drivers/spi/spi-bitbang.c: In function 'spi_bitbang_start': drivers/spi/spi-bitbang.c:436:31: warning: assignment from incompatible pointer type [enabled by default] In order to fix it, we need to change the first parameter of spi_bitbang_transfer_one() to 'struct spi_master *master'. Tested on a mx6qsabrelite by succesfully probing a SPI NOR flash. Signed-off-by: Fabio Estevam <[email protected]> Signed-off-by: Mark Brown <[email protected]> Signed-off-by: Huang Shijie <[email protected]>
1 parent 38dad9a commit f9378c7

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

drivers/spi/spi-bitbang.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ static int spi_bitbang_prepare_hardware(struct spi_master *spi)
270270
return 0;
271271
}
272272

273-
static int spi_bitbang_transfer_one(struct spi_device *spi,
273+
static int spi_bitbang_transfer_one(struct spi_master *master,
274274
struct spi_message *m)
275275
{
276276
struct spi_bitbang *bitbang;
@@ -280,8 +280,9 @@ static int spi_bitbang_transfer_one(struct spi_device *spi,
280280
unsigned cs_change;
281281
int status;
282282
int do_setup = -1;
283+
struct spi_device *spi = m->spi;
283284

284-
bitbang = spi_master_get_devdata(spi->master);
285+
bitbang = spi_master_get_devdata(master);
285286

286287
/* FIXME this is made-up ... the correct value is known to
287288
* word-at-a-time bitbang code, and presumably chipselect()
@@ -372,7 +373,7 @@ static int spi_bitbang_transfer_one(struct spi_device *spi,
372373
ndelay(nsecs);
373374
}
374375

375-
spi_finalize_current_message(spi->master);
376+
spi_finalize_current_message(master);
376377

377378
return status;
378379
}

0 commit comments

Comments
 (0)