James Bottomley
64976a0387
[SCSI] aha152x: Fix oops on module removal
...
Reported-by: Frank de Jong <frapex@xs4all.nl>
> after trying to unload the module:
> BUG: unable to handle kernel paging request at 00100100
> IP: [<fb9ff667>] :aha152x:aha152x_exit+0x47/0x6a
> *pde = 00000000
> Oops: 0000 [#1 ] PREEMPT SMP
> Modules linked in: aha152x(-) w83781d hwmon_vid tun ne 8390 bonding
> usb_storage snd_usb_audio snd_usb_lib snd_rawmidi pwc snd_seq_device
> compat_ioctl32 snd_hwdep videodev v4l1_compat 3c59x mii intel_agp
> agpgart snd_pcm_oss snd_pcm snd_timer snd_page_alloc snd_mixer_oss snd
>
> Pid: 2837, comm: rmmod Not tainted (2.6.25.3 #1 )
> EIP: 0060:[<fb9ff667>] EFLAGS: 00210212 CPU: 0
> EIP is at aha152x_exit+0x47/0x6a [aha152x]
> EAX: 00000001 EBX: 000ffdc4 ECX: f7c517a8 EDX: 00000001
> ESI: 00000000 EDI: 00000003 EBP: e7880000 ESP: e7881f58
> DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> Process rmmod (pid: 2837, ti=e7880000 task=f27eb580 task.ti=e7880000)
> Stack: fba03700 c01419d2 31616861 00783235 e795ee70 c0157709 b7f24000 e79ae000
> c0158271 ffffffff b7f25000 e79ae004 e795e370 b7f25000 e795e37c e795e370
> 009ae000 fba03700 00000880 e7881fa8 00000000 bf93ec20 bf93ec20 c0102faa
> Call Trace:
> [<c01419d2>] sys_delete_module+0x112/0x1a0
> [<c0157709>] remove_vma+0x39/0x50
> [<c0158271>] do_munmap+0x181/0x1f0
> [<c0102faa>] sysenter_past_esp+0x5f/0x85
> [<c0490000>] rsc_parse+0x0/0x3c0
The problem is that the driver calls aha152x_release() under a
list_for_each_entry(). Unfortunately, aha152x_release() deletes from
the list in question. Fix this by using list_for_each_entry_safe().
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2008-05-11 08:36:44 -05:00
..
2008-04-30 08:29:52 -07:00
2008-04-30 16:26:27 -07:00
2008-05-06 11:43:44 -04:00
2008-04-30 08:45:48 -07:00
2008-05-06 13:22:42 -07:00
2008-05-02 11:03:08 -07:00
2008-05-02 16:45:10 -07:00
2008-04-29 08:18:03 -07:00
2008-05-05 12:37:02 -07:00
2008-04-28 16:27:08 -04:00
2008-05-05 15:08:38 -07:00
2008-05-02 13:52:35 -07:00
2008-04-29 08:06:23 -07:00
2008-05-01 08:04:01 -07:00
2008-04-29 08:06:27 -07:00
2008-05-01 08:28:26 -07:00
2008-04-29 23:11:40 +02:00
2008-05-05 12:36:34 -07:00
2008-05-01 11:31:38 -07:00
2008-05-05 15:51:49 -07:00
2008-05-05 12:37:25 -07:00
2008-05-01 08:03:59 -07:00
2008-04-29 08:06:25 -07:00
2008-05-02 21:50:54 +10:00
2008-05-05 16:47:13 +10:00
2008-04-29 08:06:18 -07:00
2008-04-30 08:29:33 -07:00
2008-04-30 08:36:04 -07:00
2008-04-29 08:06:25 -07:00
2008-04-30 08:29:53 -07:00
2008-05-05 07:13:21 -05:00
2008-04-29 15:18:06 -07:00
2008-05-01 11:15:28 -07:00
2008-05-06 07:49:20 -07:00
2008-04-29 08:06:19 -07:00
2008-04-24 20:58:01 +10:00
2008-04-28 08:58:31 -07:00
2008-04-29 08:06:22 -07:00
2008-04-30 08:29:53 -07:00
2008-04-29 15:34:05 -07:00
2008-05-01 08:04:00 -07:00
2008-05-01 08:04:00 -07:00
2008-05-03 10:57:57 -07:00
2008-05-02 15:00:44 +10:00
2008-04-29 19:40:28 +10:00
2008-04-30 11:52:52 -07:00
2008-05-02 13:52:35 -07:00
2008-05-05 00:33:58 -07:00
2008-05-11 08:36:44 -05:00
2008-05-03 10:05:11 -07:00
2008-05-01 08:04:01 -07:00
2008-04-23 21:25:35 -04:00
2008-04-29 03:12:17 -04:00
2008-05-06 15:15:12 -07:00
2008-05-03 21:12:00 -07:00
2008-05-02 21:50:50 +10:00
2008-04-30 08:29:53 -07:00
2008-04-24 23:57:33 +02:00
2008-04-29 08:06:21 -07:00
2008-04-30 08:29:52 -07:00
2008-04-30 08:29:52 -07:00