tests: userspace: add support for validating invalid objects

test userspace API with invalid kernel objects.
This improves code coverage.

Signed-off-by: Lixin Guo <lixinx.guo@intel.com>
This commit is contained in:
Lixin Guo 2021-12-01 15:21:45 +08:00 committed by Christopher Friedt
commit 350a13566e
4 changed files with 27 additions and 7 deletions

View file

@ -352,18 +352,20 @@ void test_kobject_release_from_user(void)
k_thread_join(&child_thread, K_FOREVER);
}
/* @brief Test release kernel a invaild kobject
/**
* @brief Test release and access grant an invaild kobject
*
* @details Validate release kernel objects with NULL parameter.
* @details Validate release and access grant an invalid kernel object.
*
* @see k_object_release()
* @see k_object_release(), k_object_access_all_grant()
*
* @ingroup kernel_memprotect_tests
*/
void test_kobject_release_null(void)
void test_kobject_invalid(void)
{
int dummy = 0;
k_object_access_all_grant(&dummy);
k_object_release(&dummy);
}

View file

@ -62,7 +62,7 @@ void test_main(void)
ztest_unit_test(test_kobject_grant_access_kobj),
ztest_unit_test(test_kobject_grant_access_kobj_invalid),
ztest_unit_test(test_kobject_release_from_user),
ztest_unit_test(test_kobject_release_null),
ztest_unit_test(test_kobject_invalid),
ztest_unit_test(test_kobject_access_all_grant),
ztest_unit_test(test_thread_has_residual_permissions),
ztest_unit_test(test_kobject_access_grant_to_invalid_thread),

View file

@ -63,7 +63,7 @@ extern void test_kobject_access_grant_error(void);
extern void test_kobject_access_grant_error_user(void);
extern void test_kobject_access_grant_error_user_null(void);
extern void test_kobject_access_all_grant_error(void);
extern void test_kobject_release_null(void);
extern void test_kobject_invalid(void);
extern void test_kobject_free_error(void);
extern void test_kobject_init_error(void);
extern void test_kobj_create_out_of_memory(void);

View file

@ -844,11 +844,29 @@ void test_bad_syscall(void)
static struct k_sem recycle_sem;
/**
* @brief Test recycle object
*
* @details Test recycle valid/invalid kernel object, see if
* perms_count changes as expected.
*
* @see z_object_recycle(), z_object_find()
*
* @ingroup kernel_memprotect_tests
*/
void test_object_recycle(void)
{
struct z_object *ko;
int perms_count = 0;
int dummy = 0;
/* Validate recycle invalid objects, after recycling this invalid
* object, perms_count should finally still be 1.
*/
ko = z_object_find(&dummy);
zassert_true(ko == NULL, "not an invalid object");
z_object_recycle(&dummy);
ko = z_object_find(&recycle_sem);
(void)memset(ko->perms, 0xFF, sizeof(ko->perms));