lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 5 May 2008 09:02:15 +0200
From:	Willy Tarreau <w@....eu>
To:	Lothar Waßmann <LW@...O-electronics.de>
Cc:	NeilBrown <neilb@...e.de>,
	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org
Subject: Re: linux-2.6.25: 'mkdir -p' does not work with rootdir as mount point inside a read only filesystem

On Mon, May 05, 2008 at 08:27:57AM +0200, Lothar Waßmann wrote:
> I'm using busybox 1.0 (on an embedded PXA320 system).

OK

> > stat64("/dev/a/b/c", 0xbf9175dc)        = -1 ENOENT (No such file or directory)
> > umask(0)                                = 022
> > open(".", O_RDONLY|O_LARGEFILE|O_DIRECTORY) = 3
> > chdir("/")                              = 0
> > mkdir("dev", 0755)                      = -1 EEXIST (File exists)
> > stat64("dev", {st_mode=S_IFDIR|0755, st_size=17080, ...}) = 0
> > chdir("dev")                            = 0
> > mkdir("a", 0755)                        = 0
> > chdir("a")                              = 0
> > mkdir("b", 0755)                        = 0
> > chdir("b")                              = 0
> > umask(022)                              = 0
> > mkdir("c", 0777)                        = 0
> > fchdir(3)                               = 0
> > close(3)                                = 0
> > 
> This is what strace shows in my case:
> mkdir("/", 0777)                        = -1 EEXIST (File exists)
> stat64("/", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
> mkdir("/dev/", 0777)                    = -1 EROFS (Read-only file system)
> umask(022)                              = 022
> write(2, "mkdir: ", 7mkdir: )                  = 7
> write(2, "Cannot create directory `/dev/\'", 31Cannot create directory `/dev/') = 31
> write(2, ": Read-only file system\n", 24: Read-only file system
> ) = 24
> io_submit(0x1, 0x1, 0xfbad2088 <unfinished ... exit status 1>

So you should send this trace to the busybox maintainer. It
obviously exhibits a small but easily fixable bug in the
program ; it should check whether the directory exists in
case of error. It seems it only checks for EEXIST.

What puzzles me is why you have this problem only with a new kernel.
I suspect that previous ones did report EEXIST and now we report
EROFS for an existing directory on an ro fs.

Willy

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