aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
authorThibaut VARÈNE <hacks@slashdirt.org>2021-05-11 12:50:21 +0200
committerKoen Vandeputte <koen.vandeputte@ncentric.com>2021-05-12 10:14:33 +0200
commit2f0ab9379909dbc765b0e250669f8f57254c8463 (patch)
tree88f01350b2a20f8cc6e3d213bc2796d1769f4a14 /target/linux/generic
parent4d9f3ae2bb3904d6b5bc114291100b56cb320041 (diff)
downloadupstream-2f0ab9379909dbc765b0e250669f8f57254c8463.tar.gz
upstream-2f0ab9379909dbc765b0e250669f8f57254c8463.tar.bz2
upstream-2f0ab9379909dbc765b0e250669f8f57254c8463.zip
generic: platform/mikrotik: release mtd device after use
The code uses get_mtd_device_nm() which must be followed by a call to put_mtd_device() once the handle is no longer used. This fixes spurious shutdown console messages such as: [ 2256.334562] Removing MTD device #7 (soft_config) with use count 1 Reported-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org> (cherry picked from commit 4e385a27d6c4aab62ef7fc9856f09ebee9632985)
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c5
-rw-r--r--target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
index 41dea98b5e..e6a6928896 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig.c
@@ -697,10 +697,13 @@ int __init rb_hardconfig_init(struct kobject *rb_kobj)
hc_buflen = mtd->size;
hc_buf = kmalloc(hc_buflen, GFP_KERNEL);
- if (!hc_buf)
+ if (!hc_buf) {
+ put_mtd_device(mtd);
return -ENOMEM;
+ }
ret = mtd_read(mtd, 0, hc_buflen, &bytes_read, hc_buf);
+ put_mtd_device(mtd);
if (ret)
goto fail;
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 54e263df8c..070bd32d5a 100644
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
@@ -686,6 +686,8 @@ static ssize_t sc_commit_store(struct kobject *kobj, struct kobj_attribute *attr
}
write_unlock(&sc_bufrwl);
+ put_mtd_device(mtd);
+
if (ret)
goto mtdfail;
@@ -721,10 +723,13 @@ int __init rb_softconfig_init(struct kobject *rb_kobj)
sc_buflen = mtd->size;
sc_buf = kmalloc(sc_buflen, GFP_KERNEL);
- if (!sc_buf)
+ if (!sc_buf) {
+ put_mtd_device(mtd);
return -ENOMEM;
+ }
ret = mtd_read(mtd, 0, sc_buflen, &bytes_read, sc_buf);
+ put_mtd_device(mtd);
if (ret)
goto fail;