From owner-freebsd-bugs Tue Aug 15 12:20: 9 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 6047237B505 for ; Tue, 15 Aug 2000 12:20:04 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id MAA92075; Tue, 15 Aug 2000 12:20:04 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Date: Tue, 15 Aug 2000 12:20:04 -0700 (PDT) Message-Id: <200008151920.MAA92075@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Tor.Egge@fast.no Subject: Re: kern/20609: panic: vm_fault: fault on nofault entry, addr: cc4b3000 Reply-To: Tor.Egge@fast.no Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/20609; it has been noted by GNATS. From: Tor.Egge@fast.no To: sheldonh@uunet.co.za Cc: dillon@freebsd.org Subject: Re: kern/20609: panic: vm_fault: fault on nofault entry, addr: cc4b3000 Date: Tue, 15 Aug 2000 21:14:36 +0200 > Hi Tor, > > Have you dropped Matt Dillon a message pointing him > to this PR, or are you going to tackle this yourself? If the latter, > will you assign the PR to yourself? He gets this message. I'm currently looking into the class of problem by adding some helper functions that can be used for invariant checks. e.g. - Denote that a function should not be allowed to block: - increase mi_switch disallow counter - decrease mi_switch disallow counter - Check that process is allowed to block when trying to do so (inside mi_switch and tsleep) - Check that process is allowed to block at various other points (malloc with M_WAIT, zalloc on zone without ZONE_INTERRUPT flag set, vm_page_grab with VM_ALLOC_RETRY) - Check that we've got proper spl protection (zalloc one zone with ZONE_INTERRUPT flag set). - Disallow blocking in vm_map_delete, vm_map_findspace and vm_map_findspace if the map is a system map. The first relevant changes should probably be: - buffer_map should be a system map to avoid blocking. - vm_map* routines should not create extra objects on system maps since the object allocation might block. Since system maps might be manipulated by interrupts, blocking is not allowed. - vm_map_entry_create and vm_map_entry_dispose should use zalloci/zfreei when allocating/freeing elements from/to kmapentzone. This to avoid race conditions when interrupts manipulate maps. Further changes might be needed to ensure consistent behavior as blocking routines called from routines not allowed to block is found. I do not plan on committing any fix for this before it has been reviewed. - Tor Egge To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message