Subject: Re: CVS commit: src/sys/fs/msdosfs
To: None <tech-kern@NetBSD.org>
From: Antti Kantee <pooka@netbsd.org>
List: tech-kern
Date: 11/15/2007 19:41:03
Can someone take a glance at this to check if it makes any regular
code paths worse than they already were?  I'm thinking about a netbsd-4
pullup, as I think the same problem applies.  The routine should really
be rewritten, but I don't have energy for that in the foreseeable future.

On Wed Nov 14 2007 at 19:16:29 +0000, Antti Kantee wrote:
> 
> Module Name:	src
> Committed By:	pooka
> Date:		Wed Nov 14 19:16:29 UTC 2007
> 
> Modified Files:
> 	src/sys/fs/msdosfs: msdosfs_vnops.c
> 
> Log Message:
> Fix a problem noticed by Reinoud: the fs would try to release an
> unlocked vnode when trying to rename a directory.  The fix was to
> shuffle some bits around and #pray.
> 
> The rename routine actually needs a very very major wide-angle whopping:
>  * it takes locks out-of-order
>  * it deals with references from SAVESTART lookups in interesting ways
>  * I doubt there is any guarantee for correct operation if there
>    are multiple concurrent accesses
>  * the error branches might just as well call panic() directly
> 
> 
> To generate a diff of this commit:
> cvs rdiff -r1.42 -r1.43 src/sys/fs/msdosfs/msdosfs_vnops.c
> 
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
> 

-- 
Antti Kantee <pooka@iki.fi>                     Of course he runs NetBSD
http://www.iki.fi/pooka/                          http://www.NetBSD.org/
    "la qualité la plus indispensable du cuisinier est l'exactitude"