Module Name: src Committed By: para Date: Fri Jan 27 19:22:50 UTC 2012
Modified Files: src/sys/ufs/ext2fs: ext2fs_inode.c ext2fs_lookup.c src/sys/ufs/ffs: ffs_inode.c ffs_vfsops.c src/sys/ufs/ufs: ufs_extattr.c ufs_vfsops.c ufs_vnops.c ufs_wapbl.c Log Message: converting readdir in ffs ext2fs from malloc(9) to kmem(9) while there allocate ufs mount structs from kmem(9) too preceding kmem-vmem-pool-patch releng@ acknowledged To generate a diff of this commit: cvs rdiff -u -r1.74 -r1.75 src/sys/ufs/ext2fs/ext2fs_inode.c cvs rdiff -u -r1.66 -r1.67 src/sys/ufs/ext2fs/ext2fs_lookup.c cvs rdiff -u -r1.108 -r1.109 src/sys/ufs/ffs/ffs_inode.c cvs rdiff -u -r1.272 -r1.273 src/sys/ufs/ffs/ffs_vfsops.c cvs rdiff -u -r1.35 -r1.36 src/sys/ufs/ufs/ufs_extattr.c cvs rdiff -u -r1.42 -r1.43 src/sys/ufs/ufs/ufs_vfsops.c cvs rdiff -u -r1.206 -r1.207 src/sys/ufs/ufs/ufs_vnops.c cvs rdiff -u -r1.22 -r1.23 src/sys/ufs/ufs/ufs_wapbl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/ufs/ext2fs/ext2fs_inode.c diff -u src/sys/ufs/ext2fs/ext2fs_inode.c:1.74 src/sys/ufs/ext2fs/ext2fs_inode.c:1.75 --- src/sys/ufs/ext2fs/ext2fs_inode.c:1.74 Thu Jun 16 09:21:03 2011 +++ src/sys/ufs/ext2fs/ext2fs_inode.c Fri Jan 27 19:22:48 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs_inode.c,v 1.74 2011/06/16 09:21:03 hannken Exp $ */ +/* $NetBSD: ext2fs_inode.c,v 1.75 2012/01/27 19:22:48 para Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ext2fs_inode.c,v 1.74 2011/06/16 09:21:03 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ext2fs_inode.c,v 1.75 2012/01/27 19:22:48 para Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -70,7 +70,7 @@ __KERNEL_RCSID(0, "$NetBSD: ext2fs_inode #include <sys/buf.h> #include <sys/vnode.h> #include <sys/kernel.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/trace.h> #include <sys/resourcevar.h> #include <sys/kauth.h> @@ -499,7 +499,7 @@ ext2fs_indirtrunc(struct inode *ip, dadd bap = (int32_t *)bp->b_data; /* XXX ondisk32 */ if (lastbn >= 0) { /* XXX ondisk32 */ - copy = malloc(fs->e2fs_bsize, M_TEMP, M_WAITOK); + copy = kmem_alloc(fs->e2fs_bsize, KM_SLEEP); memcpy((void *)copy, (void *)bap, (u_int)fs->e2fs_bsize); memset((void *)&bap[last + 1], 0, (u_int)(NINDIR(fs) - (last + 1)) * sizeof (uint32_t)); @@ -548,7 +548,7 @@ ext2fs_indirtrunc(struct inode *ip, dadd } if (copy != NULL) { - free(copy, M_TEMP); + kmem_free(copy, fs->e2fs_bsize); } else { brelse(bp, BC_INVAL); } Index: src/sys/ufs/ext2fs/ext2fs_lookup.c diff -u src/sys/ufs/ext2fs/ext2fs_lookup.c:1.66 src/sys/ufs/ext2fs/ext2fs_lookup.c:1.67 --- src/sys/ufs/ext2fs/ext2fs_lookup.c:1.66 Tue Jul 12 16:59:48 2011 +++ src/sys/ufs/ext2fs/ext2fs_lookup.c Fri Jan 27 19:22:48 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs_lookup.c,v 1.66 2011/07/12 16:59:48 dholland Exp $ */ +/* $NetBSD: ext2fs_lookup.c,v 1.67 2012/01/27 19:22:48 para Exp $ */ /* * Modified for NetBSD 1.2E @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.66 2011/07/12 16:59:48 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ext2fs_lookup.c,v 1.67 2012/01/27 19:22:48 para Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: ext2fs_looku #include <sys/file.h> #include <sys/mount.h> #include <sys/vnode.h> +#include <sys/kmem.h> #include <sys/malloc.h> #include <sys/dirent.h> #include <sys/kauth.h> @@ -167,15 +168,14 @@ ext2fs_readdir(void *v) aiov.iov_len = e2fs_count; auio.uio_resid = e2fs_count; UIO_SETUP_SYSSPACE(&auio); - dirbuf = malloc(e2fs_count, M_TEMP, M_WAITOK); - dstd = malloc(sizeof(struct dirent), M_TEMP, M_WAITOK | M_ZERO); + dirbuf = kmem_alloc(e2fs_count, KM_SLEEP); + dstd = kmem_zalloc(sizeof(struct dirent), KM_SLEEP); if (ap->a_ncookies) { nc = e2fs_count / _DIRENT_MINSIZE((struct dirent *)0); ncookies = nc; cookies = malloc(sizeof (off_t) * ncookies, M_TEMP, M_WAITOK); *ap->a_cookies = cookies; } - memset(dirbuf, 0, e2fs_count); aiov.iov_base = dirbuf; error = VOP_READ(ap->a_vp, &auio, 0, ap->a_cred); @@ -209,8 +209,8 @@ ext2fs_readdir(void *v) /* we need to correct uio_offset */ uio->uio_offset = off; } - free(dirbuf, M_TEMP); - free(dstd, M_TEMP); + kmem_free(dirbuf, e2fs_count); + kmem_free(dstd, sizeof(*dstd)); *ap->a_eofflag = ext2fs_size(VTOI(ap->a_vp)) <= uio->uio_offset; if (ap->a_ncookies) { if (error) { Index: src/sys/ufs/ffs/ffs_inode.c diff -u src/sys/ufs/ffs/ffs_inode.c:1.108 src/sys/ufs/ffs/ffs_inode.c:1.109 --- src/sys/ufs/ffs/ffs_inode.c:1.108 Wed Nov 23 19:42:10 2011 +++ src/sys/ufs/ffs/ffs_inode.c Fri Jan 27 19:22:49 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs_inode.c,v 1.108 2011/11/23 19:42:10 bouyer Exp $ */ +/* $NetBSD: ffs_inode.c,v 1.109 2012/01/27 19:22:49 para Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ffs_inode.c,v 1.108 2011/11/23 19:42:10 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ffs_inode.c,v 1.109 2012/01/27 19:22:49 para Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -75,7 +75,7 @@ __KERNEL_RCSID(0, "$NetBSD: ffs_inode.c, #include <sys/fstrans.h> #include <sys/kauth.h> #include <sys/kernel.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/mount.h> #include <sys/proc.h> #include <sys/resourcevar.h> @@ -621,7 +621,7 @@ ffs_indirtrunc(struct inode *ip, daddr_t else bap2 = (int64_t *)bp->b_data; if (lastbn >= 0) { - copy = malloc(fs->fs_bsize, M_TEMP, M_WAITOK); + copy = kmem_alloc(fs->fs_bsize, KM_SLEEP); memcpy((void *)copy, bp->b_data, (u_int)fs->fs_bsize); for (i = last + 1; i < NINDIR(fs); i++) BAP_ASSIGN(ip, i, 0); @@ -676,7 +676,7 @@ ffs_indirtrunc(struct inode *ip, daddr_t } if (copy != NULL) { - free(copy, M_TEMP); + kmem_free(copy, fs->fs_bsize); } else { brelse(bp, BC_INVAL); } Index: src/sys/ufs/ffs/ffs_vfsops.c diff -u src/sys/ufs/ffs/ffs_vfsops.c:1.272 src/sys/ufs/ffs/ffs_vfsops.c:1.273 --- src/sys/ufs/ffs/ffs_vfsops.c:1.272 Tue Jan 3 15:44:00 2012 +++ src/sys/ufs/ffs/ffs_vfsops.c Fri Jan 27 19:22:49 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ffs_vfsops.c,v 1.272 2012/01/03 15:44:00 pgoyette Exp $ */ +/* $NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.272 2012/01/03 15:44:00 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c,v 1.273 2012/01/27 19:22:49 para Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -85,7 +85,7 @@ __KERNEL_RCSID(0, "$NetBSD: ffs_vfsops.c #include <sys/disklabel.h> #include <sys/ioctl.h> #include <sys/errno.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/pool.h> #include <sys/lock.h> #include <sys/sysctl.h> @@ -648,7 +648,7 @@ ffs_reload(struct mount *mp, kauth_cred_ brelse(bp, 0); return (error); } - newfs = malloc(fs->fs_sbsize, M_UFSMNT, M_WAITOK); + newfs = kmem_alloc(fs->fs_sbsize, KM_SLEEP); memcpy(newfs, bp->b_data, fs->fs_sbsize); #ifdef FFS_EI if (ump->um_flags & UFS_NEEDSWAP) { @@ -662,7 +662,7 @@ ffs_reload(struct mount *mp, kauth_cred_ newfs->fs_bsize > MAXBSIZE || newfs->fs_bsize < sizeof(struct fs)) { brelse(bp, 0); - free(newfs, M_UFSMNT); + kmem_free(newfs, fs->fs_sbsize); return (EIO); /* XXX needs translation */ } /* Store off old fs_sblockloc for fs_oldfscompat_read. */ @@ -679,7 +679,7 @@ ffs_reload(struct mount *mp, kauth_cred_ newfs->fs_active = fs->fs_active; memcpy(fs, newfs, (u_int)fs->fs_sbsize); brelse(bp, 0); - free(newfs, M_UFSMNT); + kmem_free(newfs, fs->fs_sbsize); /* Recheck for apple UFS filesystem */ ump->um_flags &= ~UFS_ISAPPLEUFS; @@ -865,6 +865,7 @@ ffs_mountfs(struct vnode *devvp, struct int32_t *lp; kauth_cred_t cred; u_int32_t sbsize = 8192; /* keep gcc happy*/ + u_int32_t allocsbsize; int32_t fsbsize; dev = devvp->v_rdev; @@ -889,7 +890,7 @@ ffs_mountfs(struct vnode *devvp, struct if (error) return error; - ump = malloc(sizeof *ump, M_UFSMNT, M_WAITOK); + ump = kmem_alloc(sizeof(*ump), KM_SLEEP); memset(ump, 0, sizeof *ump); mutex_init(&ump->um_lock, MUTEX_DEFAULT, IPL_NONE); error = ffs_snapshot_init(ump); @@ -986,7 +987,7 @@ ffs_mountfs(struct vnode *devvp, struct break; } - fs = malloc((u_long)sbsize, M_UFSMNT, M_WAITOK); + fs = kmem_alloc((u_long)sbsize, KM_SLEEP); memcpy(fs, bp->b_data, sbsize); ump->um_fs = fs; @@ -1023,7 +1024,7 @@ ffs_mountfs(struct vnode *devvp, struct /* Force a re-read of the superblock */ brelse(bp, BC_INVAL); bp = NULL; - free(fs, M_UFSMNT); + kmem_free(fs, sbsize); fs = NULL; goto sbagain; } @@ -1150,7 +1151,8 @@ ffs_mountfs(struct vnode *devvp, struct if (fs->fs_contigsumsize > 0) bsize += fs->fs_ncg * sizeof(int32_t); bsize += fs->fs_ncg * sizeof(*fs->fs_contigdirs); - space = malloc((u_long)bsize, M_UFSMNT, M_WAITOK); + allocsbsize = bsize; + space = kmem_alloc((u_long)allocsbsize, KM_SLEEP); fs->fs_csp = space; for (i = 0; i < blks; i += fs->fs_frag) { bsize = fs->fs_bsize; @@ -1159,7 +1161,7 @@ ffs_mountfs(struct vnode *devvp, struct error = bread(devvp, fsbtodb(fs, fs->fs_csaddr + i), bsize, cred, 0, &bp); if (error) { - free(fs->fs_csp, M_UFSMNT); + kmem_free(fs->fs_csp, allocsbsize); goto out; } #ifdef FFS_EI @@ -1243,7 +1245,7 @@ ffs_mountfs(struct vnode *devvp, struct error = ffs_wapbl_start(mp); if (error) { - free(fs->fs_csp, M_UFSMNT); + kmem_free(fs->fs_csp, allocsbsize); goto out; } } @@ -1252,7 +1254,7 @@ ffs_mountfs(struct vnode *devvp, struct #ifdef QUOTA2 error = ffs_quota2_mount(mp); if (error) { - free(fs->fs_csp, M_UFSMNT); + kmem_free(fs->fs_csp, allocsbsize); goto out; } #else @@ -1263,7 +1265,7 @@ ffs_mountfs(struct vnode *devvp, struct (mp->mnt_flag & MNT_FORCE) ? "" : ", not mounting"); if ((mp->mnt_flag & MNT_FORCE) == 0) { error = EINVAL; - free(fs->fs_csp, M_UFSMNT); + kmem_free(fs->fs_csp, allocsbsize); goto out; } } @@ -1290,15 +1292,15 @@ out: fstrans_unmount(mp); if (fs) - free(fs, M_UFSMNT); + kmem_free(fs, fs->fs_sbsize); devvp->v_specmountpoint = NULL; if (bp) brelse(bp, bset); if (ump) { if (ump->um_oldfscompat) - free(ump->um_oldfscompat, M_UFSMNT); + kmem_free(ump->um_oldfscompat, 512 + 3*sizeof(int32_t)); mutex_destroy(&ump->um_lock); - free(ump, M_UFSMNT); + kmem_free(ump, sizeof(*ump)); mp->mnt_data = NULL; } return (error); @@ -1322,8 +1324,8 @@ ffs_oldfscompat_read(struct fs *fs, stru return; if (!ump->um_oldfscompat) - ump->um_oldfscompat = malloc(512 + 3*sizeof(int32_t), - M_UFSMNT, M_WAITOK); + ump->um_oldfscompat = kmem_alloc(512 + 3*sizeof(int32_t), + KM_SLEEP); memcpy(ump->um_oldfscompat, &fs->fs_old_postbl_start, 512); extrasave = ump->um_oldfscompat; @@ -1429,6 +1431,7 @@ ffs_unmount(struct mount *mp, int mntfla struct ufsmount *ump = VFSTOUFS(mp); struct fs *fs = ump->um_fs; int error, flags; + u_int32_t bsize; #ifdef WAPBL extern int doforce; #endif @@ -1475,13 +1478,19 @@ ffs_unmount(struct mount *mp, int mntfla (void)VOP_CLOSE(ump->um_devvp, fs->fs_ronly ? FREAD : FREAD | FWRITE, NOCRED); vput(ump->um_devvp); - free(fs->fs_csp, M_UFSMNT); - free(fs, M_UFSMNT); + + bsize = fs->fs_cssize; + if (fs->fs_contigsumsize > 0) + bsize += fs->fs_ncg * sizeof(int32_t); + bsize += fs->fs_ncg * sizeof(*fs->fs_contigdirs); + kmem_free(fs->fs_csp, bsize); + + kmem_free(fs, fs->fs_sbsize); if (ump->um_oldfscompat != NULL) - free(ump->um_oldfscompat, M_UFSMNT); + kmem_free(ump->um_oldfscompat, 512 + 3*sizeof(int32_t)); mutex_destroy(&ump->um_lock); ffs_snapshot_fini(ump); - free(ump, M_UFSMNT); + kmem_free(ump, sizeof(*ump)); mp->mnt_data = NULL; mp->mnt_flag &= ~MNT_LOCAL; fstrans_unmount(mp); Index: src/sys/ufs/ufs/ufs_extattr.c diff -u src/sys/ufs/ufs/ufs_extattr.c:1.35 src/sys/ufs/ufs/ufs_extattr.c:1.36 --- src/sys/ufs/ufs/ufs_extattr.c:1.35 Thu Jul 7 14:56:45 2011 +++ src/sys/ufs/ufs/ufs_extattr.c Fri Jan 27 19:22:49 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_extattr.c,v 1.35 2011/07/07 14:56:45 manu Exp $ */ +/* $NetBSD: ufs_extattr.c,v 1.36 2012/01/27 19:22:49 para Exp $ */ /*- * Copyright (c) 1999-2002 Robert N. M. Watson @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ufs_extattr.c,v 1.35 2011/07/07 14:56:45 manu Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ufs_extattr.c,v 1.36 2012/01/27 19:22:49 para Exp $"); #ifdef _KERNEL_OPT #include "opt_ffs.h" @@ -60,7 +60,7 @@ __KERNEL_RCSID(0, "$NetBSD: ufs_extattr. #include <sys/kauth.h> #include <sys/kernel.h> #include <sys/namei.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/fcntl.h> #include <sys/lwp.h> #include <sys/vnode.h> @@ -77,8 +77,6 @@ __KERNEL_RCSID(0, "$NetBSD: ufs_extattr. #include <ufs/ufs/ufs_bswap.h> #include <ufs/ufs/ufs_extern.h> -static MALLOC_JUSTDEFINE(M_UFS_EXTATTR, "ufs_extattr","ufs extended attribute"); - int ufs_extattr_sync = 1; int ufs_extattr_autocreate = 1024; @@ -506,7 +504,7 @@ ufs_extattr_iterate_directory(struct ufs if (dvp->v_type != VDIR) return (ENOTDIR); - dirbuf = malloc(DIRBLKSIZ, M_TEMP, M_WAITOK); + dirbuf = kmem_alloc(DIRBLKSIZ, KM_SLEEP); auio.uio_iov = &aiov; auio.uio_iovcnt = 1; @@ -578,7 +576,7 @@ ufs_extattr_iterate_directory(struct ufs break; } } - free(dirbuf, M_TEMP); + kmem_free(dirbuf, DIRBLKSIZ); return (0); } @@ -736,8 +734,7 @@ ufs_extattr_enable(struct ufsmount *ump, if (backing_vnode->v_type != VREG) return (EINVAL); - attribute = malloc(sizeof(*attribute), M_UFS_EXTATTR, - M_WAITOK | M_ZERO); + attribute = kmem_zalloc(sizeof(*attribute), KM_SLEEP); if (!(ump->um_extattr.uepm_flags & UFS_EXTATTR_UEPM_STARTED)) { error = EOPNOTSUPP; @@ -818,7 +815,7 @@ ufs_extattr_enable(struct ufsmount *ump, VOP_UNLOCK(backing_vnode); free_exit: - free(attribute, M_UFS_EXTATTR); + kmem_free(attribute, sizeof(*attribute)); return (error); } @@ -844,7 +841,7 @@ ufs_extattr_disable(struct ufsmount *ump error = vn_close(uele->uele_backing_vnode, FREAD|FWRITE, l->l_cred); - free(uele, M_UFS_EXTATTR); + kmem_free(uele, sizeof(*uele)); return (error); } @@ -1540,12 +1537,10 @@ void ufs_extattr_init(void) { - malloc_type_attach(M_UFS_EXTATTR); } void ufs_extattr_done(void) { - malloc_type_detach(M_UFS_EXTATTR); } Index: src/sys/ufs/ufs/ufs_vfsops.c diff -u src/sys/ufs/ufs/ufs_vfsops.c:1.42 src/sys/ufs/ufs/ufs_vfsops.c:1.43 --- src/sys/ufs/ufs/ufs_vfsops.c:1.42 Thu Mar 24 17:05:46 2011 +++ src/sys/ufs/ufs/ufs_vfsops.c Fri Jan 27 19:22:50 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_vfsops.c,v 1.42 2011/03/24 17:05:46 bouyer Exp $ */ +/* $NetBSD: ufs_vfsops.c,v 1.43 2012/01/27 19:22:50 para Exp $ */ /* * Copyright (c) 1991, 1993, 1994 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ufs_vfsops.c,v 1.42 2011/03/24 17:05:46 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ufs_vfsops.c,v 1.43 2012/01/27 19:22:50 para Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -50,7 +50,7 @@ __KERNEL_RCSID(0, "$NetBSD: ufs_vfsops.c #include <sys/proc.h> #include <sys/buf.h> #include <sys/vnode.h> -#include <sys/malloc.h> +#include <sys/kmem.h> #include <sys/kauth.h> #include <miscfs/specfs/specdev.h> Index: src/sys/ufs/ufs/ufs_vnops.c diff -u src/sys/ufs/ufs/ufs_vnops.c:1.206 src/sys/ufs/ufs/ufs_vnops.c:1.207 --- src/sys/ufs/ufs/ufs_vnops.c:1.206 Fri Nov 18 21:18:52 2011 +++ src/sys/ufs/ufs/ufs_vnops.c Fri Jan 27 19:22:50 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_vnops.c,v 1.206 2011/11/18 21:18:52 christos Exp $ */ +/* $NetBSD: ufs_vnops.c,v 1.207 2012/01/27 19:22:50 para Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.206 2011/11/18 21:18:52 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.207 2012/01/27 19:22:50 para Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -84,6 +84,7 @@ __KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c, #include <sys/proc.h> #include <sys/mount.h> #include <sys/vnode.h> +#include <sys/kmem.h> #include <sys/malloc.h> #include <sys/dirent.h> #include <sys/lockf.h> @@ -2329,7 +2330,7 @@ ufs_readdir(void *v) struct uio auio, *uio; struct iovec aiov; int error; - size_t count, ccount, rcount; + size_t count, ccount, rcount, cdbufsz, ndbufsz; off_t off, *ccp; off_t startoff; size_t skipbytes; @@ -2357,12 +2358,13 @@ ufs_readdir(void *v) auio.uio_resid = rcount; UIO_SETUP_SYSSPACE(&auio); auio.uio_rw = UIO_READ; - cdbuf = malloc(rcount, M_TEMP, M_WAITOK); + cdbufsz = rcount; + cdbuf = kmem_alloc(cdbufsz, KM_SLEEP); aiov.iov_base = cdbuf; aiov.iov_len = rcount; error = VOP_READ(vp, &auio, 0, ap->a_cred); if (error != 0) { - free(cdbuf, M_TEMP); + kmem_free(cdbuf, cdbufsz); return error; } @@ -2371,7 +2373,8 @@ ufs_readdir(void *v) cdp = (struct direct *)(void *)cdbuf; ecdp = (struct direct *)(void *)&cdbuf[rcount]; - ndbuf = malloc(count, M_TEMP, M_WAITOK); + ndbufsz = count; + ndbuf = kmem_alloc(ndbufsz, KM_SLEEP); ndp = (struct dirent *)(void *)ndbuf; endp = &ndbuf[count]; @@ -2445,8 +2448,8 @@ out: } } uio->uio_offset = off; - free(ndbuf, M_TEMP); - free(cdbuf, M_TEMP); + kmem_free(ndbuf, ndbufsz); + kmem_free(cdbuf, cdbufsz); *ap->a_eofflag = VTOI(vp)->i_size <= uio->uio_offset; return error; } Index: src/sys/ufs/ufs/ufs_wapbl.c diff -u src/sys/ufs/ufs/ufs_wapbl.c:1.22 src/sys/ufs/ufs/ufs_wapbl.c:1.23 --- src/sys/ufs/ufs/ufs_wapbl.c:1.22 Mon Jul 18 06:46:05 2011 +++ src/sys/ufs/ufs/ufs_wapbl.c Fri Jan 27 19:22:50 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_wapbl.c,v 1.22 2011/07/18 06:46:05 dholland Exp $ */ +/* $NetBSD: ufs_wapbl.c,v 1.23 2012/01/27 19:22:50 para Exp $ */ /*- * Copyright (c) 2003,2006,2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ufs_wapbl.c,v 1.22 2011/07/18 06:46:05 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ufs_wapbl.c,v 1.23 2012/01/27 19:22:50 para Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -79,7 +79,6 @@ __KERNEL_RCSID(0, "$NetBSD: ufs_wapbl.c, #include <sys/proc.h> #include <sys/mount.h> #include <sys/vnode.h> -#include <sys/malloc.h> #include <sys/dirent.h> #include <sys/lockf.h> #include <sys/kauth.h>