Commit d5dfc80f authored by Stephen Boyd's avatar Stephen Boyd Committed by Linus Torvalds

dma-debug: track bucket lock state for static checkers

get_hash_bucket() and put_hash_bucket() acquire and release the same
spinlock, but this confuses static checkers such as sparse

  lib/dma-debug.c:254:27: warning: context imbalance in 'get_hash_bucket' - wrong count at exit
  lib/dma-debug.c:268:13: warning: context imbalance in 'put_hash_bucket' - unexpected unlock

Add the appropriate acquire and release statements so that checkers can
properly track the lock state.

Link: http://lkml.kernel.org/r/20160701191552.24295-1-sboyd@codeaurora.orgSigned-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6b524995
...@@ -253,6 +253,7 @@ static int hash_fn(struct dma_debug_entry *entry) ...@@ -253,6 +253,7 @@ static int hash_fn(struct dma_debug_entry *entry)
*/ */
static struct hash_bucket *get_hash_bucket(struct dma_debug_entry *entry, static struct hash_bucket *get_hash_bucket(struct dma_debug_entry *entry,
unsigned long *flags) unsigned long *flags)
__acquires(&dma_entry_hash[idx].lock)
{ {
int idx = hash_fn(entry); int idx = hash_fn(entry);
unsigned long __flags; unsigned long __flags;
...@@ -267,6 +268,7 @@ static struct hash_bucket *get_hash_bucket(struct dma_debug_entry *entry, ...@@ -267,6 +268,7 @@ static struct hash_bucket *get_hash_bucket(struct dma_debug_entry *entry,
*/ */
static void put_hash_bucket(struct hash_bucket *bucket, static void put_hash_bucket(struct hash_bucket *bucket,
unsigned long *flags) unsigned long *flags)
__releases(&bucket->lock)
{ {
unsigned long __flags = *flags; unsigned long __flags = *flags;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment