[dm-devel] Re: Patch to lsi rda device handler

Chandra Seetharaman sekharan at us.ibm.com
Tue Jul 29 20:43:15 UTC 2008


Hi Yanqing,

All the SCSI hardware handler patches are currently available in
2.6.27-rc1. If you could test it, that will be of great help.

Thanks,

chandra
On Thu, 2008-07-17 at 15:30 -0700, Chandra Seetharaman wrote:
> 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