From 23d1d708ac770158eedc555f92dba9d8c047cc39 Mon Sep 17 00:00:00 2001 From: Weston Andros Adamson Date: Tue, 23 Oct 2012 10:43:39 -0400 Subject: [PATCH] --- yaml --- r: 346559 b: refs/heads/master c: 1b7a1819078c68c4df4bba90f76b8113a08460de h: refs/heads/master i: 346557: e368958ad0a12b943dfa962563130406a47c1705 346555: c0d60a5dcaffb02a323d0fa105da11902afba4e9 346551: a77faa67df66ad08be5dea8c2981e1c0d42f535a 346543: 97e044248a0cb635aa42bd0e21af45fe651bde49 346527: 1e9245aca6a57a7af61f58df95887051fb477fb4 346495: 8fe7baf35e4f3852ab658057c6bcc126244bb16f v: v3 --- [refs] | 2 +- trunk/net/sunrpc/svcsock.c | 6 +++++- trunk/net/sunrpc/xprtsock.c | 7 ++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index c84c2b311681..974a81e36b78 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1bd58aaff44485ec9e3640af350f6ba1b33e2bec +refs/heads/master: 1b7a1819078c68c4df4bba90f76b8113a08460de diff --git a/trunk/net/sunrpc/svcsock.c b/trunk/net/sunrpc/svcsock.c index 03827cef1fa7..cc3020d16789 100644 --- a/trunk/net/sunrpc/svcsock.c +++ b/trunk/net/sunrpc/svcsock.c @@ -84,7 +84,11 @@ static struct lock_class_key svc_slock_key[2]; static void svc_reclassify_socket(struct socket *sock) { struct sock *sk = sock->sk; - BUG_ON(sock_owned_by_user(sk)); + + WARN_ON_ONCE(sock_owned_by_user(sk)); + if (sock_owned_by_user(sk)) + return; + switch (sk->sk_family) { case AF_INET: sock_lock_init_class_and_name(sk, "slock-AF_INET-NFSD", diff --git a/trunk/net/sunrpc/xprtsock.c b/trunk/net/sunrpc/xprtsock.c index 75853cabf4c9..46c1a8798ed8 100644 --- a/trunk/net/sunrpc/xprtsock.c +++ b/trunk/net/sunrpc/xprtsock.c @@ -1746,7 +1746,6 @@ static inline void xs_reclassify_socketu(struct socket *sock) { struct sock *sk = sock->sk; - BUG_ON(sock_owned_by_user(sk)); sock_lock_init_class_and_name(sk, "slock-AF_LOCAL-RPC", &xs_slock_key[1], "sk_lock-AF_LOCAL-RPC", &xs_key[1]); } @@ -1755,7 +1754,6 @@ static inline void xs_reclassify_socket4(struct socket *sock) { struct sock *sk = sock->sk; - BUG_ON(sock_owned_by_user(sk)); sock_lock_init_class_and_name(sk, "slock-AF_INET-RPC", &xs_slock_key[0], "sk_lock-AF_INET-RPC", &xs_key[0]); } @@ -1764,13 +1762,16 @@ static inline void xs_reclassify_socket6(struct socket *sock) { struct sock *sk = sock->sk; - BUG_ON(sock_owned_by_user(sk)); sock_lock_init_class_and_name(sk, "slock-AF_INET6-RPC", &xs_slock_key[1], "sk_lock-AF_INET6-RPC", &xs_key[1]); } static inline void xs_reclassify_socket(int family, struct socket *sock) { + WARN_ON_ONCE(sock_owned_by_user(sock->sk)); + if (sock_owned_by_user(sock->sk)) + return; + switch (family) { case AF_LOCAL: xs_reclassify_socketu(sock);