mirror of https://gitee.com/openkylin/linux.git
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,
|
||||
size_t new_size);
|
||||
#ifdef CONFIG_PROVE_LOCKING
|
||||
int (*mutex_is_held)(void);
|
||||
int (*mutex_is_held)(void *parent);
|
||||
void *parent;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#ifdef CONFIG_PROVE_LOCKING
|
||||
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);
|
||||
#endif
|
||||
|
@ -618,7 +618,7 @@ EXPORT_SYMBOL_GPL(rhashtable_destroy);
|
|||
#define TEST_NEXPANDS 4
|
||||
|
||||
#ifdef CONFIG_PROVE_LOCKING
|
||||
static int test_mutex_is_held(void)
|
||||
static int test_mutex_is_held(void *parent)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -154,7 +154,7 @@ static unsigned int nft_hash_privsize(const struct nlattr * const nla[])
|
|||
}
|
||||
|
||||
#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);
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ DEFINE_MUTEX(nl_sk_hash_lock);
|
|||
EXPORT_SYMBOL_GPL(nl_sk_hash_lock);
|
||||
|
||||
#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)
|
||||
return lockdep_is_held(&nl_sk_hash_lock) || lockdep_is_held(&nl_table_lock);
|
||||
|
|
Loading…
Reference in New Issue