aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c')
-rw-r--r--target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
index 453e1347b2..5acff6aa91 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
@@ -56,7 +56,7 @@
#include "routerboot.h"
-#define RB_SOFTCONFIG_VER "0.04"
+#define RB_SOFTCONFIG_VER "0.05"
#define RB_SC_PR_PFX "[rb_softconfig] "
#define RB_SC_HAS_WRITE_SUPPORT true
@@ -694,9 +694,8 @@ mtdfail:
static struct kobj_attribute sc_kattrcommit = __ATTR(commit, RB_SC_RMODE|RB_SC_WMODE, sc_commit_show, sc_commit_store);
-int __init rb_softconfig_init(struct kobject *rb_kobj)
+int rb_softconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd)
{
- struct mtd_info *mtd;
size_t bytes_read, buflen;
const u8 *buf;
int i, ret;
@@ -705,20 +704,19 @@ int __init rb_softconfig_init(struct kobject *rb_kobj)
sc_buf = NULL;
sc_kobj = NULL;
- // TODO allow override
- mtd = get_mtd_device_nm(RB_MTD_SOFT_CONFIG);
- if (IS_ERR(mtd))
+ ret = __get_mtd_device(mtd);
+ if (ret)
return -ENODEV;
sc_buflen = mtd->size;
sc_buf = kmalloc(sc_buflen, GFP_KERNEL);
if (!sc_buf) {
- put_mtd_device(mtd);
+ __put_mtd_device(mtd);
return -ENOMEM;
}
ret = mtd_read(mtd, 0, sc_buflen, &bytes_read, sc_buf);
- put_mtd_device(mtd);
+ __put_mtd_device(mtd);
if (ret)
goto fail;
@@ -788,8 +786,10 @@ fail:
return ret;
}
-void __exit rb_softconfig_exit(void)
+void rb_softconfig_exit(void)
{
kobject_put(sc_kobj);
+ sc_kobj = NULL;
kfree(sc_buf);
+ sc_buf = NULL;
}