From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NGVXz-00023C-3l for qemu-devel@nongnu.org; Fri, 04 Dec 2009 05:37:59 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NGVXu-0001vc-7i for qemu-devel@nongnu.org; Fri, 04 Dec 2009 05:37:58 -0500 Received: from [199.232.76.173] (port=48485 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NGVXt-0001vK-VU for qemu-devel@nongnu.org; Fri, 04 Dec 2009 05:37:54 -0500 Received: from smtp-out2.tiscali.nl ([195.241.79.177]:49686) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NGVXt-0008Km-GS for qemu-devel@nongnu.org; Fri, 04 Dec 2009 05:37:53 -0500 Subject: Re: [Qemu-devel] [PATCH] linux-user: use realpath for emulation dir paths From: Paul Bolle In-Reply-To: <874oo76out.fsf@lechat.rtp-net.org> References: <1254486336.1738.30.camel@localhost.localdomain> <20091204092938.GA23929@kos.to> <874oo76out.fsf@lechat.rtp-net.org> Content-Type: text/plain; charset="UTF-8" Date: Fri, 04 Dec 2009 11:37:44 +0100 Message-ID: <1259923064.2765.23.camel@localhost.localdomain> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Arnaud Patard Cc: Riku Voipio , qemu-devel@nongnu.org On Fri, 2009-12-04 at 11:00 +0100, Arnaud Patard wrote: > Riku Voipio writes: > > On Fri, Oct 02, 2009 at 02:25:36PM +0200, Paul Bolle wrote: > >> Note that I have some reservations about the current init_paths() and > >> path() code: > >> - their names seem to confusing. Maybe those should be init_base()and > >> base() or something similar; > >> - why does init_paths() copy all filenames in the emulation dir (at > >> least, that what it seems to do)? Try something silly like > >> "-L /home/../" to see what I mean ... > >> - and why does path() return the original filename if that file isn't > >> found in the emulation dir? That looks like a nice source for confusing > >> behavior or crashes, as that means an identical named file (but using > >> the regular root) will then be used. > > > > Yeah, all that is a big mess and should be cleaned up. At the moment it > > is all too easy to get init_paths to recurse forever.. > > fwiw, it should not be hard to prevent this dead loop. I have > somewhere a patch avoiding going into /dev,/proc and it cured the > problem. Of course, there may be some other places leading to deadloop > but at least avoiding /dev and /proc would be a good start if one > really wants to fix that. It's been two months, so I have forgotten most details here, but why is the init_path() step actually needed? Can't path() simply prepend the name of emulation dir, if any, and return that (possibly unaltered) path? I guess the original path must be altered too (ie, it should point to the newly created path and the original string should be freed). Can't that be done reliably? Paul