From owner-freebsd-hackers Sun Jan 26 05:59:16 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id FAA09649 for hackers-outgoing; Sun, 26 Jan 1997 05:59:16 -0800 (PST) Received: from labinfo.iet.unipi.it (labinfo.iet.unipi.it [131.114.9.5]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id FAA09644; Sun, 26 Jan 1997 05:59:10 -0800 (PST) Received: from localhost (luigi@localhost) by labinfo.iet.unipi.it (8.6.5/8.6.5) id OAA28121; Sun, 26 Jan 1997 14:17:13 +0100 From: Luigi Rizzo Message-Id: <199701261317.OAA28121@labinfo.iet.unipi.it> Subject: Re: exec bug To: dg@root.com, dyson@freebsd.org Date: Sun, 26 Jan 1997 14:17:12 +0100 (MET) Cc: hackers@freebsd.org In-Reply-To: <199701261336.FAA06928@root.com> from "David Greenman" at Jan 26, 97 05:35:44 am X-Mailer: ELM [version 2.4 PL23] Content-Type: text Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk > >> In the case of NFS, the read should block indefinately. I'm not sure what > >> will happen if the NFS is mounted "soft", however. > > > >that would be a major problem then! > > Not any more so than any other read blocking indefinately. I was referring to the soft case. the blocking read only leaves the process hung, and possibly not dying at shutdown. But an nfs 'soft' read timing out with a failure, isn't it a time-bomb ? > > Wouldn't it be possible to track > >the exact reason of the fault inside the handler and avoid panicing ? > >After all there are no performance problems at that point.. > > ...and just how do you tell the exec code that a page fault that occured > while it was accessing the image header was "fatal"? The only mechanism we you mean "was not fatal" dont you ? > have for this is signals, and that doesn't work when you're executing in the > kernel like this. I don't know the "big picture" so this could be totally nonsense, but how about creating a "page_probe()" function, cooperating with the fault handler, which tries to access the page, returning 1 if any page fault occur in the kernel address space while running ? Then exec_aout_imgact() (or any other critical function) could first page_probe() the required page, then either continue or fail. There shouldn't be much penalty in doing this since at most the page gets paged in, something that would be necessary anyways. Cheers Luigi -----------------------------+-------------------------------------- Luigi Rizzo | Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it | Universita' di Pisa tel: +39-50-568533 | via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 | http://www.iet.unipi.it/~luigi/ _____________________________|______________________________________