[PATCH 1/2] dm: dump.c: Fix segfault when entry->of_match is NULL

Currently, dm drivers command produces a segfault: => dm drivers Driver Compatible -------------------------------- Segmentation fault (core dumped)
This is caused by a NULL pointer dereference of entry->of_match. Add a check to prevent this.
Signed-off-by: Ovidiu Panait ovpanait@gmail.com Cc: Sean Anderson seanga2@gmail.com Cc: Simon Glass sjg@chromium.org --- drivers/core/dump.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/core/dump.c b/drivers/core/dump.c index e73ebeabcc..b5046398d4 100644 --- a/drivers/core/dump.c +++ b/drivers/core/dump.c @@ -107,7 +107,8 @@ void dm_dump_drivers(void) puts("Driver Compatible\n"); puts("--------------------------------\n"); for (entry = d; entry < d + n_ents; entry++) { - for (match = entry->of_match; match->compatible; match++) + for (match = entry->of_match; + match && match->compatible; match++) printf("%-20.20s %s\n", match == entry->of_match ? entry->name : "", match->compatible);

Refactor the printing sequence in dm_dump_drivers to make it more clear.
Signed-off-by: Ovidiu Panait ovpanait@gmail.com Cc: Sean Anderson seanga2@gmail.com Cc: Simon Glass sjg@chromium.org --- drivers/core/dump.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/core/dump.c b/drivers/core/dump.c index b5046398d4..cb8a25b9ad 100644 --- a/drivers/core/dump.c +++ b/drivers/core/dump.c @@ -107,12 +107,16 @@ void dm_dump_drivers(void) puts("Driver Compatible\n"); puts("--------------------------------\n"); for (entry = d; entry < d + n_ents; entry++) { - for (match = entry->of_match; - match && match->compatible; match++) - printf("%-20.20s %s\n", - match == entry->of_match ? entry->name : "", - match->compatible); - if (match == entry->of_match) - printf("%-20.20s\n", entry->name); + match = entry->of_match; + + printf("%-20.20s", entry->name); + if (match) { + printf(" %s", match->compatible); + match++; + } + printf("\n"); + + for (; match && match->compatible; match++) + printf("%-20.20s %s\n", "", match->compatible); } }

On Sun, 5 Apr 2020 at 10:47, Ovidiu Panait ovpanait@gmail.com wrote:
Refactor the printing sequence in dm_dump_drivers to make it more clear.
Signed-off-by: Ovidiu Panait ovpanait@gmail.com Cc: Sean Anderson seanga2@gmail.com Cc: Simon Glass sjg@chromium.org
drivers/core/dump.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Sun, 5 Apr 2020 at 10:47, Ovidiu Panait ovpanait@gmail.com wrote:
Refactor the printing sequence in dm_dump_drivers to make it more clear.
Signed-off-by: Ovidiu Panait ovpanait@gmail.com Cc: Sean Anderson seanga2@gmail.com Cc: Simon Glass sjg@chromium.org
drivers/core/dump.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm, thanks!

On 4/5/20 12:47 PM, Ovidiu Panait wrote:
Currently, dm drivers command produces a segfault: => dm drivers Driver Compatible
Segmentation fault (core dumped)
This is caused by a NULL pointer dereference of entry->of_match. Add a check to prevent this.
This should have been fixed in version 3 of the original patch [1]. Did it not get merged properly? This is the second time I've been CC'd by someone who wants to fix this.
[1] https://patchwork.ozlabs.org/patch/1234460/
--Sean

On 05.04.2020 19:53, Sean Anderson wrote:
On 4/5/20 12:47 PM, Ovidiu Panait wrote:
Currently, dm drivers command produces a segfault: => dm drivers Driver Compatible
Segmentation fault (core dumped)
This is caused by a NULL pointer dereference of entry->of_match. Add a check to prevent this.
This should have been fixed in version 3 of the original patch [1]. Did it not get merged properly? This is the second time I've been CC'd by someone who wants to fix this.
Yes, it seems that an older version of the patch was merged:
https://github.com/u-boot/u-boot/commit/7b9d60fc1ff67b3959a7db394084b27268a7...
Ovidiu
--Sean

Hi,
On Sun, 5 Apr 2020 at 11:08, Ovidiu Panait ovpanait@gmail.com wrote:
On 05.04.2020 19:53, Sean Anderson wrote:
On 4/5/20 12:47 PM, Ovidiu Panait wrote:
Currently, dm drivers command produces a segfault: => dm drivers Driver Compatible
Segmentation fault (core dumped)
This is caused by a NULL pointer dereference of entry->of_match. Add a check to prevent this.
This should have been fixed in version 3 of the original patch [1]. Did it not get merged properly? This is the second time I've been CC'd by someone who wants to fix this.
Yes, it seems that an older version of the patch was merged:
https://github.com/u-boot/u-boot/commit/7b9d60fc1ff67b3959a7db394084b27268a7...
OK, so can someone do a fixup patch for this?
Regards, Simon

Hi,
On Sun, 5 Apr 2020 at 11:08, Ovidiu Panait ovpanait@gmail.com wrote:
On 05.04.2020 19:53, Sean Anderson wrote:
On 4/5/20 12:47 PM, Ovidiu Panait wrote:
Currently, dm drivers command produces a segfault: => dm drivers Driver Compatible
Segmentation fault (core dumped)
This is caused by a NULL pointer dereference of entry->of_match. Add a check to prevent this.
This should have been fixed in version 3 of the original patch [1]. Did it not get merged properly? This is the second time I've been CC'd by someone who wants to fix this.
Yes, it seems that an older version of the patch was merged:
https://github.com/u-boot/u-boot/commit/7b9d60fc1ff67b3959a7db394084b27268a7...
OK, so can someone do a fixup patch for this?
Regards, Simon
Applied to u-boot-dm, thanks!
participants (4)
-
Ovidiu Panait
-
Sean Anderson
-
Simon Glass
-
sjg@google.com