From asf@beaver.boinkor.net  Thu Nov 27 13:15:46 2003
Return-Path: <asf@beaver.boinkor.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 626D416A4CE
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 27 Nov 2003 13:15:46 -0800 (PST)
Received: from beaver.boinkor.net (212-88-187-152.ADSL.ycn.com [212.88.187.152])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 6755943FA3
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 27 Nov 2003 13:15:44 -0800 (PST)
	(envelope-from asf@beaver.boinkor.net)
Received: from beaver.boinkor.net (localhost [127.0.0.1])
	by beaver.boinkor.net (8.12.10/8.12.10) with ESMTP id hARLFg6a005213
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 27 Nov 2003 22:15:42 +0100 (CET)
	(envelope-from asf@beaver.boinkor.net)
Received: (from asf@localhost)
	by beaver.boinkor.net (8.12.10/8.12.10/Submit) id hARLFfIh005212;
	Thu, 27 Nov 2003 22:15:41 +0100 (CET)
	(envelope-from asf)
Message-Id: <200311272115.hARLFfIh005212@beaver.boinkor.net>
Date: Thu, 27 Nov 2003 22:15:41 +0100 (CET)
From: Andreas Fuchs <asf@boinkor.net>
Reply-To: Andreas Fuchs <asf@boinkor.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: rmdir(2) and mkdir(2) both return EISDIR for argument "/"
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         59739
>Category:       kern
>Synopsis:       [patch] [libc] rmdir(2) and mkdir(2) both return EISDIR for argument "/"
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 27 13:20:13 PST 2003
>Closed-Date:    
>Last-Modified:  Sun Jul 01 16:11:02 UTC 2012
>Originator:     Andreas Fuchs
>Release:        FreeBSD 5.2-BETA i386
>Organization:
>Environment:
System: FreeBSD beaver.boinkor.net 5.2-BETA FreeBSD 5.2-BETA #6: Thu Nov 27 00:06:50 CET 2003 root@:/usr/obj/usr/src/sys/BOINKINE i386


>Description:
	Calling rmdir or mkdir on "/" returns EISDIR, but calling them 
	on any other mount point name returns the documented and correct
	return value (EBUSY for rmdir and EEXIST for mkdir).

	This seems to affect only the literal value "/". Using 
	"/etc/.." (where "etc" is a regular directory, just to be sure) 
	yields the correct result.
	
>How-To-Repeat:
	# rmdir /
	rmdir: /: Is a directory
	# rmdir /usr
	rmdir: /usr: Device busy
	# rmdir /etc/..
	rmdir: /etc/..: Device busy
	
	same for mkdir:
	# mkdir /
	mkdir: /: Is a directory
	# mkdir /usr
	mkdir: /usr: File exists
	# mkdir /etc/..
	mkdir: /etc/..: File exists
	
	(where /etc is not a mount point, so /etc/.. would be the root directory)
	I could repeat this on 5.2-BETA and 4.9-STABLE.
>Fix:

	I /think/ the problem lies somewhere in namei() (or lookup() from there)
	calls from rmdir and mkdir, but neither am I a kernel hacker nor could I 
	find the bug in there. This is all rather speculative, so I can't really 
	offer a fix - sorry.
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->suspended 
State-Changed-By: linimon 
State-Changed-When: Mon Oct 24 18:02:22 GMT 2005 
State-Changed-Why:  
Mark as 'suspended' since this does not seem as though it is being 
actively worked on. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 

From: Joe Peterson <lavajoe@gentoo.org>
To: bug-followup@FreeBSD.org,  asf@boinkor.net
Cc:  
Subject: Re: kern/59739: [libc] rmdir(2) and mkdir(2) both return EISDIR for
 argument "/"
Date: Thu, 02 Aug 2007 15:01:12 -0600

 Hi, we at Gentoo/FreeBSD just ran into this issue with a script that had
 worked on Linux, since it expected EEXIST for all dirs (it did not
 expect EISDIR when trying to mkdir an existing dir when it hit "/").  We
 have fixed it, but since the mkdir/rmdir man pages do not specify EISDIR
 as a potential error code - and just for correctness/compatibility
 reasons - my feeling is that it would be good to fix this issue.  I also
 have no experience hacking FreeBSD kernel or userland utilities, so I
 have not pursued providing a patch.  Sorry if this follow-up is not
 useful without having a patch.
 
 						-Thanks, Joe

From: Alexander Best <alexbestms@math.uni-muenster.de>
To: <bug-followup@FreeBSD.org>,
 <asf@boinkor.net>
Cc:  
Subject: Re: kern/59739: [libc] rmdir(2) and mkdir(2) both return EISDIR for
 argument "/"
Date: Fri, 06 Nov 2009 17:08:08 +0100 (CET)

   This is a MIME encoded multipart message.
 
 --+permail-2009110616080880e26a0b000067d5-a_best01+
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 this problem still exists under 9-current.
 
 the following test app:
 
 #include <sys/stat.h>
 #include <errno.h>
 #include <stdio.h>
 #include <unistd.h>
 
 main() {
     rmdir("/");
     printf("rmdir errno: %d\n", errno);
     mkdir("/", 511);
     printf("mkdir errno: %d\n", errno);
 }
 
 produces this output:
 
 rmdir errno: 21
 mkdir errno: 21
 
 which is EISDIR (as reported by Andreas Fuchs).
 
 could somebody please check if the attached patch is sufficient to solve this
 problem? with the patch the test app now outputs:
 
 rmdir errno: 16
 mkdir errno: 17
 
 16 being EBUSY and 17 being EEXIST. this is what Andreas Fuchs suggested.
 
 cheers.
 alex
 
 --+permail-2009110616080880e26a0b000067d5-a_best01+
 Content-Type: text/plain
 Content-Transfer-Encoding: Base64
 Content-Disposition: attachment; filename="vfslookup.c.patch.txt"
 
 LS0tIHZmc19sb29rdXAuYwkyMDA5LTExLTA2IDE2OjE0OjQxLjAwMDAwMDAwMCArMDEwMAorKysg
 L3Vzci9zcmMvc3lzL2tlcm4vdmZzX2xvb2t1cC5jCTIwMDktMTEtMDYgMTY6MTM6MTkuMDAwMDAw
 MDAwICswMTAwCkBAIC0zNSw3ICszNSw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHN5cy9jZGVmcy5o
 PgotX19GQlNESUQoIiRGcmVlQlNEJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9r
 ZXJuL3Zmc19sb29rdXAuYyAxOTU5MzkgMjAwOS0wNy0yOSAwNzo0NDo0M1ogcndhdHNvbiAkIik7
 CiAKICNpbmNsdWRlICJvcHRfa2R0cmFjZS5oIgogI2luY2x1ZGUgIm9wdF9rdHJhY2UuaCIKQEAg
 LTU2Myw4ICs1NjMsMTIgQEAKIAkJCWVycm9yID0gRU5PVERJUjsKIAkJCWdvdG8gYmFkOwogCQl9
 Ci0JCWlmIChjbnAtPmNuX25hbWVpb3AgIT0gTE9PS1VQKSB7Ci0JCQllcnJvciA9IEVJU0RJUjsK
 KwkJaWYgKGNucC0+Y25fbmFtZWlvcCAhPSBMT09LVVAgJiYgY25wLT5jbl9uYW1laW9wID09IERF
 TEVURSkgeworCQkJZXJyb3IgPSBFQlVTWTsKKwkJCWdvdG8gYmFkOworCQl9CisJCWlmIChjbnAt
 PmNuX25hbWVpb3AgIT0gTE9PS1VQICYmIGNucC0+Y25fbmFtZWlvcCA9PSBDUkVBVEUpIHsKKwkJ
 CWVycm9yID0gRUVYSVNUOwogCQkJZ290byBiYWQ7CiAJCX0KIAkJaWYgKHdhbnRwYXJlbnQpIHsK
 
 --+permail-2009110616080880e26a0b000067d5-a_best01+--

From: Alexander Best <alexbestms@math.uni-muenster.de>
To: <bug-followup@FreeBSD.org>,
 <asf@boinkor.net>
Cc:  
Subject: Re: kern/59739: [libc] rmdir(2) and mkdir(2) both return EISDIR for
 argument "/"
Date: Fri, 06 Nov 2009 17:49:41 +0100 (CET)

 the patch supplied in the previous followup is currently being discussed in
 this thread:
 
 http://lists.freebsd.org/pipermail/freebsd-hackers/2009-November/029928.html
 
 a final patch will be supplied in the next few days as followup to this
 problem report. thus please ignore the previous patch.
 
 alex
State-Changed-From-To: suspended->open 
State-Changed-By: linimon 
State-Changed-When: Fri Nov 6 18:14:42 UTC 2009 
State-Changed-Why:  
There is now an open thread dicussing the patch (see Audit-Trail). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 

From: Alexander Best <alexbestms@math.uni-muenster.de>
To: <bug-followup@FreeBSD.org>,
 <asf@boinkor.net>
