#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
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;
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;
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;
}