All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@kernel.org>
To: David Gow <davidgow@google.com>
Cc: Michael Turquette <mturquette@baylibre.com>,
	linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
	patches@lists.linux.dev, kunit-dev@googlegroups.com,
	linux-kselftest@vger.kernel.org, devicetree@vger.kernel.org,
	Brendan Higgins <brendan.higgins@linux.dev>,
	Rae Moar <rmoar@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rafael J . Wysocki <rafael@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Saravana Kannan <saravanak@google.com>,
	Daniel Latypov <dlatypov@google.com>,
	Christian Marangi <ansuelsmth@gmail.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Maxime Ripard <maxime@cerno.tech>
Subject: Re: [PATCH v4 00/10] clk: Add kunit tests for fixed rate and parent data
Date: Thu, 02 May 2024 18:27:42 -0700	[thread overview]
Message-ID: <b822c6a5488c4098059b6d3c35eecbbd.sboyd@kernel.org> (raw)
In-Reply-To: <CABVgOSmgUJp3FijpYGCphi1OzRUNvmYQmPDdL6mN59YnbkR2iQ@mail.gmail.com>

Quoting David Gow (2024-05-01 01:08:11)
> 
> Thanks very much. I'm about halfway through reviewing these, and I
> like them a lot so far.
> 
> Most of my thoughts are just naming ideas. I fear some of them may be
> the reverse of previous suggestions, as we've since landed the KUnit
> device wrappers in include/kunit/device.h, which we decided would live
> as part of KUnit, not as part of the device infrastructure. I don't
> enormously mind if we make the opposite decision for these, though it
> does seem a bit inconsistent if we do 'devices' differently from
> 'platform_devices'. Thoughts?

Let's discuss on one of the patches.

> 
> The other thing I've noted so far is that the
> of_apply_kunit_platform_device and of_overlay_apply_kunit_cleanup
> tests fail (and BUG() with a NULL pointer) on powerpc:
> > [15:18:51]     # of_overlay_apply_kunit_platform_device: EXPECTATION FAILED at drivers/of/overlay_test.c:47
> > [15:18:51]     Expected pdev is not null, but is
> > [15:18:51] BUG: Kernel NULL pointer dereference at 0x0000004c

This seems to be because pdev is NULL and we call put_device(&pdev->dev)
on it. We could be nicer and have an 'if (pdev)' check there. I wonder
if that fixes the other two below?

---8<---
diff --git a/drivers/of/overlay_test.c b/drivers/of/overlay_test.c
index 223e5a5c23c5..85cfbe6bb132 100644
--- a/drivers/of/overlay_test.c
+++ b/drivers/of/overlay_test.c
@@ -45,7 +45,8 @@ static void of_overlay_apply_kunit_platform_device(struct kunit *test)
 
 	pdev = of_find_device_by_node(np);
 	KUNIT_EXPECT_NOT_ERR_OR_NULL(test, pdev);
-	put_device(&pdev->dev);
+	if (pdev)
+		put_device(&pdev->dev);
 }
 
 static int of_overlay_bus_match_compatible(struct device *dev, const void *data)
@@ -77,8 +78,8 @@ static void of_overlay_apply_kunit_cleanup(struct kunit *test)
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, np);
 
 	pdev = of_find_device_by_node(np);
-	put_device(&pdev->dev); /* Not derefing 'pdev' after this */
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
+	put_device(&pdev->dev); /* Not derefing 'pdev' after this */
 
 	/* Remove overlay */
 	kunit_cleanup(&fake);
@@ -91,7 +92,8 @@ static void of_overlay_apply_kunit_cleanup(struct kunit *test)
 	dev = bus_find_device(&platform_bus_type, NULL, kunit_compatible,
 			      of_overlay_bus_match_compatible);
 	KUNIT_EXPECT_PTR_EQ(test, NULL, dev);
