linux/drivers/md
Michal Miroslaw 485311a23c [PATCH] dm: BUG/OOPS fix
Fix BUG I tripped on while testing failover and multipathing.

BUG shows up on error path in multipath_ctr() when parse_priority_group()
fails after returning at least once without error.  The fix is to
initialize m->ti early - just after alloc()ing it.

BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
 printing eip:
c027c3d2
*pde = 00000000
Oops: 0000 [#3]
Modules linked in: qla2xxx ext3 jbd mbcache sg ide_cd cdrom floppy
CPU:    0
EIP:    0060:[<c027c3d2>]    Not tainted VLI
EFLAGS: 00010202   (2.6.17.3 #1)
EIP is at dm_put_device+0xf/0x3b
eax: 00000001   ebx: ee4fcac0   ecx: 00000000   edx: ee4fcac0
esi: ee4fc4e0   edi: ee4fc4e0   ebp: 00000000   esp: c5db3e78
ds: 007b   es: 007b   ss: 0068
Process multipathd (pid: 15912, threadinfo=c5db2000 task=ef485a90)
Stack: ec4eda40 c02816bd ee4fc4c0 00000000 f7e89498 f883e0bc c02816f6 f7e89480
       f7e8948c c0281801 ffffffea f7e89480 f883e080 c0281ffe 00000001 00000000
       00000004 dfe9cab8 f7a693c0 f883e080 f883e0c0 ca4b99c0 c027c6ee 01400000
Call Trace:
 <c02816bd> free_pgpaths+0x31/0x45  <c02816f6> free_priority_group+0x25/0x2e
 <c0281801> free_multipath+0x35/0x67  <c0281ffe> multipath_ctr+0x123/0x12d
 <c027c6ee> dm_table_add_target+0x11e/0x18b  <c027e5b4> populate_table+0x8a/0xaf
 <c027e62b> table_load+0x52/0xf9  <c027ec23> ctl_ioctl+0xca/0xfc
 <c027e5d9> table_load+0x0/0xf9  <c0152146> do_ioctl+0x3e/0x43
 <c0152360> vfs_ioctl+0x16c/0x178  <c01523b4> sys_ioctl+0x48/0x60
 <c01029b3> syscall_call+0x7/0xb
Code: 97 f0 00 00 00 89 c1 83 c9 01 80 e2 01 0f 44 c1 88 43 14 8b 04 24 59 5b 5e 5f 5d c3 53 89 c1 89 d3 ff 4a 08 0f 94 c0 84 c0 74 2a <8b> 01 8b 10 89 d8 e8 f6 fb ff ff 8b 03 8b 53 04 89 50 04 89 02
EIP: [<c027c3d2>] dm_put_device+0xf/0x3b SS:ESP 0068:c5db3e78

Signed-off-by: Michal Miroslaw <mirq-linux@rere.qmqm.pl>
Acked-by: Alasdair G Kergon <agk@redhat.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-08-14 12:54:29 -07:00
..
raid6test
.gitignore gitignore: misc files 2006-01-01 22:21:50 +01:00
bitmap.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
dm-bio-list.h [PATCH] device-mapper snapshot: bio_list fix 2005-11-22 09:14:31 -08:00
dm-bio-record.h
dm-crypt.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-emc.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-exception-store.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-hw-handler.c BUG_ON() Conversion in md/dm-hw-handler.c 2006-03-24 18:36:27 +01:00
dm-hw-handler.h
dm-io.c [PATCH] mempool: use common mempool kmalloc allocator 2006-03-26 08:56:59 -08:00
dm-io.h [PATCH] device-mapper: remove unused definition 2006-01-06 08:34:00 -08:00
dm-ioctl.c [PATCH] devfs: Remove the miscdevice devfs_name field as it's no longer needed 2006-06-26 12:25:08 -07:00
dm-linear.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-log.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-log.h
dm-mpath.c [PATCH] dm: BUG/OOPS fix 2006-08-14 12:54:29 -07:00
dm-mpath.h
dm-path-selector.c BUG_ON() Conversion in md/dm-path-selector.c 2006-03-26 18:21:58 +02:00
dm-path-selector.h
dm-raid1.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-round-robin.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-snap.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
dm-snap.h [PATCH] device-mapper snapshot: load metadata on creation 2006-02-01 08:53:10 -08:00
dm-stripe.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-table.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-target.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm-zero.c [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
dm.c [PATCH] devfs: Last little devfs cleanups throughout the kernel tree. 2006-06-26 12:25:09 -07:00
dm.h [PATCH] dm: improve error message consistency 2006-06-26 09:58:36 -07:00
faulty.c [PATCH] md: allow array level to be set textually via sysfs 2006-01-06 08:34:09 -08:00
Kconfig [PATCH] md: Fix Kconfig error 2006-06-26 09:58:39 -07:00
kcopyd.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
kcopyd.h
linear.c [PATCH] md: Fix a bug that recently crept into md/linear 2006-08-06 08:57:46 -07:00
Makefile [PATCH] md: merge raid5 and raid6 code 2006-06-26 09:58:37 -07:00
md.c [PATCH] md: fix oops in error-handling 2006-07-10 13:24:17 -07:00
mktables.c
multipath.c [PATCH] mempool: use common mempool kzalloc allocator 2006-03-26 08:56:59 -08:00
raid0.c [PATCH] md: fix possible oops when starting a raid0 array 2006-05-23 10:35:31 -07:00
raid1.c [PATCH] md: include sector number in messages about corrected read errors 2006-07-10 13:24:17 -07:00
raid5.c [PATCH] md: include sector number in messages about corrected read errors 2006-07-10 13:24:17 -07:00
raid6.h
raid6algos.c [PATCH] drivers/md/raid6algos.c: fix a NULL dereference 2006-06-23 07:43:08 -07:00
raid6altivec.uc
raid6int.uc
raid6mmx.c
raid6recov.c
raid6sse1.c
raid6sse2.c
raid6x86.h
raid10.c [PATCH] md: include sector number in messages about corrected read errors 2006-07-10 13:24:17 -07:00
unroll.pl
xor.c