dm target: use module refcount directly
[firefly-linux-kernel-4.4.55.git] / drivers / md / dm-target.c
index 7decf10006e41cf9b3372544fa60eff54d195923..db72c9497bb4faf34ec9bfaf29c1de09f8d5a333 100644 (file)
@@ -18,7 +18,6 @@ struct tt_internal {
        struct target_type tt;
 
        struct list_head list;
-       long use;
 };
 
 static LIST_HEAD(_targets);
@@ -44,12 +43,8 @@ static struct tt_internal *get_target_type(const char *name)
        down_read(&_lock);
 
        ti = __find_target_type(name);
-       if (ti) {
-               if ((ti->use == 0) && !try_module_get(ti->tt.module))
-                       ti = NULL;
-               else
-                       ti->use++;
-       }
+       if (ti && !try_module_get(ti->tt.module))
+               ti = NULL;
 
        up_read(&_lock);
        return ti;
@@ -77,10 +72,7 @@ void dm_put_target_type(struct target_type *t)
        struct tt_internal *ti = (struct tt_internal *) t;
 
        down_read(&_lock);
-       if (--ti->use == 0)
-               module_put(ti->tt.module);
-
-       BUG_ON(ti->use < 0);
+       module_put(ti->tt.module);
        up_read(&_lock);
 
        return;
@@ -140,12 +132,6 @@ void dm_unregister_target(struct target_type *t)
                BUG();
        }
 
-       if (ti->use) {
-               DMCRIT("Attempt to unregister target still in use: %s",
-                      t->name);
-               BUG();
-       }
-
        list_del(&ti->list);
        kfree(ti);