All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] test: uncover NULL dereferences in logging
@ 2022-07-11  6:21 Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 1/4] dm: avoid NULL dereference in add_item() Heinrich Schuchardt
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Heinrich Schuchardt @ 2022-07-11  6:21 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, u-boot, Heinrich Schuchardt

Setting CONFIG_LOG_MAX_LEVEL=9 in sandbox_defconfig exposed to NULL
dereferences and bugs in the log tests.

log_debug() statements are only executed for CONFIG_LOG_MAX_LEVEL > 6.
We should have a defconfig that exposes problems in these statements.

Heinrich Schuchardt (4):
  dm: avoid NULL dereference in add_item()
  test: fix log tests
  dm: avoid NULL dereference in lists_bind_fdt()
  configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9

 configs/sandbox_defconfig |  2 ++
 drivers/core/acpi.c       |  4 ++--
 drivers/core/lists.c      |  7 ++++---
 test/log/log_test.c       | 11 +++++++----
 4 files changed, 15 insertions(+), 9 deletions(-)

-- 
2.36.1


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

* [PATCH 1/4] dm: avoid NULL dereference in add_item()
  2022-07-11  6:21 [PATCH 0/4] test: uncover NULL dereferences in logging Heinrich Schuchardt
@ 2022-07-11  6:21 ` Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 2/4] test: fix log tests Heinrich Schuchardt
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Heinrich Schuchardt @ 2022-07-11  6:21 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, u-boot, Heinrich Schuchardt

acpi_add_other_item() passes dev = NULL. Instead of dev->name write the
string "other" to the debug log:

    ACPI: Writing ACPI tables at 1fd3000
    0base: writing table '<NULL>'
    * other: Added type 3, 0000000011fd4000, size 240
    1facs: writing table 'FACS'
    * other: Added type 3, 0000000011fd4240, size 40
    5csrt: writing table 'CSRT'
    * other: Added type 3, 0000000011fd4280, size 30

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
Resent
---
 drivers/core/acpi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 0df58dbc0d..8457733edb 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -159,8 +159,8 @@ static int add_item(struct acpi_ctx *ctx, struct udevice *dev,
 		memcpy(item->buf, start, item->size);
 	}
 	item_count++;
-	log_debug("* %s: Added type %d, %p, size %x\n", dev->name, type, start,
-		  item->size);
+	log_debug("* %s: Added type %d, %p, size %x\n",
+		  dev ? dev->name : "other", type, start, item->size);
 
 	return 0;
 }
-- 
2.36.1


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

* [PATCH 2/4] test: fix log tests
  2022-07-11  6:21 [PATCH 0/4] test: uncover NULL dereferences in logging Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 1/4] dm: avoid NULL dereference in add_item() Heinrich Schuchardt
@ 2022-07-11  6:21 ` Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  2022-07-11  6:21 ` [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt() Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9 Heinrich Schuchardt
  3 siblings, 2 replies; 11+ messages in thread
From: Heinrich Schuchardt @ 2022-07-11  6:21 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, u-boot, Heinrich Schuchardt

Consider CONFIG_LOG_MAX_LEVEL and gd->default_log_level in

* do_log_test_helpers()
* log_test_dropped()
* log_test_level_deny()

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 test/log/log_test.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/test/log/log_test.c b/test/log/log_test.c
index db7170f304..c5abff80d1 100644
--- a/test/log/log_test.c
+++ b/test/log/log_test.c
@@ -277,7 +277,7 @@ int do_log_test_helpers(struct unit_test_state *uts)
 	log_content("level %d\n", LOGL_DEBUG_CONTENT);
 	log_io("level %d\n", LOGL_DEBUG_IO);
 
-	for (i = LOGL_EMERG; i <= _LOG_MAX_LEVEL; i++)
+	for (i = LOGL_EMERG; i <= gd->default_log_level; i++)
 		ut_assert_nextline("%*s() level %d", CONFIG_LOGF_FUNC_PAD,
 				   __func__, i);
 	ut_assert_console_end();
@@ -381,7 +381,8 @@ int log_test_level_deny(struct unit_test_state *uts)
 	ut_assertok(console_record_reset_enable());
 	log_run();
 	check_log_entries_flags_levels(EXPECT_LOG | EXPECT_DIRECT | EXPECT_FORCE,
-				       LOGL_WARNING + 1, _LOG_MAX_LEVEL);
+				       LOGL_WARNING + 1,
+				       min(gd->default_log_level, LOGL_INFO));
 
 	ut_assertok(log_remove_filter("console", filt1));
 	ut_assertok(log_remove_filter("console", filt2));
@@ -420,9 +421,11 @@ int log_test_dropped(struct unit_test_state *uts)
 	gd->log_drop_count = 0;
 
 	ut_assertok(console_record_reset_enable());
-	log_run();
 
-	ut_asserteq(gd->log_drop_count, 3 * (LOGL_COUNT - LOGL_FIRST - 1));
+	log_run();
+	ut_asserteq(2 * (LOGL_COUNT - LOGL_FIRST) +
+		    _LOG_MAX_LEVEL - LOGL_FIRST + 1,
+		    gd->log_drop_count);
 	check_log_entries_flags_levels(EXPECT_DEBUG, LOGL_FIRST, CONFIG_LOG_DEFAULT_LEVEL);
 
 	gd->flags |= GD_FLG_LOG_READY;
-- 
2.36.1


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

* [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt()
  2022-07-11  6:21 [PATCH 0/4] test: uncover NULL dereferences in logging Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 1/4] dm: avoid NULL dereference in add_item() Heinrich Schuchardt
  2022-07-11  6:21 ` [PATCH 2/4] test: fix log tests Heinrich Schuchardt
