Commit d2e9117c authored by John Heffner's avatar John Heffner Committed by David S. Miller

[NET]: Change type of owner in sock_lock_t to int, rename

The type of owner in sock_lock_t is currently (struct sock_iocb *),
presumably for historical reasons.  It is never used as this type, only
tested as NULL or set to (void *)1.  For clarity, this changes it to type
int, and renames to owned, to avoid any possible type casting errors.
Signed-off-by: default avatarJohn Heffner <jheffner@psc.edu>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 02b3d346
...@@ -76,10 +76,9 @@ ...@@ -76,10 +76,9 @@
* between user contexts and software interrupt processing, whereas the * between user contexts and software interrupt processing, whereas the
* mini-semaphore synchronizes multiple users amongst themselves. * mini-semaphore synchronizes multiple users amongst themselves.
*/ */
struct sock_iocb;
typedef struct { typedef struct {
spinlock_t slock; spinlock_t slock;
struct sock_iocb *owner; int owned;
wait_queue_head_t wq; wait_queue_head_t wq;
/* /*
* We express the mutex-alike socket_lock semantics * We express the mutex-alike socket_lock semantics
...@@ -737,7 +736,7 @@ static inline int sk_stream_wmem_schedule(struct sock *sk, int size) ...@@ -737,7 +736,7 @@ static inline int sk_stream_wmem_schedule(struct sock *sk, int size)
* Since ~2.3.5 it is also exclusive sleep lock serializing * Since ~2.3.5 it is also exclusive sleep lock serializing
* accesses from user process context. * accesses from user process context.
*/ */
#define sock_owned_by_user(sk) ((sk)->sk_lock.owner) #define sock_owned_by_user(sk) ((sk)->sk_lock.owned)
/* /*
* Macro so as to not evaluate some arguments when * Macro so as to not evaluate some arguments when
...@@ -748,7 +747,7 @@ static inline int sk_stream_wmem_schedule(struct sock *sk, int size) ...@@ -748,7 +747,7 @@ static inline int sk_stream_wmem_schedule(struct sock *sk, int size)
*/ */
#define sock_lock_init_class_and_name(sk, sname, skey, name, key) \ #define sock_lock_init_class_and_name(sk, sname, skey, name, key) \
do { \ do { \
sk->sk_lock.owner = NULL; \ sk->sk_lock.owned = 0; \
init_waitqueue_head(&sk->sk_lock.wq); \ init_waitqueue_head(&sk->sk_lock.wq); \
spin_lock_init(&(sk)->sk_lock.slock); \ spin_lock_init(&(sk)->sk_lock.slock); \
debug_check_no_locks_freed((void *)&(sk)->sk_lock, \ debug_check_no_locks_freed((void *)&(sk)->sk_lock, \
......
...@@ -1585,9 +1585,9 @@ void fastcall lock_sock_nested(struct sock *sk, int subclass) ...@@ -1585,9 +1585,9 @@ void fastcall lock_sock_nested(struct sock *sk, int subclass)
{ {
might_sleep(); might_sleep();
spin_lock_bh(&sk->sk_lock.slock); spin_lock_bh(&sk->sk_lock.slock);
if (sk->sk_lock.owner) if (sk->sk_lock.owned)
__lock_sock(sk); __lock_sock(sk);
sk->sk_lock.owner = (void *)1; sk->sk_lock.owned = 1;
spin_unlock(&sk->sk_lock.slock); spin_unlock(&sk->sk_lock.slock);
/* /*
* The sk_lock has mutex_lock() semantics here: * The sk_lock has mutex_lock() semantics here:
...@@ -1608,7 +1608,7 @@ void fastcall release_sock(struct sock *sk) ...@@ -1608,7 +1608,7 @@ void fastcall release_sock(struct sock *sk)
spin_lock_bh(&sk->sk_lock.slock); spin_lock_bh(&sk->sk_lock.slock);
if (sk->sk_backlog.tail) if (sk->sk_backlog.tail)
__release_sock(sk); __release_sock(sk);
sk->sk_lock.owner = NULL; sk->sk_lock.owned = 0;
if (waitqueue_active(&sk->sk_lock.wq)) if (waitqueue_active(&sk->sk_lock.wq))
wake_up(&sk->sk_lock.wq); wake_up(&sk->sk_lock.wq);
spin_unlock_bh(&sk->sk_lock.slock); spin_unlock_bh(&sk->sk_lock.slock);
......
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