public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] Patch:  Fix device enumeration through API.
@ 2012-02-22  6:34 Tim Kientzle
  2012-03-26 11:06 ` Anatolij Gustschin
  0 siblings, 1 reply; 5+ messages in thread
From: Tim Kientzle @ 2012-02-22  6:34 UTC (permalink / raw)
  To: u-boot

The one-line patch below fixes device enumeration through the
U-Boot API.

Device enumeration crashes when the system in question doesn't
have any RAM mapped to address zero (I discovered this on a
BeagleBone board), since the enumeration calls get_dev with a
NULL ifname sometimes which then gets passed down to strncmp().

This fix simply ensures that get_dev returns NULL when invoked
with a NULL ifname.

This could also be fixed by reworking the device enumeration to
never call get_dev with a NULL argument, but that's a much more
extensive change.  (get_dev is called from several places and the
code is driven by a list that's constructed in a way that naturally
leaves lots of NULLs.)

Cheers,

Tim Kientzle

diff --git a/disk/part.c b/disk/part.c
index f07a17f..1a82539 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -84,7 +84,7 @@ block_dev_desc_t *get_dev(char* ifname, int dev)
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
 	name += gd->reloc_off;
 #endif
-	while (drvr->name) {
+	while (ifname && drvr->name) {
 		name = drvr->name;
 		reloc_get_dev = drvr->get_dev;
 #ifdef CONFIG_NEEDS_MANUAL_RELOC

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

end of thread, other threads:[~2012-03-27  9:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-22  6:34 [U-Boot] Patch: Fix device enumeration through API Tim Kientzle
2012-03-26 11:06 ` Anatolij Gustschin
2012-03-27  2:46   ` Tim Kientzle
2012-03-27  4:31     ` Wolfgang Denk
2012-03-27  9:54     ` [U-Boot] [PATCH v2] disk/part.c: " Anatolij Gustschin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox