Is there anything else missing that would need to be done? Alternatively, we could expose the whole context concern to the user in such a way that KUNIT_ASSERT can be used too, something like: struct kunit_defer defer = KUNIT_INIT_DEFER(test); preempt_disable(); KUNIT_EXPECT_DEFERRED_TRUE(&defer, ...); KUNIT_ASSERT_DEFERRED_EQ(&defer, ...); preempt_enable(); // Prints failures from above, aborts if the ASSERT failed: kunit_defer_finish(&defer); I hope that wouldn't be necessary though, it seems like a lot of API surface.