From fbb7eb81b830c566cf6614e562204a690e73f6b2 Mon Sep 17 00:00:00 2001 From: Peter Bigot Date: Sat, 21 Nov 2020 09:02:49 -0600 Subject: [PATCH] tests: kernel: work_queue: avoid improper access to internal structures Nothing in the API description the delayed work structure sanctions direct reference to internal fields. Do not assume that a delayed work item can be initialized in any way other than by invoking the delayed work item init function. Do not assume that a delayed work item can be submitted without delay by invoking k_work_submit() with a reference to the contained work item. Signed-off-by: Peter Bigot --- tests/kernel/workq/work_queue/src/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/kernel/workq/work_queue/src/main.c b/tests/kernel/workq/work_queue/src/main.c index 6ff4fe93f3b..c6277b10c7c 100644 --- a/tests/kernel/workq/work_queue/src/main.c +++ b/tests/kernel/workq/work_queue/src/main.c @@ -75,7 +75,7 @@ static void delayed_test_items_init(void) for (i = 0; i < NUM_TEST_ITEMS; i++) { delayed_tests[i].key = i + 1; - k_work_init(&delayed_tests[i].work.work, work_handler); + k_delayed_work_init(&delayed_tests[i].work, work_handler); } } @@ -102,7 +102,7 @@ static void coop_work_main(int arg1, int arg2) for (i = 1; i < NUM_TEST_ITEMS; i += 2) { TC_PRINT(" - Submitting work %d from coop thread\n", i + 1); - k_work_submit(&delayed_tests[i].work.work); + k_delayed_work_submit(&delayed_tests[i].work, K_NO_WAIT); k_msleep(SUBMIT_WAIT); } } @@ -121,7 +121,7 @@ static void delayed_test_items_submit(void) for (i = 0; i < NUM_TEST_ITEMS; i += 2) { TC_PRINT(" - Submitting work %d from preempt thread\n", i + 1); - k_work_submit(&delayed_tests[i].work.work); + k_delayed_work_submit(&delayed_tests[i].work, K_NO_WAIT); k_msleep(SUBMIT_WAIT); } } @@ -194,10 +194,10 @@ static void test_resubmit(void) TC_PRINT("Starting resubmit test\n"); delayed_tests[0].key = 1; - delayed_tests[0].work.work.handler = resubmit_work_handler; + k_delayed_work_init(&delayed_tests[0].work, resubmit_work_handler); TC_PRINT(" - Submitting work\n"); - k_work_submit(&delayed_tests[0].work.work); + k_delayed_work_submit(&delayed_tests[0].work, K_NO_WAIT); TC_PRINT(" - Waiting for work to finish\n"); k_msleep(CHECK_WAIT);