Date: Mon, 3 Sep 2001 03:59:47 +0600 (GMT+6) From: "Semen A. Ustimenko" <semenu@FreeBSD.org> To: freebsd-hackers@FreeBSD.org Subject: page fault unmounting FFS from NFS-located special Message-ID: <Pine.BSF.4.21.0109030342490.2149-100000@default>
next in thread | raw e-mail | index | archive | help
Hi! Here is sequence leading to page fault: 1. Make special file on NFS 2. Mount FFS from this file 3. Read or write special file (for attributes to change) 4. Unmount this special 5. Enjoy ``Fatal trap 12: ...'' Like this: su-2.04# mount 192.168.5.1:/home/diskless_root on / (nfs, noatime) mfs:10 on /var (mfs, asynchronous, local) 192.168.5.1:/home on /home (nfs) su-2.04# mount /dev/ad0s2a /mnt su-2.04# dd if=/dev/ad0s2a of=/dev/null bs=1k count=1 1+0 records in 1+0 records out 1024 bytes transferred in 0.003526 secs (290416 bytes/sec) su-2.04# umount /mnt ... (gdb) where #0 0xc01ae3a8 in nfs_request (vp=0xcec34a00, mrest=0xc07a8900, procnum=2, procp=0xcec39560, cred=0x0, mrp=0xcf654da8, mdp=0xcf654dac, dposp=0xcf654db0) at ../../nfs/nfs_socket.c:1006 #1 0xc01ba167 in nfs_setattrrpc (vp=0xcec34a00, vap=0xcf654e1c, cred=0x0, procp=0xcec39560) at ../../nfs/nfs_vnops.c:792 #2 0xc01b8b50 in nfs_setattr (ap=0xcf654e08) at ../../nfs/nfs_vnops.c:740 #3 0xc01c9441 in nfsspec_close (ap=0xcf654e94) at vnode_if.h:305 #4 0xc01da96a in ffs_unmount (mp=0xc21d4600, mntflags=0, p=0xcec39560) at vnode_if.h:218 #5 0xc0161ace in dounmount (mp=0xc21d4600, flags=0, p=0xcec39560) at ../../kern/vfs_syscalls.c:483 #6 0xc0161a11 in unmount (p=0xcec39560, uap=0xcf654f80) at ../../kern/vfs_syscalls.c:451 #7 0xc021f73e in syscall2 (frame={tf_fs = 47, tf_es = 47, tf_ds = 47, tf_edi = 134661253, tf_esi = 134738749, tf_ebp = -1077937436, tf_isp = -815444012, tf_ebx = 0, tf_edx = 0, tf_ecx = 3, tf_eax = 22, tf_trapno = 12, tf_err = 2, tf_eip = 134522456, tf_cs = 31, tf_eflags = 663, tf_esp = -1077938584, tf_ss = 47}) at ../../i386/i386/trap.c:1126 #8 0xc02120d5 in Xint0x80_syscall () #9 0x8048442 in ?? () #10 0x8048139 in ?? () (gdb) f 0 #0 0xc01ae3a8 in nfs_request (vp=0xcec34a00, mrest=0xc07a8900, procnum=2, procp=0xcec39560, cred=0x0, mrp=0xcf654da8, mdp=0xcf654dac, dposp=0xcf654db0) at ../../nfs/nfs_socket.c:1006 1006 if (cred->cr_ngroups < 1) (gdb) print cred $1 = (struct ucred *) 0x0 the cause is code in ffs_vfsops.c:ffs_unmount() ... error = VOP_CLOSE(ump->um_devvp, fs->fs_ronly ? FREAD : FREAD|FWRITE, NOCRED, p); ^^^^^^ == NULL ... I have no good ideas how to fix this and if it is worth to be fixed... (This all was tested on 4.1 system, but it seems nothing changed since those times) Bye! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0109030342490.2149-100000>