NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/44239: raidframe causes a div-by-zero fault for small disks



>Number:         44239
>Category:       kern
>Synopsis:       raidframe causes a div-by-zero fault for small disks
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 15 20:30:00 +0000 2010
>Originator:     Antti Kantee
>Release:        
>Organization:
>Environment:
>Description:
Seems like small disks have 0 parity regions:

(gdb) bt
#0  0xbbbb610c in __udivdi3 () from /usr/lib/librumpdev_dm.so.0
#1  0xbbb49370 in rf_paritymap_init (pm=0xb9a5bf20, raid=0xbb4c0000, 
    params=0xb77ff324)
    at 
/usr/allsrc/src/sys/rump/dev/lib/libraidframe/../../../../dev/raidframe/rf_paritymap.c:444
#2  0xbbb49b7d in rf_paritymap_attach (raidPtr=0xbb4c0000, force=1)
    at 
/usr/allsrc/src/sys/rump/dev/lib/libraidframe/../../../../dev/raidframe/rf_paritymap.c:679
#3  0xbbb6dbae in rf_Configure (raidPtr=0xbb4c0000, cfgPtr=0xb8321000, ac=0x0)
    at 
/usr/allsrc/src/sys/rump/dev/lib/libraidframe/../../../../dev/raidframe/rf_driver.c:425
#4  0xbbb65497 in raidioctl (dev=15875, cmd=2147774977, data=0xb77ff920, 
    flag=3, l=0xb9a46ad4)
    at 
/usr/allsrc/src/sys/rump/dev/lib/libraidframe/../../../../dev/raidframe/rf_netbsdkintf.c:1192
#5  0xbb6dc300 in cdev_ioctl (dev=15875, cmd=2147774977, data=0xb77ff920, 
    flag=3, l=0xb9a46ad4)
    at /usr/allsrc/src/sys/rump/librump/rumpkern/../../../kern/subr_devsw.c:876
#6  0xbb771e6d in spec_ioctl (v=0xb77ff7a8)
    at 
/usr/allsrc/src/sys/rump/librump/rumpvfs/../../../miscfs/specfs/spec_vnops.c:753
#7  0xbb790102 in rump_vop_spec (v=0xb77ff7a8) at rumpfs.c:1453
#8  0xbb6ca64a in VOP_IOCTL (vp=0xbb4b62f8, command=2147774977, 
    data=0xb77ff920, fflag=3, cred=0xbb425f00)
    at /usr/allsrc/src/sys/rump/librump/rumpkern/../../../kern/vnode_if.c:467
#9  0xbb77bbdc in vn_ioctl (fp=0xb8319f80, com=2147774977, data=0xb77ff920)
    at /usr/allsrc/src/sys/rump/librump/rumpvfs/../../../kern/vfs_vnops.c:731
#10 0xbb6addd4 in sys_ioctl (l=0xb9a46ad4, uap=0xb9b04040, retval=0xb77ffa7c)
    at /usr/allsrc/src/sys/rump/librump/rumpkern/../../../kern/sys_generic.c:624
#11 0xbb704fcc in sy_call (sy=0xbb71aea8, l=0xb9a46ad4, uap=0xb9b04040, 
    rval=0xb77ffa7c) at /sys/rump/librump/rumpkern/../../../sys/syscallvar.h:61
#12 0xbb704f8c in rump_proxy_syscall (num=54, arg=0xb9b04040, 
    retval=0xb77ffa7c) at rump.c:672
#13 0xbb667650 in rumpsyscall (sysnum=54, data=0xb9b04040, retval=0xb77ffa7c)
    at rumpuser_sp.c:161
#14 0xbb667f60 in serv_handlesyscall (spc=0xbb66dc64, rhdr=0xb9b02074, 
    data=0xb9b04040 "") at rumpuser_sp.c:472
#15 0xbb66809f in serv_syscallbouncer (arg=0x0) at rumpuser_sp.c:516
#16 0xbb65f4c7 in pthread_setcancelstate () from /usr/lib/libpthread.so.0
#17 0xbb5a3610 in swapcontext () from /usr/lib/libc.so.12

444             rstripes = howmany(raid->Layout.numStripe, pm->params.regions);
(gdb) print pm->params
$1 = {cooldown = 8, tickms = 40000, regions = 0}

>How-To-Repeat:
run tests/dev/raid/t_raid smalldisk (to be committed very soon)
>Fix:



Home | Main Index | Thread Index | Old Index