Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()

2009-04-10 Thread Mark J Musante

On Thu, 9 Apr 2009, shyamali.chakrava...@sun.com wrote:


Hi All,

I have corefile where we see NULL pointer de-reference PANIC as we have sent 
(deliberately) NULL pointer for return value.



vdev_disk_io_start()
   error = ldi_ioctl(dvd-vd_lh, zio-io_cmd,
  (uintptr_t)zio-io_dk_callback,
  FKIOCTL, kcred, NULL);


Note that it's not just in vdev_disk_io_start() that we pass NULL.  It's 
everywhere - there are four calls in vdev_disk.c to ldi_ioctl, and they 
all pass NULL.


ldi_ioctl() expects last parameter as an integer pointer ( int *rvalp). 
I see that in strdoictl().


I'm curious about your configuration.  What is the setup you've got that 
is going through stream i/o?



Regards,
markm
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()

2009-04-10 Thread George Wilson

shyamali.chakrava...@sun.com wrote:

Hi All,

I have corefile where we see NULL pointer de-reference PANIC as we 
have sent (deliberately) NULL pointer for return value.



vdev_disk_io_start()
...
...

error = ldi_ioctl(dvd-vd_lh, zio-io_cmd,
   (uintptr_t)zio-io_dk_callback,
   FKIOCTL, kcred, NULL);


ldi_ioctl() expects last parameter as an integer pointer ( int 
*rvalp).  I see that in strdoictl().  Corefile I am analysing has 
similar BAD trap while trying tostw%g0, [%i5]  ( clr   
[%i5] )


This doesn't make since as strdoictl() should only be called on a 
stream. Normal call path should be to cdev_ioctl() and eventually to 
sdioctl(). Can you provide the stack?


- George


/*
* Set return value.
*/
   *rvalp = iocbp-ioc_rval;


*/

Is it a bug??  This code is all we do in vdev_disk_io_start().  I 
would appreciate any feedback on this.


regards,
--shyamali
___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss


Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()

2009-04-10 Thread Shyamali . Chakravarty

Hi Mark,

Thanks for responding.  In my case cdev_ioctl() is going through 
vxdmp:dmpioctl()


pc:  0x134ccb8 vxdmp:dmpioctl+0x8:   stw%g0, [%i5]  ( clr   
[%i5] )
npc: 0x134ccbc vxdmp:dmpioctl+0xc:   or   %g0, %i0, %o0   ( mov   %i0, 
%o0 ) 
trapvxdmp:dmpioctl+0x8(, 0x422, 0x3000c3b7108, 0x8020, 
0x60032c03df0, 0x0)
genunix:ldi_ioctl(0x6004c8cce78, 0x422, 0x3000c3b7108, 
0x8000, 0x60032c03df0, 0x0) - frame recycled

zfs:vdev_disk_io_start+0xc8()
zfs:zio_vdev_io_start(0x3000c3b6eb8) - frame recycled

As we see %i5 is NULL  from ldi_ioctl()  we panic here.

--shyamali


On 04/10/09 06:26, Mark J Musante wrote:

On Thu, 9 Apr 2009, shyamali.chakrava...@sun.com wrote:


Hi All,

I have corefile where we see NULL pointer de-reference PANIC as we 
have sent (deliberately) NULL pointer for return value.



vdev_disk_io_start()
   error = ldi_ioctl(dvd-vd_lh, zio-io_cmd,
  (uintptr_t)zio-io_dk_callback,
  FKIOCTL, kcred, NULL);


Note that it's not just in vdev_disk_io_start() that we pass NULL.  
It's everywhere - there are four calls in vdev_disk.c to ldi_ioctl, 
and they all pass NULL.


ldi_ioctl() expects last parameter as an integer pointer ( int 
*rvalp). I see that in strdoictl().


I'm curious about your configuration.  What is the setup you've got 
that is going through stream i/o?



Regards,
markm


___
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss