@@ -134,7 +134,6 @@ static DEFINE_MUTEX(vduse_lock);
134
134
static DEFINE_IDR (vduse_idr );
135
135
136
136
static dev_t vduse_major ;
137
- static struct class * vduse_class ;
138
137
static struct cdev vduse_ctrl_cdev ;
139
138
static struct cdev vduse_cdev ;
140
139
static struct workqueue_struct * vduse_irq_wq ;
@@ -1528,6 +1527,16 @@ static const struct kobj_type vq_type = {
1528
1527
.default_groups = vq_groups ,
1529
1528
};
1530
1529
1530
+ static char * vduse_devnode (const struct device * dev , umode_t * mode )
1531
+ {
1532
+ return kasprintf (GFP_KERNEL , "vduse/%s" , dev_name (dev ));
1533
+ }
1534
+
1535
+ static const struct class vduse_class = {
1536
+ .name = "vduse" ,
1537
+ .devnode = vduse_devnode ,
1538
+ };
1539
+
1531
1540
static void vduse_dev_deinit_vqs (struct vduse_dev * dev )
1532
1541
{
1533
1542
int i ;
@@ -1638,7 +1647,7 @@ static int vduse_destroy_dev(char *name)
1638
1647
mutex_unlock (& dev -> lock );
1639
1648
1640
1649
vduse_dev_reset (dev );
1641
- device_destroy (vduse_class , MKDEV (MAJOR (vduse_major ), dev -> minor ));
1650
+ device_destroy (& vduse_class , MKDEV (MAJOR (vduse_major ), dev -> minor ));
1642
1651
idr_remove (& vduse_idr , dev -> minor );
1643
1652
kvfree (dev -> config );
1644
1653
vduse_dev_deinit_vqs (dev );
@@ -1805,7 +1814,7 @@ static int vduse_create_dev(struct vduse_dev_config *config,
1805
1814
1806
1815
dev -> minor = ret ;
1807
1816
dev -> msg_timeout = VDUSE_MSG_DEFAULT_TIMEOUT ;
1808
- dev -> dev = device_create_with_groups (vduse_class , NULL ,
1817
+ dev -> dev = device_create_with_groups (& vduse_class , NULL ,
1809
1818
MKDEV (MAJOR (vduse_major ), dev -> minor ),
1810
1819
dev , vduse_dev_groups , "%s" , config -> name );
1811
1820
if (IS_ERR (dev -> dev )) {
@@ -1821,7 +1830,7 @@ static int vduse_create_dev(struct vduse_dev_config *config,
1821
1830
1822
1831
return 0 ;
1823
1832
err_vqs :
1824
- device_destroy (vduse_class , MKDEV (MAJOR (vduse_major ), dev -> minor ));
1833
+ device_destroy (& vduse_class , MKDEV (MAJOR (vduse_major ), dev -> minor ));
1825
1834
err_dev :
1826
1835
idr_remove (& vduse_idr , dev -> minor );
1827
1836
err_idr :
@@ -1934,11 +1943,6 @@ static const struct file_operations vduse_ctrl_fops = {
1934
1943
.llseek = noop_llseek ,
1935
1944
};
1936
1945
1937
- static char * vduse_devnode (const struct device * dev , umode_t * mode )
1938
- {
1939
- return kasprintf (GFP_KERNEL , "vduse/%s" , dev_name (dev ));
1940
- }
1941
-
1942
1946
struct vduse_mgmt_dev {
1943
1947
struct vdpa_mgmt_dev mgmt_dev ;
1944
1948
struct device dev ;
@@ -2082,11 +2086,9 @@ static int vduse_init(void)
2082
2086
int ret ;
2083
2087
struct device * dev ;
2084
2088
2085
- vduse_class = class_create ("vduse" );
2086
- if (IS_ERR (vduse_class ))
2087
- return PTR_ERR (vduse_class );
2088
-
2089
- vduse_class -> devnode = vduse_devnode ;
2089
+ ret = class_register (& vduse_class );
2090
+ if (ret )
2091
+ return ret ;
2090
2092
2091
2093
ret = alloc_chrdev_region (& vduse_major , 0 , VDUSE_DEV_MAX , "vduse" );
2092
2094
if (ret )
@@ -2099,7 +2101,7 @@ static int vduse_init(void)
2099
2101
if (ret )
2100
2102
goto err_ctrl_cdev ;
2101
2103
2102
- dev = device_create (vduse_class , NULL , vduse_major , NULL , "control" );
2104
+ dev = device_create (& vduse_class , NULL , vduse_major , NULL , "control" );
2103
2105
if (IS_ERR (dev )) {
2104
2106
ret = PTR_ERR (dev );
2105
2107
goto err_device ;
@@ -2141,13 +2143,13 @@ static int vduse_init(void)
2141
2143
err_wq :
2142
2144
cdev_del (& vduse_cdev );
2143
2145
err_cdev :
2144
- device_destroy (vduse_class , vduse_major );
2146
+ device_destroy (& vduse_class , vduse_major );
2145
2147
err_device :
2146
2148
cdev_del (& vduse_ctrl_cdev );
2147
2149
err_ctrl_cdev :
2148
2150
unregister_chrdev_region (vduse_major , VDUSE_DEV_MAX );
2149
2151
err_chardev_region :
2150
- class_destroy ( vduse_class );
2152
+ class_unregister ( & vduse_class );
2151
2153
return ret ;
2152
2154
}
2153
2155
module_init (vduse_init );
@@ -2159,10 +2161,10 @@ static void vduse_exit(void)
2159
2161
destroy_workqueue (vduse_irq_bound_wq );
2160
2162
destroy_workqueue (vduse_irq_wq );
2161
2163
cdev_del (& vduse_cdev );
2162
- device_destroy (vduse_class , vduse_major );
2164
+ device_destroy (& vduse_class , vduse_major );
2163
2165
cdev_del (& vduse_ctrl_cdev );
2164
2166
unregister_chrdev_region (vduse_major , VDUSE_DEV_MAX );
2165
- class_destroy ( vduse_class );
2167
+ class_unregister ( & vduse_class );
2166
2168
}
2167
2169
module_exit (vduse_exit );
2168
2170
0 commit comments