summaryrefslogtreecommitdiff
path: root/lib/kunit/resource.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kunit/resource.c')
-rw-r--r--lib/kunit/resource.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/kunit/resource.c b/lib/kunit/resource.c
index 8f8057aad78fd..b3ba0d98d89e3 100644
--- a/lib/kunit/resource.c
+++ b/lib/kunit/resource.c
@@ -98,11 +98,15 @@ EXPORT_SYMBOL_GPL(kunit_alloc_and_get_resource);
void kunit_remove_resource(struct kunit *test, struct kunit_resource *res)
{
unsigned long flags;
+ bool was_linked;
spin_lock_irqsave(&test->lock, flags);
- list_del(&res->node);
+ was_linked = !list_empty(&res->node);
+ list_del_init(&res->node);
spin_unlock_irqrestore(&test->lock, flags);
- kunit_put_resource(res);
+
+ if (was_linked)
+ kunit_put_resource(res);
}
EXPORT_SYMBOL_GPL(kunit_remove_resource);