diff options
| author | Tejun Heo <tj@kernel.org> | 2013-02-27 17:04:34 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-27 19:10:18 -0800 | 
| commit | ec09ebc143818c7bb255cf2b79d97dae02a2e635 (patch) | |
| tree | 9ee0f39f75d742927888a09ebec09fba2b2eab5c | |
| parent | 589e9c4dace6995440c119486919ce95b180dd38 (diff) | |
| download | olio-linux-3.10-ec09ebc143818c7bb255cf2b79d97dae02a2e635.tar.xz olio-linux-3.10-ec09ebc143818c7bb255cf2b79d97dae02a2e635.zip  | |
macvtap: convert to idr_alloc()
Convert to the much saner new idr interface.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | drivers/net/macvtap.c | 21 | 
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 97243011d31..a449439bd65 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c @@ -279,28 +279,17 @@ static int macvtap_receive(struct sk_buff *skb)  static int macvtap_get_minor(struct macvlan_dev *vlan)  {  	int retval = -ENOMEM; -	int id;  	mutex_lock(&minor_lock); -	if (idr_pre_get(&minor_idr, GFP_KERNEL) == 0) -		goto exit; - -	retval = idr_get_new_above(&minor_idr, vlan, 1, &id); -	if (retval < 0) { -		if (retval == -EAGAIN) -			retval = -ENOMEM; -		goto exit; -	} -	if (id < MACVTAP_NUM_DEVS) { -		vlan->minor = id; -	} else { +	retval = idr_alloc(&minor_idr, vlan, 1, MACVTAP_NUM_DEVS, GFP_KERNEL); +	if (retval >= 0) { +		vlan->minor = retval; +	} else if (retval == -ENOSPC) {  		printk(KERN_ERR "too many macvtap devices\n");  		retval = -EINVAL; -		idr_remove(&minor_idr, id);  	} -exit:  	mutex_unlock(&minor_lock); -	return retval; +	return retval < 0 ? retval : 0;  }  static void macvtap_free_minor(struct macvlan_dev *vlan)  |