diff options
| author | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
|---|---|---|
| committer | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
| commit | 62910554656cdcd6b6f84a5154c4155aae4ca231 (patch) | |
| tree | dcf14004f6fd2ef7154362ff948bfeba0f3ea92d /lib/rwsem-spinlock.c | |
| parent | 22265a5c3c103cf8c50be62e6c90d045eb649e6d (diff) | |
| parent | ab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff) | |
| download | olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.tar.xz olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.zip  | |
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts:
	Documentation/feature-removal-schedule.txt
	net/ipv6/netfilter/ip6t_REJECT.c
	net/netfilter/xt_limit.c
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'lib/rwsem-spinlock.c')
| -rw-r--r-- | lib/rwsem-spinlock.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/rwsem-spinlock.c b/lib/rwsem-spinlock.c index ccf95bff798..ffc9fc7f3b0 100644 --- a/lib/rwsem-spinlock.c +++ b/lib/rwsem-spinlock.c @@ -143,13 +143,14 @@ void __sched __down_read(struct rw_semaphore *sem)  {  	struct rwsem_waiter waiter;  	struct task_struct *tsk; +	unsigned long flags; -	spin_lock_irq(&sem->wait_lock); +	spin_lock_irqsave(&sem->wait_lock, flags);  	if (sem->activity >= 0 && list_empty(&sem->wait_list)) {  		/* granted */  		sem->activity++; -		spin_unlock_irq(&sem->wait_lock); +		spin_unlock_irqrestore(&sem->wait_lock, flags);  		goto out;  	} @@ -164,7 +165,7 @@ void __sched __down_read(struct rw_semaphore *sem)  	list_add_tail(&waiter.list, &sem->wait_list);  	/* we don't need to touch the semaphore struct anymore */ -	spin_unlock_irq(&sem->wait_lock); +	spin_unlock_irqrestore(&sem->wait_lock, flags);  	/* wait to be given the lock */  	for (;;) { @@ -209,13 +210,14 @@ void __sched __down_write_nested(struct rw_semaphore *sem, int subclass)  {  	struct rwsem_waiter waiter;  	struct task_struct *tsk; +	unsigned long flags; -	spin_lock_irq(&sem->wait_lock); +	spin_lock_irqsave(&sem->wait_lock, flags);  	if (sem->activity == 0 && list_empty(&sem->wait_list)) {  		/* granted */  		sem->activity = -1; -		spin_unlock_irq(&sem->wait_lock); +		spin_unlock_irqrestore(&sem->wait_lock, flags);  		goto out;  	} @@ -230,7 +232,7 @@ void __sched __down_write_nested(struct rw_semaphore *sem, int subclass)  	list_add_tail(&waiter.list, &sem->wait_list);  	/* we don't need to touch the semaphore struct anymore */ -	spin_unlock_irq(&sem->wait_lock); +	spin_unlock_irqrestore(&sem->wait_lock, flags);  	/* wait to be given the lock */  	for (;;) {  |