From 71f27d2db57b9bb2b4b76e7fafb2ae3b87ee4eba Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Wed, 12 Aug 2009 14:41:13 -0700 Subject: [PATCH] DEVFS - change leak_count from size_t to long and use the correct atomic op. --- sys/vfs/devfs/devfs.h | 2 +- sys/vfs/devfs/devfs_core.c | 7 ++++--- sys/vfs/devfs/devfs_helper.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sys/vfs/devfs/devfs.h b/sys/vfs/devfs/devfs.h index 9a1541a65b..30b47c7666 100644 --- a/sys/vfs/devfs/devfs.h +++ b/sys/vfs/devfs/devfs.h @@ -128,7 +128,7 @@ struct devfs_mnt_data { struct devfs_node *root_node; struct mount *mp; uint32_t mnt_type; - size_t leak_count; + long leak_count; int jailed; size_t mntonnamelen; }; diff --git a/sys/vfs/devfs/devfs_core.c b/sys/vfs/devfs/devfs_core.c index 94b452e3a5..9976103b5b 100644 --- a/sys/vfs/devfs/devfs_core.c +++ b/sys/vfs/devfs/devfs_core.c @@ -174,7 +174,7 @@ devfs_allocp(devfs_nodetype devfsnodetype, char *name, node = objcache_get(devfs_node_cache, M_WAITOK); bzero(node, sizeof(*node)); - atomic_add_int(&(DEVFS_MNTDATA(mp)->leak_count), 1); + atomic_add_long(&(DEVFS_MNTDATA(mp)->leak_count), 1); node->d_dev = NULL; node->nchildren = 1; @@ -376,7 +376,7 @@ devfs_freep(struct devfs_node *node) (node->node_type == Proot)); KKASSERT((node->flags & DEVFS_DESTROYED) == 0); - atomic_subtract_int(&(DEVFS_MNTDATA(node->mp)->leak_count), 1); + atomic_subtract_long(&(DEVFS_MNTDATA(node->mp)->leak_count), 1); if (node->symlink_name) { kfree(node->symlink_name, M_DEVFS); node->symlink_name = NULL; @@ -402,6 +402,7 @@ devfs_freep(struct devfs_node *node) v_release_rdev(vp); vp->v_data = NULL; node->v_node = NULL; + cache_inval_vp(vp, CINV_DESTROY); vput(vp); } if (node->d_dir.d_name) @@ -1085,7 +1086,7 @@ devfs_msg_exec(devfs_msg_t msg) NULL); if (mnt->leak_count) { devfs_debug(DEVFS_DEBUG_SHOW, - "Leaked %d devfs_node elements!\n", + "Leaked %ld devfs_node elements!\n", mnt->leak_count); } break; diff --git a/sys/vfs/devfs/devfs_helper.c b/sys/vfs/devfs/devfs_helper.c index 3fc0febf92..caff09ee3e 100644 --- a/sys/vfs/devfs/devfs_helper.c +++ b/sys/vfs/devfs/devfs_helper.c @@ -50,7 +50,7 @@ devfs_clone_bitmap_init(struct devfs_bitmap *bitmap) bitmap->chunks = DEVFS_BITMAP_INITIAL_SIZE; bitmap->bitmap = kmalloc(bitmap->chunks * sizeof(u_long), M_DEVFS, M_WAITOK); - memset(bitmap->bitmap, ULONG_MAX, bitmap->chunks * sizeof(u_long)); + memset(bitmap->bitmap, -1, bitmap->chunks * sizeof(u_long)); } @@ -70,7 +70,7 @@ devfs_clone_bitmap_resize(struct devfs_bitmap *bitmap, int newchunks) bitmap->bitmap = krealloc(bitmap->bitmap, sizeof(u_long) * bitmap->chunks, M_DEVFS, M_WAITOK); - memset(bitmap->bitmap + oldchunks, ULONG_MAX, + memset(bitmap->bitmap + oldchunks, -1, sizeof(u_long) * (bitmap->chunks - oldchunks)); } -- 2.41.0