Re: [PATCH] Fix NULL dereference when suspending snd_opl3sa2

From: Lubomir Rintel
Date: Mon Mar 16 2009 - 10:16:23 EST


On Mon, 2009-03-16 at 11:01 +0100, Lubomir Rintel wrote:
> This should fix the following OOPS:
> http://www.kerneloops.org/raw.php?rawid=80591&msgid=

Wrong, sorry, the disassembly from kerneloops was a bit confusing to me.
Looking at the disassembly of the actual module:

> @@ -553,7 +553,8 @@ static int snd_opl3sa2_suspend(struct snd_card
> *card, pm_message_t state)
> struct snd_opl3sa2 *chip = card->private_data;

card must somehow be NULL here:

00000270 <snd_opl3sa2_suspend>:
270: 53 push %ebx
271: 8b 98 38 01 00 00 mov 0x138(%eax),%ebx
277: b9 01 00 00 00 mov $0x1,%ecx
27c: ba 03 00 00 00 mov $0x3,%edx
281: c7 80 a8 01 00 00 00 movl $0x300,0x1a8(%eax)
288: 03 00 00
28b: 05 bc 01 00 00 add $0x1bc,%eax
290: 6a 00 push $0x0
292: e8 fc ff ff ff call 293 <snd_opl3sa2_suspend+0x23>
297: 8b 53 24 mov 0x24(%ebx),%edx
29a: 89 d0 mov %edx,%eax
29c: ff 92 d4 00 00 00 call *0xd4(%edx)
2a2: 89 d8 mov %ebx,%eax
2a4: b9 27 00 00 00 mov $0x27,%ecx
2a9: ba 01 00 00 00 mov $0x1,%edx
2ae: e8 72 fe ff ff call 125 <snd_opl3sa2_write>
2b3: 58 pop %eax
2b4: 31 c0 xor %eax,%eax
2b6: 5b pop %ebx
2b7: c3 ret

This is the same issue, with 2.6.28:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519939

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/