-	put_device(dev);
+	if (dev)
+		put_device(dev);
 }
 
 static struct kunit_case of_overlay_apply_kunit_test_cases[] = {

> > [15:18:51]     # of_overlay_apply_kunit_platform_device: try faulted: last line seen lib/kunit/resource.c:99
> > [15:18:51]     # of_overlay_apply_kunit_platform_device: internal error occurred preventing test case from running: -4
> > [15:18:51] [FAILED] of_overlay_apply_kunit_platform_device
> 
> > [15:18:51] BUG: Kernel NULL pointer dereference at 0x0000004c
> > [15:18:51] note: kunit_try_catch[698] exited with irqs disabled
> > [15:18:51]     # of_overlay_apply_kunit_cleanup: try faulted: last line seen drivers/of/overlay_test.c:77
> > [15:18:51]     # of_overlay_apply_kunit_cleanup: internal error occurred preventing test case from running: -4
> > [15:18:51] [FAILED] of_overlay_apply_kunit_cleanup
> 
> I've not had a chance to dig into it any further, yet, but it appears
> to work on all of the other architectures I tried.

Cool. I don't know why powerpc doesn't make devices. Maybe it has a
similar design to sparc to create resources. I'll check it out.

  reply	other threads:[~2024-05-03  1:27 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-22 23:23 [PATCH v4 00/10] clk: Add kunit tests for fixed rate and parent data Stephen Boyd
2024-04-22 23:23 ` [PATCH v4 01/10] of: Add test managed wrappers for of_overlay_apply()/of_node_put() Stephen Boyd
2024-04-23 15:05   ` Rob Herring
2024-05-01  7:55   ` David Gow
2024-05-03  0:36     ` Stephen Boyd
2024-05-04  8:30       ` David Gow
2024-04-22 23:23 ` [PATCH v4 02/10] dt-bindings: vendor-prefixes: Add "test" vendor for KUnit and friends Stephen Boyd
2024-05-01  7:55   ` David Gow
2024-04-22 23:23 ` [PATCH v4 03/10] dt-bindings: test: Add KUnit empty node binding Stephen Boyd
2024-05-01  7:55   ` David Gow
2024-05-01  7:55     ` David Gow
2024-05-02 21:23     ` Brendan Higgins
2024-04-22 23:23 ` [PATCH v4 04/10] of: Add a KUnit test for overlays and test managed APIs Stephen Boyd
2024-04-23 15:07   ` Rob Herring
2024-04-22 23:23 ` [PATCH v4 05/10] platform: Add test managed platform_device/driver APIs Stephen Boyd
2024-04-24 18:11   ` Stephen Boyd
2024-04-30 21:32     ` Stephen Boyd
2024-05-01  7:55   ` David Gow
2024-05-03  1:03     ` Stephen Boyd
2024-05-04  8:30       ` David Gow
2024-05-10 20:12         ` Stephen Boyd
2024-05-14  3:35   ` Stephen Boyd
2024-04-22 23:23 ` [PATCH v4 06/10] dt-bindings: kunit: Add fixed rate clk consumer test Stephen Boyd
2024-06-03 22:02   ` Stephen Boyd
2024-04-22 23:24 ` [PATCH v4 07/10] clk: Add test managed clk provider/consumer APIs Stephen Boyd
2024-04-22 23:24 ` [PATCH v4 08/10] clk: Add KUnit tests for clk fixed rate basic type Stephen Boyd
2024-04-22 23:24 ` [PATCH v4 09/10] dt-bindings: clk: Add KUnit clk_parent_data test Stephen Boyd
2024-04-22 23:24 ` [PATCH v4 10/10] clk: Add KUnit tests for clks registered with struct clk_parent_data Stephen Boyd
2024-05-01  8:08 ` [PATCH v4 00/10] clk: Add kunit tests for fixed rate and parent data David Gow
2024-05-03  1:27   ` Stephen Boyd [this message]
2024-05-14 21:29     ` Stephen Boyd
2024-05-15 13:06       ` Rob Herring
2024-05-15 21:15         ` Stephen Boyd
2024-05-15 22:08           ` Rob Herring
2024-05-17  0:33             ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b822c6a5488c4098059b6d3c35eecbbd.sboyd@kernel.org \
    --to=sboyd@kernel.org \
    --cc=ansuelsmth@gmail.com \
    --cc=brendan.higgins@linux.dev \
    --cc=conor+dt@kernel.org \
    --cc=davidgow@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dlatypov@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=maxime@cerno.tech \
    --cc=mturquette@baylibre.com \
    --cc=patches@lists.linux.dev \
    --cc=rafael@kernel.org \
    --cc=rmoar@google.com \
    --cc=robh@kernel.org \
    --cc=saravanak@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.