Date: Mon, 18 Jan 1999 16:34:49 -0500 (EST) From: Brian Feldman <green@unixhelp.org> To: Mike Smith <mike@smith.net.au> Cc: Julian Elischer <julian@whistle.com>, Matthew Dillon <dillon@apollo.backplane.com>, current@FreeBSD.ORG Subject: Re: kernel malloc and M_CANWAIT Message-ID: <Pine.BSF.4.05.9901181629050.18713-100000@janus.syracuse.net> In-Reply-To: <199901182105.NAA18722@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 18 Jan 1999, Mike Smith wrote: > > > So malloc() will generally not return NULL even in low memory situations > > > unless the KVM map fills up, which isn't supposed to happen but can in > > > certain severe circumstances. Callers should therefore check for NULL. > > > > why not just put it in a loop and block on lbolt? > > (or call panic) > > Because you shouldn't panic unless there's no alternative. Panicking > on resource starvation is just totally lame. And what's wrong with spinning inside malloc until the resources are free? There are places that architecturally require M_WAITOK to not return NULL. Look at the void () functions that call malloc/MALLOC. Also, commit the attached patch; it was OKed by Bruce to disallow this, but he seems to forget to commit it. > > -- > \\ Sometimes you're ahead, \\ Mike Smith > \\ sometimes you're behind. \\ mike@smith.net.au > \\ The race is long, and in the \\ msmith@freebsd.org > \\ end it's only with yourself. \\ msmith@cdrom.com > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-current" in the body of the message > Brian Feldman _ __ ___ ___ ___ green@unixhelp.org _ __ ___ | _ ) __| \ http://www.freebsd.org/ _ __ ___ ____ | _ \__ \ |) | FreeBSD: The Power to Serve! _ __ ___ ____ _____ |___/___/___/ --- src/sys/kern/vfs_syscalls.c.orig Fri Dec 25 22:27:21 1998 +++ src/sys/kern/vfs_syscalls.c Fri Dec 25 22:28:12 1998 @@ -2909,6 +2909,10 @@ if (error = namei(&nd)) return (error); vp = nd.ni_vp; + if (vp->v_type == VFIFO) { + error = EINVAL; + goto out; + } if (error = VOP_GETATTR(vp, &vattr, p->p_ucred, p)) goto out; if (p->p_ucred->cr_uid != vattr.va_uid && To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9901181629050.18713-100000>