summaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/sa1111_generic.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2012-01-24 21:33:26 +0000
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-01-24 21:33:26 +0000
commit171cf94ccb4b476d1d7d694a31d0820558375132 (patch)
treea7874cd87511ee26ea3ee07d15706ac51746777e /drivers/pcmcia/sa1111_generic.c
parentb3945bcbc3f9856f4b5452079bfc2b9738040a37 (diff)
downloadlinux-171cf94ccb4b476d1d7d694a31d0820558375132.tar.gz
linux-171cf94ccb4b476d1d7d694a31d0820558375132.tar.bz2
linux-171cf94ccb4b476d1d7d694a31d0820558375132.zip
PCMCIA: fix sa1111 oops on remove
The sa1111 socket driver oopses when removed: Unable to handle kernel NULL pointer dereference at virtual address 000003b0 pgd = c1b40000 [000003b0] *pgd=00000000 Internal error: Oops: 41b43005 [#1] Modules linked in: CPU: 0 Not tainted (3.3.0-rc1+ #744) PC is at pcmcia_remove+0x3c/0x60 LR is at pcmcia_remove+0x34/0x60 This is because we try to dereference a NULL 's' to obtain the next pointer. Fix this. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/pcmcia/sa1111_generic.c')
-rw-r--r--drivers/pcmcia/sa1111_generic.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/pcmcia/sa1111_generic.c b/drivers/pcmcia/sa1111_generic.c
index 59866905ea37..27f2fe3b7fb4 100644
--- a/drivers/pcmcia/sa1111_generic.c
+++ b/drivers/pcmcia/sa1111_generic.c
@@ -205,7 +205,8 @@ static int __devexit pcmcia_remove(struct sa1111_dev *dev)
dev_set_drvdata(&dev->dev, NULL);
- for (; next = s->next, s; s = next) {
+ for (; s; s = next) {
+ next = s->next;
soc_pcmcia_remove_one(&s->soc);
kfree(s);
}