mirror of https://gitee.com/openkylin/linux.git
mtd: grab a reference to the MTD of_node before registering it
We now stick the device node representing the current MTD (if any) into sysfs, so let's make sure we have a reference to it before doing that. Suggested-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Brian Norris <computersforpeace@gmail.com> Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
This commit is contained in:
parent
44ec23c9ec
commit
215a02fd30
|
@ -32,6 +32,7 @@
|
|||
#include <linux/err.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/idr.h>
|
||||
#include <linux/backing-dev.h>
|
||||
|
@ -454,6 +455,7 @@ int add_mtd_device(struct mtd_info *mtd)
|
|||
mtd->dev.devt = MTD_DEVT(i);
|
||||
dev_set_name(&mtd->dev, "mtd%d", i);
|
||||
dev_set_drvdata(&mtd->dev, mtd);
|
||||
of_node_get(mtd_get_of_node(mtd));
|
||||
error = device_register(&mtd->dev);
|
||||
if (error)
|
||||
goto fail_added;
|
||||
|
@ -476,6 +478,7 @@ int add_mtd_device(struct mtd_info *mtd)
|
|||
return 0;
|
||||
|
||||
fail_added:
|
||||
of_node_put(mtd_get_of_node(mtd));
|
||||
idr_remove(&mtd_idr, i);
|
||||
fail_locked:
|
||||
mutex_unlock(&mtd_table_mutex);
|
||||
|
@ -517,6 +520,7 @@ int del_mtd_device(struct mtd_info *mtd)
|
|||
device_unregister(&mtd->dev);
|
||||
|
||||
idr_remove(&mtd_idr, mtd->index);
|
||||
of_node_put(mtd_get_of_node(mtd));
|
||||
|
||||
module_put(THIS_MODULE);
|
||||
ret = 0;
|
||||
|
|
Loading…
Reference in New Issue