Hi all,
Thanks, Andrew, for the review and for adding this to the -mm tree -- having some soak time in -next has been helpful and picked up at least one bug.
Since KUnit is not yet in Linus' branch, though, it probably makes sense to put this test into the linux-kselftest/test branch, so that there aren't any chances of the list test getting in without the KUnit infrastructure. Ultimately, once KUnit is upstream, this shouldn't be an issue, but it is probably easier to consolidate things for now. Does that sound sensible?
In any case, I plan to send a v3 patch out shortly which addresses some memory allocation warnings (caught by Dan Carpenter, thanks!). I could always do that as a separate bugfix patch if people preferred, though, but if this switches to the linux-kselftest/test branch, I feel we might as well get it right in the original patch.
Cheers, -- David
On Fri, Oct 11, 2019 at 2:55 PM Andrew Morton akpm@linux-foundation.org wrote:
On Fri, 11 Oct 2019 14:37:25 -0700 David Gow davidgow@google.com wrote:
On Fri, Oct 11, 2019 at 2:05 PM Andrew Morton akpm@linux-foundation.org wrote:
<looks at kunit>
Given that everything runs at late_initcall time, shouldn't everything be __init, __initdata etc so all the code and data doesn't hang around for ever?
That's an interesting point. We haven't done this for KUnit tests to date, and there is certainly a possibility down the line that we may want to be able to run these tests in other circumstances. (There's some work being done to allow KUnit and KUnit tests to be built as modules here: https://lkml.org/lkml/2019/10/8/628 for example.) Maybe it'd be worth having macros which wrap __init/__initdata etc as a way of futureproofing tests against such a change?
Either way, I suspect this is something that should probably be considered for KUnit as a whole, rather than on a test-by-test basis.
Sure, a new set of macros for this makes sense. Can be retrofitted any time.
There might be a way of loading all of list_test.o into a discardable section at link time instead of sprinkling annotation all over the .c code.