Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Nov 2009 17:08:53 +0100
From:      Gary Jennejohn <garyj@denx.de>
To:        Alexander Best <alexbestms@math.uni-muenster.de>
Cc:        freebsd-hackers@FreeBSD.org, Alexander Best <alexbestms@math.uni-muenster.de>, Alex Dupre <ale@FreeBSD.org>
Subject:   Re: rmdir(2) and mkdir(2) both return EISDIR for argument "/"
Message-ID:  <20091106170853.7d0b0b6f@ernst.jennejohn.org>
In-Reply-To: <permail-2009110615322280e26a0b00003ff9-a_best01@message-id.uni-muenster.de>
References:  <4AF42D61.6050403@FreeBSD.org> <permail-2009110615322280e26a0b00003ff9-a_best01@message-id.uni-muenster.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 06 Nov 2009 16:32:22 +0100 (CET)
Alexander Best <alexbestms@math.uni-muenster.de> wrote:

> Alex Dupre schrieb am 2009-11-06:
> > Alexander Best ha scritto:
> > > i dug up this old pr
> > > http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/59739
> 
> > I think the EISDIR error is coming from kern/vfs_lookup.c, lookup()
> > function with cn_nameptr = "":
> 
> 
> >         /*
> >          * Check for degenerate name (e.g. / or "")
> >          * which is a way of talking about a directory,
> >          * e.g. like "/." or ".".
> >          */
> >         if (cnp->cn_nameptr[0] == '\0') {
> >                 ...
> >                 if (cnp->cn_nameiop != LOOKUP) {
> >                         error = EISDIR;
> >                         goto bad;
> >                 }
> >                 ...
> 
> thanks a lot for finding the problem in the src. what do you think of the
> patch attached to this message? after applying it the example code i posted in
> my previous message returns the following output (instead of EISDIR):
> 
> rmdir errno: 16 (which is EBUSY)
> mkdir errno: 17 (which is EEXIST)
> 
> i don't know if these really are the correct return values, but it's what the
> originator of the PR requested.
> 

What if cn_nameiop is != LOOKUP but also neither DELETE nor CREATE,
assuming that case is possible?  I'd leave the original if-clause at
the end to catch that.

---
Gary Jennejohn



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091106170853.7d0b0b6f>