Cc:  
Subject: Re: kern/59739: [libc] rmdir(2) and mkdir(2) both return EISDIR for
 argument "/"
Date: Sun, 08 Nov 2009 04:05:11 +0100 (CET)

   This is a MIME encoded multipart message.
 
 --+permail-200911080305111e86ffa800003557-a_best01+
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 after discussing this problem in the thread mentioned in the previous followup
 it was decide to move all changes to sys/kern/vfs_syscalls.c in order not to
 break any code which relies on namei() returning EISDIR.
 
 attached you'll find the final patch (which supersedes the previous one). this
 patch doesn't require any changes to the rename(2), mkdir(2) or rmdir(2)
 manuals.
 
 please set this pr into analysed state.
 
 alex
 
 --+permail-200911080305111e86ffa800003557-a_best01+
 Content-Type: text/plain
 Content-Transfer-Encoding: Base64
 Content-Disposition: attachment; filename="vfssyscalls.c.patch.txt"
 
 SW5kZXg6IHN5cy9rZXJuL3Zmc19zeXNjYWxscy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9rZXJuL3Zm
 c19zeXNjYWxscy5jCShyZXZpc2lvbiAxOTkwMTYpCisrKyBzeXMva2Vybi92ZnNfc3lzY2FsbHMu
 Ywkod29ya2luZyBjb3B5KQpAQCAtMzU4Nyw4ICszNTg3LDEyIEBACiAJICAgIEFVRElUVk5PREUx
 LCBwYXRoc2VnLCBvbGQsIG9sZGZkLCB0ZCk7CiAjZW5kaWYKIAotCWlmICgoZXJyb3IgPSBuYW1l
 aSgmZnJvbW5kKSkgIT0gMCkKKwlpZiAoKGVycm9yID0gbmFtZWkoJmZyb21uZCkpICE9IDApIHsK
 KwkJLyogVHJhbnNsYXRlIGVycm9yIGNvZGUgZm9yIHJlbmFtZSgiLyIsICJkaXIyIikuICovCisJ
 CWlmIChlcnJvciA9PSBFSVNESVIpCisJCQllcnJvciA9IEVJTlZBTDsKIAkJcmV0dXJuIChlcnJv
 cik7CisJfQogCWZ2ZnNsb2NrZWQgPSBOREhBU0dJQU5UKCZmcm9tbmQpOwogCXR2ZnNsb2NrZWQg
 PSAwOwogI2lmZGVmIE1BQwpAQCAtMzczNyw4ICszNzQxLDEyIEBACiAJTkRJTklUX0FUKCZuZCwg
 Q1JFQVRFLCBMT0NLUEFSRU5UIHwgU0FWRU5BTUUgfCBNUFNBRkUgfCBBVURJVFZOT0RFMSwKIAkg
 ICAgc2VnZmxnLCBwYXRoLCBmZCwgdGQpOwogCW5kLm5pX2NuZC5jbl9mbGFncyB8PSBXSUxMQkVE
 SVI7Ci0JaWYgKChlcnJvciA9IG5hbWVpKCZuZCkpICE9IDApCisJaWYgKChlcnJvciA9IG5hbWVp
 KCZuZCkpICE9IDApIHsKKwkJLyogVHJhbnNsYXRlIGVycm9yIGNvZGUgZm9yIG1rZGlyKCIvIiku
 ICovCisJCWlmIChlcnJvciA9PSBFSVNESVIpCisJCQllcnJvciA9IEVFWElTVDsKIAkJcmV0dXJu
 IChlcnJvcik7CisJfQogCXZmc2xvY2tlZCA9IE5ESEFTR0lBTlQoJm5kKTsKIAl2cCA9IG5kLm5p
 X3ZwOwogCWlmICh2cCAhPSBOVUxMKSB7CkBAIC0zODI1LDEwICszODMzLDE1IEBACiAJYndpbGx3
 cml0ZSgpOwogCU5ESU5JVF9BVCgmbmQsIERFTEVURSwgTE9DS1BBUkVOVCB8IExPQ0tMRUFGIHwg
 TVBTQUZFIHwgQVVESVRWTk9ERTEsCiAJICAgIHBhdGhzZWcsIHBhdGgsIGZkLCB0ZCk7Ci0JaWYg
 KChlcnJvciA9IG5hbWVpKCZuZCkpICE9IDApCisJaWYgKChlcnJvciA9IG5hbWVpKCZuZCkpICE9
 IDApIHsKKwkJLyogVHJhbnNsYXRlIGVycm9yIGNvZGUgZm9yIHJtZGlyKCIvIikuICovCisJCWlm
 IChlcnJvciA9PSBFSVNESVIpCisJCQllcnJvciA9IEVCVVNZOwogCQlyZXR1cm4gKGVycm9yKTsK
 Kwl9CiAJdmZzbG9ja2VkID0gTkRIQVNHSUFOVCgmbmQpOwogCXZwID0gbmQubmlfdnA7CisJLyog
 WFhYIG5hbWVpKCkgdGFrZXMgY2FyZSBvZiB0aGlzIGNhc2UuICovCiAJaWYgKHZwLT52X3R5cGUg
 IT0gVkRJUikgewogCQllcnJvciA9IEVOT1RESVI7CiAJCWdvdG8gb3V0OwpAQCAtMzg0MSw2ICsz
 ODU0LDcgQEAKIAkJZ290byBvdXQ7CiAJfQogCS8qCisJICogWFhYIG5hbWVpKCkgdGFrZXMgY2Fy
 ZSBvZiB0aGlzIGNhc2UuCiAJICogVGhlIHJvb3Qgb2YgYSBtb3VudGVkIGZpbGVzeXN0ZW0gY2Fu
 bm90IGJlIGRlbGV0ZWQuCiAJICovCiAJaWYgKHZwLT52X3ZmbGFnICYgVlZfUk9PVCkgewo=
 
 --+permail-200911080305111e86ffa800003557-a_best01+--
