NetBSD Problem Report #43167

From www@NetBSD.org  Thu Apr 15 23:48:41 2010
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id CF99A63B8FE
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 15 Apr 2010 23:48:40 +0000 (UTC)
Message-Id: <20100415234840.1BCAD63B8BC@www.NetBSD.org>
Date: Thu, 15 Apr 2010 23:48:40 +0000 (UTC)
From: ahoka@NetBSD.org
Reply-To: ahoka@NetBSD.org
To: gnats-bugs@NetBSD.org
Subject: Locking related panic in tmpfs
X-Send-Pr-Version: www-1.0

>Number:         43167
>Category:       kern
>Synopsis:       Locking related panic in tmpfs
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    rmind
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Apr 15 23:50:00 +0000 2010
>Closed-Date:    Sun May 29 22:44:54 +0000 2011
>Last-Modified:  Sun May 29 22:44:54 +0000 2011
>Originator:     Adam Hoka
>Release:        NetBSD-current
>Organization:
>Environment:
NetBSD mechanika.local 5.99.26 NetBSD 5.99.26 (GENERIC) #6: Thu Apr 15 11:16:21 CEST 2010  ahoka@mechanika.local:/usr/build/objects/sys/arch/i386/compile/GENERIC i386
>Description:
uvm_fault(0xcba1a84c, 0, 1) -> 0xe
fatal page fault in supervisor mode
trap type 6 code 0 eip c0481599 cs 8 eflags 10287 cr2 0 ilevel 8
kernel: supervisor trap page fault, code=0
Stopped in pid 26592.1 (sh) at  netbsd:turnstile_block+0x119:   movl    0x10(%ea
x),%eax
db{0}> turnstile_block(0,1,cbd37440,c0a0944c,0,0,0,cb620cc0,20000020,0) at netbs
d:turnstile_block+0x119
mutex_vector_enter(cbd37440,cb91fcf4,cb163aec,c0693c30,cb163adc,cb455eff,cb163b1
c,cb44c2a3,cb91fcf4,c09160e0) at netbsd:mutex_vector_enter+0x365
tmpfs_alloc_vp(cb44f000,cbd373d4,cb163c70,cb44f000,cb163c70,cb91fcf4,cbd37604,cb
91fcf4,cb91fcf4,cb455eff) at tmpfs:tmpfs_alloc_vp+0x19
tmpfs_lookup(cb163b38,20002,cb163b4c,c06836c6,cb91fcf4,c0915fa0,cb91fcf4,cb163c7
0,cb163c2c,0) at tmpfs:tmpfs_lookup+0x16e
VOP_LOOKUP(cb91fcf4,cb163c70,cb163c2c,cb455eff,cb163b7c,cb620cc0,0,5,cb620cc0,12
) at netbsd:VOP_LOOKUP+0x6d
getcwd_common(cb91fcf4,cb005a10,cb163ccc,cb455e00,80,1,cbc08020,0,cb455e00,cb455
f00) at netbsd:getcwd_common+0x2fd
sys___getcwd(cbc08020,cb163d00,cb163d28,cb163d00,bbb22000,cbc021f4,128,8065e64,1
00,bbbf6edc) at netbsd:sys___getcwd+0x95
syscall(cb163d48,b3,ab,1f,1f,0,8065e64,bfbfe918,bbba32c0,bfbfe9a4) at netbsd:sys
call+0xb9

>How-To-Repeat:
Build stuff on tmpfs, I dont know.
>Fix:
FreeBSD has a fix: http://www.freebsd.org/cgi/query-pr.cgi?pr=122038

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: kern-bug-people->rmind
Responsible-Changed-By: rmind@NetBSD.org
Responsible-Changed-When: Fri, 16 Apr 2010 00:21:52 +0000
Responsible-Changed-Why:
Most certainly a duplicate of PR/40757 and PR/40088: due to lack of locking,
parent inode disappears while allocating a new one in lookup.

Take, so I wont forget this.


From: "Mindaugas Rasiukevicius" <rmind@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/43167 CVS commit: src/sys/fs/tmpfs
Date: Sun, 29 May 2011 22:29:08 +0000

 Module Name:	src
 Committed By:	rmind
 Date:		Sun May 29 22:29:07 UTC 2011

 Modified Files:
 	src/sys/fs/tmpfs: tmpfs.h tmpfs_subr.c tmpfs_vfsops.c tmpfs_vnops.c

 Log Message:
 - Rework and document inode reference counting.  Also document inode life
   cycle (destruction part).  Perform link counting in tmpfs_dir_attach()
   and tmpfs_dir_detach(), instead of alloc/free and arbitrary places.
   Fixes PR/44285, PR/44288, PR/44657 and likely PR/42484.

 - Fix the race between the lookup and inode destruction.  Fixes PR/43167
   and its duplicates PR/40088, PR/40757.

 - Improve tmpfs_rename() locking a little, fix kqueue event notifications
   and also fix PR/43617.  Add simplistic tmpfs_parentcheck_p(); to be
   expanded and used for further rename() locking fixes.

 - Cache directory entry "hint" in the tmpfs node, add tmpfs_dir_cached(),
   and thus avoid unnecessary lookup in tmpfs_remove() and tmpfs_rmdir().

 - Set correct _PC_FILESIZEBITS value in tmpfs_pathconf().  Fixes PR/43576.

 - Few minor fixes.


 To generate a diff of this commit:
 cvs rdiff -u -r1.43 -r1.44 src/sys/fs/tmpfs/tmpfs.h
 cvs rdiff -u -r1.70 -r1.71 src/sys/fs/tmpfs/tmpfs_subr.c
 cvs rdiff -u -r1.50 -r1.51 src/sys/fs/tmpfs/tmpfs_vfsops.c
 cvs rdiff -u -r1.84 -r1.85 src/sys/fs/tmpfs/tmpfs_vnops.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: rmind@NetBSD.org
State-Changed-When: Sun, 29 May 2011 22:44:54 +0000
State-Changed-Why:
Fixed, thanks.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.