revert free checks in here. this seems to be a bit too agressive at the
authorbeck <beck@openbsd.org>
Mon, 14 Jul 2014 08:11:34 +0000 (08:11 +0000)
committerbeck <beck@openbsd.org>
Mon, 14 Jul 2014 08:11:34 +0000 (08:11 +0000)
moment and now is not the time. hitting these in here causes chaos.
We need to do these, but at a better time than right after a hackathon
and before release.
ok guenther@

sys/ufs/ffs/ffs_inode.c
sys/ufs/ffs/ffs_vfsops.c
sys/ufs/ufs/ufs_dirhash.c

index ae33ed5..3a9efef 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ffs_inode.c,v 1.72 2014/07/13 23:33:26 tedu Exp $     */
+/*     $OpenBSD: ffs_inode.c,v 1.73 2014/07/14 08:11:34 beck Exp $     */
 /*     $NetBSD: ffs_inode.c,v 1.10 1996/05/11 18:27:19 mycroft Exp $   */
 
 /*
@@ -561,7 +561,7 @@ ffs_indirtrunc(struct inode *ip, daddr_t lbn, daddr_t dbn,
                }
        }
        if (copy != NULL) {
-               free(copy, M_TEMP, fs->fs_bsize);
+               free(copy, M_TEMP, 0);
        } else {
                bp->b_flags |= B_INVAL;
                brelse(bp);
index 8ad885b..15e3a6a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ffs_vfsops.c,v 1.142 2014/07/13 23:33:26 tedu Exp $   */
+/*     $OpenBSD: ffs_vfsops.c,v 1.143 2014/07/14 08:11:34 beck Exp $   */
 /*     $NetBSD: ffs_vfsops.c,v 1.19 1996/02/09 22:22:26 christos Exp $ */
 
 /*
@@ -139,7 +139,7 @@ ffs_mountroot(void)
        if ((error = ffs_mountfs(rootvp, mp, p)) != 0) {
                mp->mnt_vfc->vfc_refcount--;
                vfs_unbusy(mp);
-               free(mp, M_MOUNT, sizeof(*mp));
+               free(mp, M_MOUNT, 0);
                vrele(swapdev_vp);
                vrele(rootvp);
                return (error);
@@ -907,8 +907,8 @@ out:
        VOP_UNLOCK(devvp, 0, p);
 
        if (ump) {
-               free(ump->um_fs, M_UFSMNT, sizeof(*ump->um_fs));
-               free(ump, M_UFSMNT, sizeof(*ump));
+               free(ump->um_fs, M_UFSMNT, 0);
+               free(ump, M_UFSMNT, 0);
                mp->mnt_data = NULL;
        }
        return (error);
@@ -1027,8 +1027,8 @@ ffs_unmount(struct mount *mp, int mntflags, struct proc *p)
                NOCRED, p);
        vput(ump->um_devvp);
        free(fs->fs_csp, M_UFSMNT, 0);
-       free(fs, M_UFSMNT, sizeof(*fs));
-       free(ump, M_UFSMNT, sizeof(*ump));
+       free(fs, M_UFSMNT, 0);
+       free(ump, M_UFSMNT, 0);
        mp->mnt_data = (qaddr_t)0;
        mp->mnt_flag &= ~MNT_LOCAL;
        return (error);
index 86ebe49..41c1334 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_dirhash.c,v 1.28 2014/07/13 23:33:26 tedu Exp $       */
+/* $OpenBSD: ufs_dirhash.c,v 1.29 2014/07/14 08:11:34 beck Exp $       */
 /*
  * Copyright (c) 2001, 2002 Ian Dowse.  All rights reserved.
  *
@@ -246,12 +246,11 @@ fail:
                for (i = 0; i < narrays; i++)
                        if (dh->dh_hash[i] != NULL)
                                DIRHASH_BLKFREE(dh->dh_hash[i]);
-               free(dh->dh_hash, M_DIRHASH, narrays * sizeof(dh->dh_hash[0]));
+               free(dh->dh_hash, M_DIRHASH, 0);
        }
        if (dh->dh_blkfree != NULL)
-               free(dh->dh_blkfree, M_DIRHASH,
-                   nblocks * sizeof(dh->dh_blkfree[0]));
-       free(dh, M_DIRHASH, sizeof(*dh));
+               free(dh->dh_blkfree, M_DIRHASH, 0);
+       free(dh, M_DIRHASH, 0);
        ip->i_dirhash = NULL;
        DIRHASHLIST_LOCK();
        ufs_dirhashmem -= memreqd;
@@ -283,13 +282,13 @@ ufsdirhash_free(struct inode *ip)
        if (dh->dh_hash != NULL) {
                for (i = 0; i < dh->dh_narrays; i++)
                        DIRHASH_BLKFREE(dh->dh_hash[i]);
-               free(dh->dh_hash, M_DIRHASH, dh->dh_narrays * sizeof(*dh->dh_hash));
-               free(dh->dh_blkfree, M_DIRHASH, dh->dh_nblk * sizeof(*dh->dh_blkfree));
+               free(dh->dh_hash, M_DIRHASH, 0);
+               free(dh->dh_blkfree, M_DIRHASH, 0);
                mem += dh->dh_narrays * sizeof(*dh->dh_hash) +
                    dh->dh_narrays * DH_NBLKOFF * sizeof(**dh->dh_hash) +
                    dh->dh_nblk * sizeof(*dh->dh_blkfree);
        }
-       free(dh, M_DIRHASH, sizeof(*dh));
+       free(dh, M_DIRHASH, 0);
        ip->i_dirhash = NULL;
 
        DIRHASHLIST_LOCK();
@@ -1043,8 +1042,8 @@ ufsdirhash_recycle(int wanted)
                DIRHASHLIST_UNLOCK();
                for (i = 0; i < narrays; i++)
                        DIRHASH_BLKFREE(hash[i]);
-               free(hash, M_DIRHASH, narrays * sizeof(*dh->dh_hash));
-               free(blkfree, M_DIRHASH, dh->dh_nblk * sizeof(*dh->dh_blkfree));
+               free(hash, M_DIRHASH, 0);
+               free(blkfree, M_DIRHASH, 0);
 
                /* Account for the returned memory, and repeat if necessary. */
                DIRHASHLIST_LOCK();