State-Changed-From-To: open->analyzed 
State-Changed-By: linimon 
State-Changed-When: Tue Nov 10 08:16:33 UTC 2009 
State-Changed-Why:  
A patch has been circulated and an approach agreed on. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 

From: Alexander Best <alexbestms@wwu.de>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: kern/59739: [patch] [libc] rmdir(2) and mkdir(2) both return
 EISDIR for argument "/"
Date: Wed, 03 Mar 2010 01:16:30 +0100 (CET)

 new discussion with new patch by jh@:
 http://lists.freebsd.org/pipermail/freebsd-hackers/2010-February/030904.html
 
 alex

From: Alexander Best <alexbestms@wwu.de>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: kern/59739: [patch] [libc] rmdir(2) and mkdir(2) both return
 EISDIR for argument "/"
Date: Mon, 19 Apr 2010 12:46:02 +0200 (CEST)

 i think this issue got fixed in r205682. please mark patched and assign to jh@
 as MFC reminder.
 
 -- 
 Alexander Best
State-Changed-From-To: analyzed->patched 
State-Changed-By: linimon 
State-Changed-When: Mon Apr 19 14:37:29 UTC 2010 
State-Changed-Why:  
Apparently jh committed a patch.  Assign and set to patched as MFC reminder. 


Responsible-Changed-From-To: freebsd-bugs->jh 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Apr 19 14:37:29 UTC 2010 
Responsible-Changed-Why:  

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 
State-Changed-From-To: patched->analyzed 
State-Changed-By: linimon 
State-Changed-When: Mon Apr 19 19:04:33 UTC 2010 
State-Changed-Why:  
false alarm, it seems. 


Responsible-Changed-From-To: jh->freebsd-bugs 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Apr 19 19:04:33 UTC 2010 
Responsible-Changed-Why:  

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 

From: Garrett Cooper <yanegomi@gmail.com>
To: bug-followup@FreeBSD.org, asf@boinkor.net
Cc:  
Subject: Re: kern/59739: [patch] [libc] rmdir(2) and mkdir(2) both return
 EISDIR for argument &quot;/&quot;
Date: Fri, 14 Oct 2011 16:54:52 -0700

 This seems to have been regressed again:
 
 $ mkdir /
 mkdir: /: Is a directory
 $ mkdir /var
 mkdir: /var: File exists
 
 -Garrett

From: Petr Salinger <Petr.Salinger@seznam.cz>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/59739: "mkdir /" sets errno to EISDIR
Date: Sun, 3 Jun 2012 15:24:05 +0200 (CEST)

 Hi,
 
 it still a valid problem, at least in 8.1 and 9.0 releases.
 
 See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675768
 
 Petr
State-Changed-From-To: analyzed->open 
State-Changed-By: eadler 
State-Changed-When: Sun Jul 1 16:11:01 UTC 2012 
State-Changed-Why:  
this is still a bug 

http://www.freebsd.org/cgi/query-pr.cgi?pr=59739 
>Unformatted:
