mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
linux_kselftest-kunit-fixes-6.8-rc3
This kunit fixes update for Linux 6.8-rc3 consists of NULL vs IS_ERR() bug fixes, documentation update, MAINTAINERS file update to add Rae Moar as a reviewer, and a fix to run test suites only after module initialization completes. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPZKym/RZuOCGeA/kCwJExA0NQxwFAmW5dOAACgkQCwJExA0N QxwvoQ/+LoNEP+yu0C/KSWdNsDCMJizbwoCtoImETVdxxxSXOLKlh6cVtFfZTenN lLMX7zfrdIZEKIqIPVa4URq2+M9cHLuFkA8z2h5a8wOLSYxR2EyFq63o0K0NJwuC eSA7zgf/YkfEp7AKdkmefCqyn3bB3910KBlComqdtFtc/d/doZkeo2zCpJ5WXPzr x0aUGPceUa59u44JCgb1JWjQnA50ST+DYFHbfUEQJs37XfkswaseyCBKzWFAZnzR cVFHBVTZRceMrVDaXfSlXLr7FFgh/bQKF9BDTNBOEg9b1TVZmVH5sY5qnXsBTJ86 nCf4J8bIzBOvLkDFGQVRs+6edvSli5wXWfM9O8hzGEbR+xs8GOrlHitM74hyhX7z iq6QZl0FjrGfc98DKTftwO7vDKZcFd2bhpw9ZV1cO4YzYnZVRcWwWYxPO+wS7r3q b+vcypxBmBhXDxxNJaJttxTcblNrxuLY1r7oJZaroE2ioKMY3uEqIA2hLagzPp9E /q6968b2tvFQrveFT3MJwRAAIq175xBRlNcpF8UkhnGXgZMF4er/teMN8coPeK4q N//sxYobNVIJYnz6npIQB6wSobWrc0Qq4AD6YTEYkhbaXiGo3VfdrjwrxTNxryBg wWAXvrSGUqWJXZqnSdFpmpdcOAo9r0Pf0NsByW5jpLiObIGQN5U= =BWfz -----END PGP SIGNATURE----- Merge tag 'linux_kselftest-kunit-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest Pull kunit fixes from Shuah Khan: "NULL vs IS_ERR() bug fixes, documentation update, MAINTAINERS file update to add Rae Moar as a reviewer, and a fix to run test suites only after module initialization completes" * tag 'linux_kselftest-kunit-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: Documentation: KUnit: Update the instructions on how to test static functions kunit: run test suites only after module initialization completes MAINTAINERS: kunit: Add Rae Moar as a reviewer kunit: device: Fix a NULL vs IS_ERR() check in init() kunit: Fix a NULL vs IS_ERR() bug
This commit is contained in:
commit
2a6526c4f3
@ -671,8 +671,23 @@ Testing Static Functions
|
||||
------------------------
|
||||
|
||||
If we do not want to expose functions or variables for testing, one option is to
|
||||
conditionally ``#include`` the test file at the end of your .c file. For
|
||||
example:
|
||||
conditionally export the used symbol. For example:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
/* In my_file.c */
|
||||
|
||||
VISIBLE_IF_KUNIT int do_interesting_thing();
|
||||
EXPORT_SYMBOL_IF_KUNIT(do_interesting_thing);
|
||||
|
||||
/* In my_file.h */
|
||||
|
||||
#if IS_ENABLED(CONFIG_KUNIT)
|
||||
int do_interesting_thing(void);
|
||||
#endif
|
||||
|
||||
Alternatively, you could conditionally ``#include`` the test file at the end of
|
||||
your .c file. For example:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
|
@ -11725,6 +11725,7 @@ F: fs/smb/server/
|
||||
KERNEL UNIT TESTING FRAMEWORK (KUnit)
|
||||
M: Brendan Higgins <brendanhiggins@google.com>
|
||||
M: David Gow <davidgow@google.com>
|
||||
R: Rae Moar <rmoar@google.com>
|
||||
L: linux-kselftest@vger.kernel.org
|
||||
L: kunit-dev@googlegroups.com
|
||||
S: Maintained
|
||||
|
@ -45,8 +45,8 @@ int kunit_bus_init(void)
|
||||
int error;
|
||||
|
||||
kunit_bus_device = root_device_register("kunit");
|
||||
if (!kunit_bus_device)
|
||||
return -ENOMEM;
|
||||
if (IS_ERR(kunit_bus_device))
|
||||
return PTR_ERR(kunit_bus_device);
|
||||
|
||||
error = bus_register(&kunit_bus_type);
|
||||
if (error)
|
||||
|
@ -146,6 +146,10 @@ void kunit_free_suite_set(struct kunit_suite_set suite_set)
|
||||
kfree(suite_set.start);
|
||||
}
|
||||
|
||||
/*
|
||||
* Filter and reallocate test suites. Must return the filtered test suites set
|
||||
* allocated at a valid virtual address or NULL in case of error.
|
||||
*/
|
||||
struct kunit_suite_set
|
||||
kunit_filter_suites(const struct kunit_suite_set *suite_set,
|
||||
const char *filter_glob,
|
||||
|
@ -720,7 +720,7 @@ static void kunit_device_cleanup_test(struct kunit *test)
|
||||
long action_was_run = 0;
|
||||
|
||||
test_device = kunit_device_register(test, "my_device");
|
||||
KUNIT_ASSERT_NOT_NULL(test, test_device);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_device);
|
||||
|
||||
/* Add an action to verify cleanup. */
|
||||
devm_add_action(test_device, test_dev_action, &action_was_run);
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/panic.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#include "debugfs.h"
|
||||
#include "device-impl.h"
|
||||
@ -801,12 +802,19 @@ static void kunit_module_exit(struct module *mod)
|
||||
};
|
||||
const char *action = kunit_action();
|
||||
|
||||
/*
|
||||
* Check if the start address is a valid virtual address to detect
|
||||
* if the module load sequence has failed and the suite set has not
|
||||
* been initialized and filtered.
|
||||
*/
|
||||
if (!suite_set.start || !virt_addr_valid(suite_set.start))
|
||||
return;
|
||||
|
||||
if (!action)
|
||||
__kunit_test_suites_exit(mod->kunit_suites,
|
||||
mod->num_kunit_suites);
|
||||
|
||||
if (suite_set.start)
|
||||
kunit_free_suite_set(suite_set);
|
||||
kunit_free_suite_set(suite_set);
|
||||
}
|
||||
|
||||
static int kunit_module_notify(struct notifier_block *nb, unsigned long val,
|
||||
@ -816,12 +824,12 @@ static int kunit_module_notify(struct notifier_block *nb, unsigned long val,
|
||||
|
||||
switch (val) {
|
||||
case MODULE_STATE_LIVE:
|
||||
kunit_module_init(mod);
|
||||
break;
|
||||
case MODULE_STATE_GOING:
|
||||
kunit_module_exit(mod);
|
||||
break;
|
||||
case MODULE_STATE_COMING:
|
||||
kunit_module_init(mod);
|
||||
break;
|
||||
case MODULE_STATE_UNFORMED:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user