Date: Sat, 27 Jan 2001 17:03:18 +0100 (CET) From: pantzer@ludd.luth.se To: FreeBSD-gnats-submit@freebsd.org Subject: kern/24680: panic on cd .. on the root of a filesystem that is unmounted. Message-ID: <200101271603.f0RG3I905012@skalman.campus.luth.se>
next in thread | raw e-mail | index | archive | help
>Number: 24680
>Category: kern
>Synopsis: panic on cd .. on the root of a filesystem that is unmounted.
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Jan 27 08:10:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Mattias Pantzare
>Release: FreeBSD 4.2-STABLE i386
>Organization:
>Environment:
>Description:
The kernel will panic if a user does cd .. in a shell that was on the
mountpoint of a filesystem that has been unmounted with the force flag.
#0 dumpsys () at ../../kern/kern_shutdown.c:469
#1 0xc013336f in boot (howto=260) at ../../kern/kern_shutdown.c:309
#2 0xc0133705 in panic (fmt=0xc023fcf4 "from debugger")
at ../../kern/kern_shutdown.c:556
#3 0xc011e339 in db_panic (addr=-1072311442, have_addr=0, count=-1,
modif=0xc5d10c7c "") at ../../ddb/db_command.c:433
#4 0xc011e2d9 in db_command (last_cmdp=0xc026ab78, cmd_table=0xc026a9d8,
aux_cmd_tablep=0xc0284208) at ../../ddb/db_command.c:333
#5 0xc011e39e in db_command_loop () at ../../ddb/db_command.c:455
#6 0xc01204ab in db_trap (type=12, code=0) at ../../ddb/db_trap.c:71
#7 0xc021ca8a in kdb_trap (type=12, code=0, regs=0xc5d10dd0)
at ../../i386/i386/db_interface.c:158
#8 0xc022bcc8 in trap_fatal (frame=0xc5d10dd0, eva=16)
at ../../i386/i386/trap.c:946
#9 0xc022b9a1 in trap_pfault (frame=0xc5d10dd0, usermode=0, eva=16)
at ../../i386/i386/trap.c:844
#10 0xc022b517 in trap (frame={tf_fs = 16, tf_es = 16, tf_ds = 16,
tf_edi = -976154868, tf_esi = -980796414, tf_ebp = -976155060,
tf_isp = -976155140, tf_ebx = -975865280, tf_edx = -976154908,
tf_ecx = 38, tf_eax = 0, tf_trapno = 12, tf_err = 0,
tf_eip = -1072311442, tf_cs = 8, tf_eflags = 582, tf_esp = -975865280,
tf_ss = -1064217856}) at ../../i386/i386/trap.c:443
#11 0xc015d36e in lookup (ndp=0xc5d10ee4) at ../../kern/vfs_lookup.c:408
#12 0xc015cef4 in namei (ndp=0xc5d10ee4) at ../../kern/vfs_lookup.c:153
#13 0xc0161705 in change_dir (ndp=0xc5d10ee4, p=0xc58935e0)
at ../../kern/vfs_syscalls.c:935
#14 0xc01615b8 in chdir (p=0xc58935e0, uap=0xc5d10f80)
at ../../kern/vfs_syscalls.c:836
#15 0xc022bfa1 in syscall2 (frame={tf_fs = 47, tf_es = 47, tf_ds = 47,
tf_edi = 135464784, tf_esi = 0, tf_ebp = -1077954296,
tf_isp = -976154668, tf_ebx = 135725184, tf_edx = 135472514,
tf_ecx = 135472640, tf_eax = 12, tf_trapno = 22, tf_err = 2,
tf_eip = 134802156, tf_cs = 31, tf_eflags = 582, tf_esp = -1077957444,
tf_ss = 47}) at ../../i386/i386/trap.c:1150
#16 0xc021d3d5 in Xint0x80_syscall ()
#17 0x804bb09 in ?? ()
#18 0x80532e4 in ?? ()
#19 0x806061a in ?? ()
#20 0x8060855 in ?? ()
#21 0x804a7db in ?? ()
#22 0x8049a07 in ?? ()
#23 0x8048135 in ?? ()
>How-To-Repeat:
mount /dev/ad1a /mnt
cd /mnt
umount -f /mnt
cd ..
PANIC
>Fix:
This might not be the "right" fix, but it stops the panic.
*** vfs_lookup.c Sat Jan 27 17:37:24 2001
--- vfs_lookup.c.new Sat Jan 27 17:37:06 2001
***************
*** 404,409 ****
--- 404,411 ----
if ((dp->v_flag & VROOT) == 0 ||
(cnp->cn_flags & NOCROSSMOUNT))
break;
+ if (dp->v_mount == 0)
+ break;
tdp = dp;
dp = dp->v_mount->mnt_vnodecovered;
vput(tdp);
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200101271603.f0RG3I905012>
