All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mtd: ubi: Fix race condition between ubi device creation and udev
@ 2016-07-21  2:07 Iosif Harutyunov
  2016-07-21 11:42 ` Richard Weinberger
  2016-07-22  8:45 ` Artem Bityutskiy
  0 siblings, 2 replies; 5+ messages in thread
From: Iosif Harutyunov @ 2016-07-21  2:07 UTC (permalink / raw)
  To: linux-mtd; +Cc: Iosif Harutyunov


While implementing udev rules for UBI device I ran into the problem when udev would
ignore UBI rules I created to process attachment of volume. Interestingly, when I trigger
udev ubi subsystem "change" event manually after the attachment, rules would work just fine.

I traced problem down to UBI sysfs processing, which turned out to be racing condition.
See patch below to address the problem.

Thanks.
Iosif,_

Signed-off-by: Iosif Harutyunov <iharutyunov@sonicwall.com>
---
Once ubi is attached, make sure ubi_devices[] is initialized early before being
used in the dev_attribute_show().

This is to prevent race condition between udev ubi rules processing and ubi device
creation, which manifests itself ignoring udev ATTR rules.

---
 drivers/mtd/ubi/build.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index ef36182..e6117d7 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -986,6 +986,8 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
 		goto out_free;
 	}
 
+	ubi_devices[ubi_num] = ubi;
+
 	if (ubi->autoresize_vol_id != -1) {
 		err = autoresize(ubi, ubi->autoresize_vol_id);
 		if (err)
@@ -1036,7 +1038,6 @@ int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
 	wake_up_process(ubi->bgt_thread);
 	spin_unlock(&ubi->wl_lock);
 
-	ubi_devices[ubi_num] = ubi;
 	ubi_notify_all(ubi, UBI_VOLUME_ADDED, NULL);
 	return ubi_num;
 
@@ -1047,6 +1048,7 @@ out_uif:
 	ubi_assert(ref);
 	uif_close(ubi);
 out_detach:
+	ubi_devices[ubi_num] = NULL;
 	ubi_wl_close(ubi);
 	ubi_free_internal_volumes(ubi);
 	vfree(ubi->vtbl);
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-22 23:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-21  2:07 [PATCH] mtd: ubi: Fix race condition between ubi device creation and udev Iosif Harutyunov
2016-07-21 11:42 ` Richard Weinberger
2016-07-22  0:32   ` Iosif Harutyunov
2016-07-22  8:45 ` Artem Bityutskiy
2016-07-22 23:22   ` Harutyunov, Iosif

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.