dma-buf: add some lockdep asserts to the reservation object implementation
authorLucas Stach <l.stach@pengutronix.de>
Tue, 13 Jun 2017 08:26:46 +0000 (10:26 +0200)
committerLucas Stach <l.stach@pengutronix.de>
Wed, 27 Feb 2019 22:51:43 +0000 (23:51 +0100)
This adds lockdep asserts to the reservation functions which state in their
documentation that obj->lock must be held. Allows builds with PROVE_LOCKING
enabled to check that the locking requirements are met.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180111165302.25556-1-l.stach@pengutronix.de
drivers/dma-buf/reservation.c

index c1618335ca9944e11c537eb7bd2c13ed3dd93b2b..4d32e2c678626f35d2654d38148643fa65784875 100644 (file)
@@ -73,6 +73,8 @@ int reservation_object_reserve_shared(struct reservation_object *obj,
        struct reservation_object_list *old, *new;
        unsigned int i, j, k, max;
 
+       reservation_object_assert_held(obj);
+
        old = reservation_object_get_list(obj);
 
        if (old && old->shared_max) {
@@ -151,6 +153,8 @@ void reservation_object_add_shared_fence(struct reservation_object *obj,
 
        dma_fence_get(fence);
 
+       reservation_object_assert_held(obj);
+
        fobj = reservation_object_get_list(obj);
        count = fobj->shared_count;
 
@@ -196,6 +200,8 @@ void reservation_object_add_excl_fence(struct reservation_object *obj,
        struct reservation_object_list *old;
        u32 i = 0;
 
+       reservation_object_assert_held(obj);
+
        old = reservation_object_get_list(obj);
        if (old)
                i = old->shared_count;
@@ -236,6 +242,8 @@ int reservation_object_copy_fences(struct reservation_object *dst,
        size_t size;
        unsigned i;
 
+       reservation_object_assert_held(dst);
+
        rcu_read_lock();
        src_list = rcu_dereference(src->fence);