Commit 9305cfa4 authored by Pavel Emelyanov's avatar Pavel Emelyanov Committed by David S. Miller

[AF_UNIX]: Make unix_tot_inflight counter non-atomic

This counter is _always_ modified under the unix_gc_lock spinlock, 
so its atomicity can be provided w/o additional efforts.
Signed-off-by: default avatarPavel Emelyanov <xemul@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8032b464
...@@ -12,7 +12,7 @@ extern void unix_gc(void); ...@@ -12,7 +12,7 @@ extern void unix_gc(void);
#define UNIX_HASH_SIZE 256 #define UNIX_HASH_SIZE 256
extern atomic_t unix_tot_inflight; extern unsigned int unix_tot_inflight;
struct unix_address { struct unix_address {
atomic_t refcnt; atomic_t refcnt;
......
...@@ -457,7 +457,7 @@ static int unix_release_sock (struct sock *sk, int embrion) ...@@ -457,7 +457,7 @@ static int unix_release_sock (struct sock *sk, int embrion)
* What the above comment does talk about? --ANK(980817) * What the above comment does talk about? --ANK(980817)
*/ */
if (atomic_read(&unix_tot_inflight)) if (unix_tot_inflight)
unix_gc(); /* Garbage collect fds */ unix_gc(); /* Garbage collect fds */
return 0; return 0;
......
...@@ -92,7 +92,7 @@ static LIST_HEAD(gc_inflight_list); ...@@ -92,7 +92,7 @@ static LIST_HEAD(gc_inflight_list);
static LIST_HEAD(gc_candidates); static LIST_HEAD(gc_candidates);
static DEFINE_SPINLOCK(unix_gc_lock); static DEFINE_SPINLOCK(unix_gc_lock);
atomic_t unix_tot_inflight = ATOMIC_INIT(0); unsigned int unix_tot_inflight;
static struct sock *unix_get_socket(struct file *filp) static struct sock *unix_get_socket(struct file *filp)
...@@ -133,7 +133,7 @@ void unix_inflight(struct file *fp) ...@@ -133,7 +133,7 @@ void unix_inflight(struct file *fp)
} else { } else {
BUG_ON(list_empty(&u->link)); BUG_ON(list_empty(&u->link));
} }
atomic_inc(&unix_tot_inflight); unix_tot_inflight++;
spin_unlock(&unix_gc_lock); spin_unlock(&unix_gc_lock);
} }
} }
...@@ -147,7 +147,7 @@ void unix_notinflight(struct file *fp) ...@@ -147,7 +147,7 @@ void unix_notinflight(struct file *fp)
BUG_ON(list_empty(&u->link)); BUG_ON(list_empty(&u->link));
if (atomic_dec_and_test(&u->inflight)) if (atomic_dec_and_test(&u->inflight))
list_del_init(&u->link); list_del_init(&u->link);
atomic_dec(&unix_tot_inflight); unix_tot_inflight--;
spin_unlock(&unix_gc_lock); spin_unlock(&unix_gc_lock);
} }
} }
......
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