diff options
Diffstat (limited to 'arch/sparc/kernel/mdesc.c')
| -rw-r--r-- | arch/sparc/kernel/mdesc.c | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c index 1ef6156b1530..418592a09b41 100644 --- a/arch/sparc/kernel/mdesc.c +++ b/arch/sparc/kernel/mdesc.c @@ -13,6 +13,7 @@  #include <linux/miscdevice.h>  #include <linux/bootmem.h>  #include <linux/export.h> +#include <linux/refcount.h>  #include <asm/cpudata.h>  #include <asm/hypervisor.h> @@ -71,7 +72,7 @@ struct mdesc_handle {  	struct list_head	list;  	struct mdesc_mem_ops	*mops;  	void			*self_base; -	atomic_t		refcnt; +	refcount_t		refcnt;  	unsigned int		handle_size;  	struct mdesc_hdr	mdesc;  }; @@ -153,7 +154,7 @@ static void mdesc_handle_init(struct mdesc_handle *hp,  	memset(hp, 0, handle_size);  	INIT_LIST_HEAD(&hp->list);  	hp->self_base = base; -	atomic_set(&hp->refcnt, 1); +	refcount_set(&hp->refcnt, 1);  	hp->handle_size = handle_size;  } @@ -183,7 +184,7 @@ static void __init mdesc_memblock_free(struct mdesc_handle *hp)  	unsigned int alloc_size;  	unsigned long start; -	BUG_ON(atomic_read(&hp->refcnt) != 0); +	BUG_ON(refcount_read(&hp->refcnt) != 0);  	BUG_ON(!list_empty(&hp->list));  	alloc_size = PAGE_ALIGN(hp->handle_size); @@ -221,7 +222,7 @@ static struct mdesc_handle *mdesc_kmalloc(unsigned int mdesc_size)  static void mdesc_kfree(struct mdesc_handle *hp)  { -	BUG_ON(atomic_read(&hp->refcnt) != 0); +	BUG_ON(refcount_read(&hp->refcnt) != 0);  	BUG_ON(!list_empty(&hp->list));  	kfree(hp->self_base); @@ -260,7 +261,7 @@ struct mdesc_handle *mdesc_grab(void)  	spin_lock_irqsave(&mdesc_lock, flags);  	hp = cur_mdesc;  	if (hp) -		atomic_inc(&hp->refcnt); +		refcount_inc(&hp->refcnt);  	spin_unlock_irqrestore(&mdesc_lock, flags);  	return hp; @@ -272,7 +273,7 @@ void mdesc_release(struct mdesc_handle *hp)  	unsigned long flags;  	spin_lock_irqsave(&mdesc_lock, flags); -	if (atomic_dec_and_test(&hp->refcnt)) { +	if (refcount_dec_and_test(&hp->refcnt)) {  		list_del_init(&hp->list);  		hp->mops->free(hp);  	} @@ -514,7 +515,7 @@ void mdesc_update(void)  	if (status != HV_EOK || real_len > len) {  		printk(KERN_ERR "MD: mdesc reread fails with %lu\n",  		       status); -		atomic_dec(&hp->refcnt); +		refcount_dec(&hp->refcnt);  		mdesc_free(hp);  		goto out;  	} @@ -527,7 +528,7 @@ void mdesc_update(void)  	mdesc_notify_clients(orig_hp, hp);  	spin_lock_irqsave(&mdesc_lock, flags); -	if (atomic_dec_and_test(&orig_hp->refcnt)) +	if (refcount_dec_and_test(&orig_hp->refcnt))  		mdesc_free(orig_hp);  	else  		list_add(&orig_hp->list, &mdesc_zombie_list);  | 
