mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
rhashtable: Add parent argument to mutex_is_held
Currently mutex_is_held can only test locks in the that are global since it takes no arguments. This prevents rhashtable from being used in places where locks are lock, e.g., per-namespace locks. This patch adds a parent field to mutex_is_held and rhashtable_params so that local locks can be used (and tested). Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1b2f309d70
commit
7b4ce23534
@ -66,7 +66,8 @@ struct rhashtable_params {
|
|||||||
bool (*shrink_decision)(const struct rhashtable *ht,
|
bool (*shrink_decision)(const struct rhashtable *ht,
|
||||||
size_t new_size);
|
size_t new_size);
|
||||||
#ifdef CONFIG_PROVE_LOCKING
|
#ifdef CONFIG_PROVE_LOCKING
|
||||||
int (*mutex_is_held)(void);
|
int (*mutex_is_held)(void *parent);
|
||||||
|
void *parent;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#ifdef CONFIG_PROVE_LOCKING
|
#ifdef CONFIG_PROVE_LOCKING
|
||||||
int lockdep_rht_mutex_is_held(const struct rhashtable *ht)
|
int lockdep_rht_mutex_is_held(const struct rhashtable *ht)
|
||||||
{
|
{
|
||||||
return ht->p.mutex_is_held();
|
return ht->p.mutex_is_held(ht->p.parent);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(lockdep_rht_mutex_is_held);
|
EXPORT_SYMBOL_GPL(lockdep_rht_mutex_is_held);
|
||||||
#endif
|
#endif
|
||||||
@ -618,7 +618,7 @@ EXPORT_SYMBOL_GPL(rhashtable_destroy);
|
|||||||
#define TEST_NEXPANDS 4
|
#define TEST_NEXPANDS 4
|
||||||
|
|
||||||
#ifdef CONFIG_PROVE_LOCKING
|
#ifdef CONFIG_PROVE_LOCKING
|
||||||
static int test_mutex_is_held(void)
|
static int test_mutex_is_held(void *parent)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ static unsigned int nft_hash_privsize(const struct nlattr * const nla[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PROVE_LOCKING
|
#ifdef CONFIG_PROVE_LOCKING
|
||||||
static int lockdep_nfnl_lock_is_held(void)
|
static int lockdep_nfnl_lock_is_held(void *parent)
|
||||||
{
|
{
|
||||||
return lockdep_nfnl_is_held(NFNL_SUBSYS_NFTABLES);
|
return lockdep_nfnl_is_held(NFNL_SUBSYS_NFTABLES);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ DEFINE_MUTEX(nl_sk_hash_lock);
|
|||||||
EXPORT_SYMBOL_GPL(nl_sk_hash_lock);
|
EXPORT_SYMBOL_GPL(nl_sk_hash_lock);
|
||||||
|
|
||||||
#ifdef CONFIG_PROVE_LOCKING
|
#ifdef CONFIG_PROVE_LOCKING
|
||||||
static int lockdep_nl_sk_hash_is_held(void)
|
static int lockdep_nl_sk_hash_is_held(void *parent)
|
||||||
{
|
{
|
||||||
if (debug_locks)
|
if (debug_locks)
|
||||||
return lockdep_is_held(&nl_sk_hash_lock) || lockdep_is_held(&nl_table_lock);
|
return lockdep_is_held(&nl_sk_hash_lock) || lockdep_is_held(&nl_table_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user