[dm-devel] Re: Patch to lsi rda device handler
Chandra Seetharaman
sekharan at us.ibm.com
Thu Jul 17 22:30:26 UTC 2008
Yanqing,
Thanks. Thee fix is in the set of patches that Hannes has sent (latest
one sent yesterday). It will make into 2.6.27.
Thanks,
chandra
On Thu, 2008-07-17 at 11:56 -0500, Yanqing_Liu at Dell.com wrote:
> Hello,
>
> Here is the lsi rdac device handler code that was posted:
>
> https://www.redhat.com/archives/dm-devel/2008-May/msg00003.html
>
> The following patch is to address a NULL pointer problem in lsi rdac
> device handler.
>
> In function get_rdac_req, after a request is successfully allocated,
> the area that the cmd pointer points to should be zeroed out. However,
> the function zeros out the command pointer itself, along with some
> other adjacent area. This results in NULL pointer dereference when
> submitting inquiry commands when checking virtual disk ownership
> during device discovery time. The kernel trace is attached at the end
> of the message.
>
> The change is to zero out the area that the cmd pointer points to,
> instead of the pointer itself in the allocated request structure.
>
> --- scsi_dh_rdac.c.orig 2008-07-17 01:53:10.000000000 -0400
> +++ scsi_dh_rdac.c 2008-07-17 01:45:28.000000000 -0400
> @@ -214,7 +214,7 @@
> return NULL;
> }
>
> - memset(&rq->cmd, 0, BLK_MAX_CDB);
> + memset(rq->cmd, 0, BLK_MAX_CDB);
> rq->sense = h->sense;
> memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE);
> rq->sense_len = 0;
>
>
> Below is the kernel trace when problem happens, just for reference:
>
> Jul 10 01:05:52 localhost kernel: In fn rdac_activate
> Jul 10 01:05:52 localhost kernel: BUG: unable to handle kernel NULL
> pointer dereference at 0000000000000000
> Jul 10 01:05:52 localhost kernel: IP:
> [<ffffffffa051e1d4>] :scsi_dh_rdac:submit_inquiry+0x42/0x8d
> Jul 10 01:05:52 localhost kernel: PGD 0
> Jul 10 01:05:52 localhost kernel: Oops: 0002 [1] SMP
> Jul 10 01:05:52 localhost kernel: CPU 2
> Jul 10 01:05:52 localhost kernel: Modules linked in: scsi_dh_rdac vfat
> fat autofs4 hidp rfcomm l2cap bluetooth sunrpc iptable_filter
> ip_tables ip6t_REJECT xt_tcpudp ip6table_filter ip6_tables x_tables
> ipv6 ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr
> iscsi_tcp libiscsi scsi_transport_iscsi dm_round_robin dm_multipath
> scsi_dh sbs sbshc battery acpi_memhotplug ac parport_pc lp parport sg
> usb_storage dcdbas ide_cd_mod cdrom bnx2 serio_raw button rtc_cmos
> rtc_core rtc_lib i5000_edac shpchp edac_core pcspkr dm_snapshot
> dm_zero dm_mirror dm_log dm_mod ata_piix libata megaraid_sas mptsas
> mptscsih scsi_transport_sas mptbase sd_mod scsi_mod ext3 jbd uhci_hcd
> ohci_hcd ehci_hcd [last unloaded: microcode]
>
> Jul 10 01:05:52 localhost kernel: Pid: 5741, comm: kmpath_handlerd Not
> tainted 2.6.26-rc5 #1
> Jul 10 01:05:52 localhost kernel: RIP: 0010:[<ffffffffa051e1d4>]
> [<ffffffffa051e1d4>] :scsi_dh_rdac:submit_inquiry+0x42/0x8d
>
> Jul 10 01:05:52 localhost kernel: RSP: 0018:ffff81003c511dd0 EFLAGS:
> 00010246
> Jul 10 01:05:52 localhost kernel: RAX: 0000000000000000 RBX:
> 00000000000000af RCX: 0000000000000001
> Jul 10 01:05:52 localhost kernel: RDX: ffff81003c4818b8 RSI:
> 0000000000000000 RDI: ffff81003e82eb10
> Jul 10 01:05:52 localhost kernel: RBP: 00000000000000c8 R08:
> 0000000000000003 R09: 0000000000000005
> Jul 10 01:05:52 localhost kernel: R10: ffff81003a472c15 R11:
> 000000000000005d R12: ffff81003e82eb10
> Jul 10 01:05:52 localhost multipathd: mpath2: event checker started
> Jul 10 01:05:52 localhost kernel: R13: ffffffffa051f640 R14:
> ffff81003956d920 R15: 0000000000000000
> Jul 10 01:05:52 localhost kernel: FS: 0000000000000000(0000)
> GS:ffff81003fa5be40(0000) knlGS:0000000000000000
> Jul 10 01:05:52 localhost kernel: CS: 0010 DS: 0018 ES: 0018 CR0:
> 000000008005003b
> Jul 10 01:05:52 localhost kernel: CR2: 0000000000000000 CR3:
> 0000000000201000 CR4: 00000000000006e0
> Jul 10 01:05:52 localhost kernel: DR0: 0000000000000000 DR1:
> 0000000000000000 DR2: 0000000000000000
> Jul 10 01:05:52 localhost kernel: DR3: 0000000000000000 DR6:
> 00000000ffff0ff0 DR7: 0000000000000400
> Jul 10 01:05:52 localhost kernel: Process kmpath_handlerd (pid: 5741,
> threadinfo ffff81003c510000, task ffff81003e9329a0)
>
> Jul 10 01:05:52 localhost kernel: Stack: ffff81003a472c00
> ffff81003956d800 ffff81003956d800 ffffffffa051e4db
> Jul 10 01:05:52 localhost kernel: ffff81003e9329a0 ffff81003a472c08
> ffff81003d5e67c0 ffffffff808d0700
> Jul 10 01:05:52 localhost kernel: 0000000000000000 ffff81003d5e67c0
> ffff81003c511ed0 0000000000000000
> Jul 10 01:05:52 localhost kernel: Call Trace:
> Jul 10 01:05:52 localhost kernel:
> [<ffffffffa051e4db>] ? :scsi_dh_rdac:rdac_activate+0x70/0x461
> Jul 10 01:05:52 localhost kernel:
> [<ffffffffa03050f4>] ? :scsi_dh:scsi_dh_activate+0x55/0x9c
> Jul 10 01:05:52 localhost kernel:
> [<ffffffffa0310327>] ? :dm_multipath:activate_path+0x0/0x16d
> Jul 10 01:05:52 localhost kernel:
> [<ffffffffa0310352>] ? :dm_multipath:activate_path+0x2b/0x16d
> Jul 10 01:05:52 localhost kernel:
> [<ffffffffa0310327>] ? :dm_multipath:activate_path+0x0/0x16d
> Jul 10 01:05:52 localhost kernel: [<ffffffff8023fed9>] ?
> run_workqueue+0x7b/0x103
> Jul 10 01:05:52 localhost kernel: [<ffffffff80240754>] ?
> worker_thread+0xd5/0xe0
> Jul 10 01:05:52 localhost kernel: [<ffffffff80242f26>] ?
> autoremove_wake_function+0x0/0x2e
> Jul 10 01:05:52 localhost kernel: [<ffffffff8024067f>] ?
> worker_thread+0x0/0xe0
> Jul 10 01:05:52 localhost kernel: [<ffffffff80242df7>] ? kthread
> +0x47/0x74
> Jul 10 01:05:53 localhost kernel: [<ffffffff8022d674>] ?
> schedule_tail+0x28/0x5d
> Jul 10 01:05:53 localhost kernel: [<ffffffff8020cb98>] ? child_rip
> +0xa/0x12
> Jul 10 01:05:53 localhost kernel: [<ffffffff80242db0>] ? kthread
> +0x0/0x74
> Jul 10 01:05:53 localhost kernel: [<ffffffff8020cb8e>] ? child_rip
> +0x0/0x12
> Jul 10 01:05:53 localhost kernel:
> Jul 10 01:05:53 localhost multipathd: mpath0: event checker started
> Jul 10 01:05:53 localhost kernel:
> Jul 10 01:05:53 localhost multipathd: mpath13: event checker started
> Jul 10 01:05:53 localhost kernel: Code: 04 0f 0b eb fe 48 8d 70 75 31
> c9 e8 c1 fe ff ff 48 85 c0 48 89 c2 b9 0c 00 00 00 74 52 48 8b 80 e8
> 00 00 00 b1 01 31 f6 4c 89 e7 <c6> 00 12 48 8b 82 e8 00 00 00 c6 40 01
> 01 48 8b 82 e8 00 00 00
>
> Jul 10 01:05:53 localhost multipathd: path checkers start up
> Jul 10 01:05:53 localhost kernel: RIP
> [<ffffffffa051e1d4>] :scsi_dh_rdac:submit_inquiry+0x42/0x8d
> Jul 10 01:05:53 localhost multipathd: dm-4: add map (uevent)
> Jul 10 01:05:53 localhost kernel: RSP <ffff81003c511dd0>
> Jul 10 01:05:53 localhost multipathd: dm-4: devmap already registered
> Jul 10 01:05:53 localhost kernel: CR2: 0000000000000000
> Jul 10 01:05:53 localhost kernel: ---[ end trace
> f05af9e56671650e ]---
> Jul 10 01:08:52 localhost multipathd: dm-3: add map (uevent)
> Jul 10 01:08:52 localhost multipathd: dm-3: devmap already registered
> Jul 10 01:08:52 localhost multipathd: dm-2: remove map (uevent)
> Jul 10 01:08:52 localhost multipathd: mpath2: map in use
> Jul 10 01:08:52 localhost multipathd: mpath2: can't flush
> Jul 10 01:11:52 localhost multipathd: dm-2: add map (uevent)
> Jul 10 01:11:52 localhost multipathd: dm-2: devmap already registered
>
> Please provide any feedback that you may have.
>
> Thanks,
> Yanqing
>
More information about the dm-devel
mailing list