On Thu, 2016-04-07 at 15:30 -0700, Eric Dumazet wrote: > But... this wont solve the compiler error ? > > include/net/sock.h: In function 'lockdep_sock_is_held': > include/net/sock.h:1367:2: error: implicit declaration of function > 'lockdep_is_held' [-Werror=implicit-function-declaration] > In file included from security/lsm_audit.c:20:0: > include/net/sock.h: In function 'lockdep_sock_is_held': > include/net/sock.h:1367:2: error: implicit declaration of function > 'lockdep_is_held' [-Werror=implicit-function-declaration] > > $ egrep "LOCKDEP|PROVE" .config > CONFIG_LOCKDEP_SUPPORT=y > # CONFIG_PROVE_LOCKING is not set > # CONFIG_PROVE_RCU is not set >
Better use something like : diff --git a/include/net/sock.h b/include/net/sock.h index eb2d7c3e120b..ab6b6b9469ad 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1360,13 +1360,15 @@ do { \ lockdep_init_map(&(sk)->sk_lock.dep_map, (name), (key), 0); \ } while (0) -static bool lockdep_sock_is_held(const struct sock *csk) +#ifdef CONFIG_PROVE_RCU +static inline bool lockdep_sock_is_held(const struct sock *csk) { struct sock *sk = (struct sock *)csk; return lockdep_is_held(&sk->sk_lock) || lockdep_is_held(&sk->sk_lock.slock); } +#endif void lock_sock_nested(struct sock *sk, int subclass);