From: Iosif Harutyunov <iharutyu...@sonicwall.com>

Install the UBI device object before we arm sysfs.
Otherwise udev tries to read sysfs attributes before UBI is ready and
udev rules will not match.

Cc: <sta...@vger.kernel.org>
Signed-off-by: Iosif Harutyunov <iharutyu...@sonicwall.com>
[rw: massaged commit message]
Signed-off-by: Richard Weinberger <rich...@nod.at>
[Fixed minor conflict]
Signed-off-by: Teresa Remmet <t.rem...@phytec.de>
---
 drivers/mtd/ubi/build.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 40fa890c9e59..d5c3719482cf 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -633,6 +633,9 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
                        goto out_detach;
        }
 
+       /* Make device "available" before it becomes accessible via sysfs */
+       ubi_devices[ubi_num] = ubi;
+
        err = uif_init(ubi, &ref);
        if (err)
                goto out_detach;
@@ -668,11 +671,10 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
        dev_add_param_uint32_ro(&ubi->dev, "available_pebs", &ubi->avail_pebs, 
"%u");
        dev_add_param_uint32_ro(&ubi->dev, "reserved_pebs", &ubi->rsvd_pebs, 
"%u");
 
-       ubi_devices[ubi_num] = ubi;
-
        return ubi_num;
 
 out_detach:
+       ubi_devices[ubi_num] = NULL;
        ubi_wl_close(ubi);
        ubi_free_internal_volumes(ubi);
        vfree(ubi->vtbl);
-- 
2.7.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to