fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / md / dm-target.c
index 7a9122d..477a041 100644 (file)
@@ -7,10 +7,13 @@
 #include "dm.h"
 
 #include <linux/module.h>
+#include <linux/init.h>
 #include <linux/kmod.h>
 #include <linux/bio.h>
 #include <linux/slab.h>
 
+#define DM_MSG_PREFIX "target"
+
 struct tt_internal {
        struct target_type tt;
 
@@ -77,8 +80,7 @@ void dm_put_target_type(struct target_type *t)
        if (--ti->use == 0)
                module_put(ti->tt.module);
 
-       if (ti->use < 0)
-               BUG();
+       BUG_ON(ti->use < 0);
        up_read(&_lock);
 
        return;
@@ -119,10 +121,9 @@ int dm_register_target(struct target_type *t)
                return -ENOMEM;
 
        down_write(&_lock);
-       if (__find_target_type(t->name)) {
-               kfree(ti);
+       if (__find_target_type(t->name))
                rv = -EEXIST;
-       else
+       else
                list_add(&ti->list, &_targets);
 
        up_write(&_lock);
@@ -181,7 +182,7 @@ static struct target_type error_target = {
        .map  = io_err_map,
 };
 
-int dm_target_init(void)
+int __init dm_target_init(void)
 {
        return dm_register_target(&error_target);
 }