@ 2022-07-11  6:21 ` Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  2022-07-11  6:21 ` [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9 Heinrich Schuchardt
  3 siblings, 2 replies; 11+ messages in thread
From: Heinrich Schuchardt @ 2022-07-11  6:21 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, u-boot, Heinrich Schuchardt

If parameter drv of lists_bind_fdt() is specified, we want to bind to this
specific driver even if its field of_match is NULL.

If entry->of_match is NULL, we should not dereference it in a debug
statement.

Fixes: d3e773613b6d ("dm: core: Use U-Boot logging instead of pr_debug()")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 drivers/core/lists.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 22ccd9faaa..93514a744d 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -241,9 +241,10 @@ int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp,
 			}
 		}
 
-		log_debug("   - found match at '%s': '%s' matches '%s'\n",
-			  entry->name, entry->of_match->compatible,
-			  id->compatible);
+		if (entry->of_match)
+			log_debug("   - found match at '%s': '%s' matches '%s'\n",
+				  entry->name, entry->of_match->compatible,
+				  id->compatible);
 		ret = device_bind_with_driver_data(parent, entry, name,
 						   id->data, node, &dev);
 		if (ret == -ENODEV) {
-- 
2.36.1


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

* [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9
  2022-07-11  6:21 [PATCH 0/4] test: uncover NULL dereferences in logging Heinrich Schuchardt
                   ` (2 preceding siblings ...)
  2022-07-11  6:21 ` [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt() Heinrich Schuchardt
@ 2022-07-11  6:21 ` Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  3 siblings, 2 replies; 11+ messages in thread
From: Heinrich Schuchardt @ 2022-07-11  6:21 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, u-boot, Heinrich Schuchardt

Without setting CONFIG_LOG_MAX_LEVEL to a value above 6 we will not detect
NULL dereferences and other errors in log_debug() calls.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
Resent
---
 configs/sandbox_defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index c509a924e6..4b87d96c76 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -31,6 +31,8 @@ CONFIG_CONSOLE_RECORD=y
 CONFIG_CONSOLE_RECORD_OUT_SIZE=0x6000
 CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_LOG=y
+CONFIG_LOG_MAX_LEVEL=9
+CONFIG_LOG_DEFAULT_LEVEL=6
 CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_ANDROID_AB=y
-- 
2.36.1


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

* Re: [PATCH 2/4] test: fix log tests
  2022-07-11  6:21 ` [PATCH 2/4] test: fix log tests Heinrich Schuchardt
@ 2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-12 10:58 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Bin Meng, U-Boot Mailing List

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Consider CONFIG_LOG_MAX_LEVEL and gd->default_log_level in
>
> * do_log_test_helpers()
> * log_test_dropped()
> * log_test_level_deny()
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  test/log/log_test.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* Re: [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9
  2022-07-11  6:21 ` [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9 Heinrich Schuchardt
@ 2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-12 10:58 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Bin Meng, U-Boot Mailing List

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Without setting CONFIG_LOG_MAX_LEVEL to a value above 6 we will not detect
> NULL dereferences and other errors in log_debug() calls.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
> Resent
> ---
>  configs/sandbox_defconfig | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* Re: [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt()
  2022-07-11  6:21 ` [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt() Heinrich Schuchardt
@ 2022-07-12 10:58   ` Simon Glass
  2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-12 10:58 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Bin Meng, U-Boot Mailing List

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> If parameter drv of lists_bind_fdt() is specified, we want to bind to this
> specific driver even if its field of_match is NULL.
>
> If entry->of_match is NULL, we should not dereference it in a debug
> statement.
>
> Fixes: d3e773613b6d ("dm: core: Use U-Boot logging instead of pr_debug()")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  drivers/core/lists.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

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

* Re: [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt()
  2022-07-11  6:21 ` [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt() Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
@ 2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-26 19:52 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, U-Boot Mailing List, Heinrich Schuchardt

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> If parameter drv of lists_bind_fdt() is specified, we want to bind to this
> specific driver even if its field of_match is NULL.
>
> If entry->of_match is NULL, we should not dereference it in a debug
> statement.
>
> Fixes: d3e773613b6d ("dm: core: Use U-Boot logging instead of pr_debug()")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  drivers/core/lists.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!

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

* Re: [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9
  2022-07-11  6:21 ` [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9 Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
@ 2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-26 19:52 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, U-Boot Mailing List, Heinrich Schuchardt

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Without setting CONFIG_LOG_MAX_LEVEL to a value above 6 we will not detect
> NULL dereferences and other errors in log_debug() calls.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
> Resent
> ---
>  configs/sandbox_defconfig | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!

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

* Re: [PATCH 2/4] test: fix log tests
  2022-07-11  6:21 ` [PATCH 2/4] test: fix log tests Heinrich Schuchardt
  2022-07-12 10:58   ` Simon Glass
@ 2022-07-26 19:52   ` Simon Glass
  1 sibling, 0 replies; 11+ messages in thread
From: Simon Glass @ 2022-07-26 19:52 UTC (permalink / raw)
  To: Simon Glass; +Cc: Bin Meng, U-Boot Mailing List, Heinrich Schuchardt

On Mon, 11 Jul 2022 at 00:21, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Consider CONFIG_LOG_MAX_LEVEL and gd->default_log_level in
>
> * do_log_test_helpers()
> * log_test_dropped()
> * log_test_level_deny()
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>  test/log/log_test.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!

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

end of thread, other threads:[~2022-07-26 19:55 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-11  6:21 [PATCH 0/4] test: uncover NULL dereferences in logging Heinrich Schuchardt
2022-07-11  6:21 ` [PATCH 1/4] dm: avoid NULL dereference in add_item() Heinrich Schuchardt
2022-07-11  6:21 ` [PATCH 2/4] test: fix log tests Heinrich Schuchardt
2022-07-12 10:58   ` Simon Glass
2022-07-26 19:52   ` Simon Glass
2022-07-11  6:21 ` [PATCH 3/4] dm: avoid NULL dereference in lists_bind_fdt() Heinrich Schuchardt
2022-07-12 10:58   ` Simon Glass
2022-07-26 19:52   ` Simon Glass
2022-07-11  6:21 ` [PATCH 4/4] configs: sandbox_defconfig: CONFIG_LOG_MAX_LEVEL=9 Heinrich Schuchardt
2022-07-12 10:58   ` Simon Glass
2022-07-26 19:52   ` Simon Glass

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.