Date: Wed, 19 Feb 2003 09:14:29 +0100 From: phk@phk.freebsd.dk To: current@freebsd.org Subject: Re: cvs commit: src/sys/alpha/alpha busdma_machdep.c src/sys/alpha/osf1 imgact_osf1.c osf1_misc.c src/sys/cam cam_periph.c cam_sim.c cam_xpt.c src/sys/cam/scsi scsi_cd.c scsi_ch.c scsi_da.c scsi_low.c scsi_sa.c scsi_target.c src/sys/coda cnode.h ... Message-ID: <76449.1045642469@critter.freebsd.dk> In-Reply-To: Your message of "Tue, 18 Feb 2003 21:47:47 PST." <200302190547.h1J5ll1J064169@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <200302190547.h1J5ll1J064169@repoman.freebsd.org>, Warner Losh write s: >imp 2003/02/18 21:47:47 PST > > Modified files: > [... everything ...] > uma_core.c vm_map.c vm_object.c > Log: > Back out M_* changes, per decision of the TRB. > > Approved by: trb The attached patch will print a backtrace if any calls to malloc fail to have either M_WAITOK or M_NOWAIT. Please put this patch in your tree and help fix any issues. So far (10 minutes) my disk-less testbox has found no issues. Poul-Henning Index: kern/kern_malloc.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_malloc.c,v retrieving revision 1.116 diff -u -r1.116 kern_malloc.c --- kern/kern_malloc.c 19 Feb 2003 05:47:25 -0000 1.116 +++ kern/kern_malloc.c 19 Feb 2003 07:55:19 -0000 @@ -167,11 +167,21 @@ #endif register struct malloc_type *ksp = type; + indx = flags & (M_WAITOK | M_NOWAIT); + if (indx == M_NOWAIT) { + /* OK */ + } else if (indx == M_WAITOK) { + /* OK */ + } else { + printf("Missing M_WAITOK flag\n"); + backtrace(); + flags |= M_WAITOK; + } #if 0 if (size == 0) Debugger("zero size malloc"); #endif - if (!(flags & M_NOWAIT)) + if (flags & M_WAITOK) KASSERT(curthread->td_intr_nesting_level == 0, ("malloc(M_WAITOK) in interrupt context")); if (size <= KMEM_ZMAX) { Index: sys/malloc.h =================================================================== RCS file: /home/ncvs/src/sys/sys/malloc.h,v retrieving revision 1.70 diff -u -r1.70 malloc.h --- sys/malloc.h 19 Feb 2003 05:47:45 -0000 1.70 +++ sys/malloc.h 19 Feb 2003 07:58:41 -0000 @@ -46,11 +46,11 @@ /* * flags to malloc. */ -#define M_WAITOK 0x0000 #define M_NOWAIT 0x0001 /* do not block */ -#define M_USE_RESERVE 0x0002 /* can alloc out of reserve memory */ -#define M_ZERO 0x0004 /* bzero the allocation */ -#define M_NOVM 0x0008 /* don't ask VM for pages */ +#define M_WAITOK 0x0002 /* do not block */ +#define M_ZERO 0x0100 /* bzero the allocation */ +#define M_NOVM 0x0200 /* don't ask VM for pages */ +#define M_USE_RESERVE 0x0400 /* can alloc out of reserve memory */ #define M_MAGIC 877983977 /* time when first defined :-) */ -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. 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?76449.1045642469>