From: "Chen, Kenneth W" Implementation of hugetlbfs_counter() is functionally equivalent to atomic_inc_return(). Use the simpler atomic form. Signed-off-by: Ken Chen Cc: David Gibson Signed-off-by: Andrew Morton --- fs/hugetlbfs/inode.c | 18 ++---------------- 1 files changed, 2 insertions(+), 16 deletions(-) diff -puN fs/hugetlbfs/inode.c~convert-hugetlbfs_counter-to-atomic fs/hugetlbfs/inode.c --- devel/fs/hugetlbfs/inode.c~convert-hugetlbfs_counter-to-atomic 2006-03-09 19:41:25.000000000 -0800 +++ devel-akpm/fs/hugetlbfs/inode.c 2006-03-09 19:41:25.000000000 -0800 @@ -737,21 +737,6 @@ static struct file_system_type hugetlbfs static struct vfsmount *hugetlbfs_vfsmount; -/* - * Return the next identifier for a shm file - */ -static unsigned long hugetlbfs_counter(void) -{ - static DEFINE_SPINLOCK(lock); - static unsigned long counter; - unsigned long ret; - - spin_lock(&lock); - ret = ++counter; - spin_unlock(&lock); - return ret; -} - static int can_do_hugetlb_shm(void) { return likely(capable(CAP_IPC_LOCK) || @@ -767,6 +752,7 @@ struct file *hugetlb_zero_setup(size_t s struct dentry *dentry, *root; struct qstr quick_string; char buf[16]; + static atomic_t counter; if (!can_do_hugetlb_shm()) return ERR_PTR(-EPERM); @@ -775,7 +761,7 @@ struct file *hugetlb_zero_setup(size_t s return ERR_PTR(-ENOMEM); root = hugetlbfs_vfsmount->mnt_root; - snprintf(buf, 16, "%lu", hugetlbfs_counter()); + snprintf(buf, 16, "%u", atomic_inc_return(&counter)); quick_string.name = buf; quick_string.len = strlen(quick_string.name); quick_string.hash = 0; _