Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ extern void unix_gc(void);

#define UNIX_HASH_SIZE	256

extern atomic_t unix_tot_inflight;
extern unsigned int unix_tot_inflight;

struct unix_address {
	atomic_t	refcnt;
+1 −1
Original line number Diff line number Diff line
@@ -457,7 +457,7 @@ static int unix_release_sock (struct sock *sk, int embrion)
	 *	  What the above comment does talk about? --ANK(980817)
	 */

	if (atomic_read(&unix_tot_inflight))
	if (unix_tot_inflight)
		unix_gc();		/* Garbage collect fds */

	return 0;
+3 −3
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ static LIST_HEAD(gc_inflight_list);
static LIST_HEAD(gc_candidates);
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)
@@ -133,7 +133,7 @@ void unix_inflight(struct file *fp)
		} else {
			BUG_ON(list_empty(&u->link));
		}
		atomic_inc(&unix_tot_inflight);
		unix_tot_inflight++;
		spin_unlock(&unix_gc_lock);
	}
}
@@ -147,7 +147,7 @@ void unix_notinflight(struct file *fp)
		BUG_ON(list_empty(&u->link));
		if (atomic_dec_and_test(&u->inflight))
			list_del_init(&u->link);
		atomic_dec(&unix_tot_inflight);
		unix_tot_inflight--;
		spin_unlock(&unix_gc_lock);
	}
}