|
|
@ -353,7 +353,7 @@ swconfig_get_dev(struct genl_info *info) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if (dev) |
|
|
|
if (dev) |
|
|
|
spin_lock(&dev->lock); |
|
|
|
mutex_lock(&dev->sw_mutex); |
|
|
|
else |
|
|
|
else |
|
|
|
DPRINTF("device %d not found\n", id); |
|
|
|
DPRINTF("device %d not found\n", id); |
|
|
|
swconfig_unlock(); |
|
|
|
swconfig_unlock(); |
|
|
@ -364,7 +364,7 @@ done: |
|
|
|
static inline void |
|
|
|
static inline void |
|
|
|
swconfig_put_dev(struct switch_dev *dev) |
|
|
|
swconfig_put_dev(struct switch_dev *dev) |
|
|
|
{ |
|
|
|
{ |
|
|
|
spin_unlock(&dev->lock); |
|
|
|
mutex_unlock(&dev->sw_mutex); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int |
|
|
|
static int |
|
|
@ -962,7 +962,7 @@ register_switch(struct switch_dev *dev, struct net_device *netdev) |
|
|
|
return -ENOMEM; |
|
|
|
return -ENOMEM; |
|
|
|
} |
|
|
|
} |
|
|
|
swconfig_defaults_init(dev); |
|
|
|
swconfig_defaults_init(dev); |
|
|
|
spin_lock_init(&dev->lock); |
|
|
|
mutex_init(&dev->sw_mutex); |
|
|
|
swconfig_lock(); |
|
|
|
swconfig_lock(); |
|
|
|
dev->id = ++swdev_id; |
|
|
|
dev->id = ++swdev_id; |
|
|
|
|
|
|
|
|
|
|
@ -1000,11 +1000,11 @@ unregister_switch(struct switch_dev *dev) |
|
|
|
{ |
|
|
|
{ |
|
|
|
swconfig_destroy_led_trigger(dev); |
|
|
|
swconfig_destroy_led_trigger(dev); |
|
|
|
kfree(dev->portbuf); |
|
|
|
kfree(dev->portbuf); |
|
|
|
spin_lock(&dev->lock); |
|
|
|
mutex_lock(&dev->sw_mutex); |
|
|
|
swconfig_lock(); |
|
|
|
swconfig_lock(); |
|
|
|
list_del(&dev->dev_list); |
|
|
|
list_del(&dev->dev_list); |
|
|
|
swconfig_unlock(); |
|
|
|
swconfig_unlock(); |
|
|
|
spin_unlock(&dev->lock); |
|
|
|
mutex_unlock(&dev->sw_mutex); |
|
|
|
} |
|
|
|
} |
|
|
|
EXPORT_SYMBOL_GPL(unregister_switch); |
|
|
|
EXPORT_SYMBOL_GPL(unregister_switch); |
|
|
|
|
|
|
|
|
|
|
|