@@ -1868,11 +1868,23 @@ static int null_add_dev(struct nullb_device *dev)
return rv;
}
+static void null_delete_nullb_list(void)
+{
+ struct nullb_device *dev;
+ struct nullb *nullb;
+
+ while (!list_empty(&nullb_list)) {
+ nullb = list_entry(nullb_list.next, struct nullb, list);
+ dev = nullb->dev;
+ null_del_dev(nullb);
+ null_free_dev(dev);
+ }
+}
+
static int __init null_init(void)
{
int ret = 0;
unsigned int i;
- struct nullb *nullb;
struct nullb_device *dev;
if (g_bs > PAGE_SIZE) {
@@ -1939,12 +1951,7 @@ static int __init null_init(void)
return 0;
err_dev:
- while (!list_empty(&nullb_list)) {
- nullb = list_entry(nullb_list.next, struct nullb, list);
- dev = nullb->dev;
- null_del_dev(nullb);
- null_free_dev(dev);
- }
+ null_delete_nullb_list();
unregister_blkdev(null_major, "nullb");
err_conf:
configfs_unregister_subsystem(&nullb_subsys);
@@ -1956,21 +1963,12 @@ static int __init null_init(void)
static void __exit null_exit(void)
{
- struct nullb *nullb;
-
configfs_unregister_subsystem(&nullb_subsys);
unregister_blkdev(null_major, "nullb");
mutex_lock(&lock);
- while (!list_empty(&nullb_list)) {
- struct nullb_device *dev;
-
- nullb = list_entry(nullb_list.next, struct nullb, list);
- dev = nullb->dev;
- null_del_dev(nullb);
- null_free_dev(dev);
- }
+ null_delete_nullb_list();
mutex_unlock(&lock);
if (g_queue_mode == NULL_Q_MQ && shared_tags)