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

Commit 7298964b authored by Niklas Cassel's avatar Niklas Cassel Committed by android-build-merger
Browse files

locking/rwsem: Fix down_write_killable() for CONFIG_RWSEM_GENERIC_SPINLOCK=y

am: c4060965

Change-Id: I2ac74fa5f03a3dff0b45e91d8be4e80c9c70da98
parents 7135bd3d c4060965
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -216,10 +216,8 @@ int __sched __down_write_common(struct rw_semaphore *sem, int state)
		 */
		if (sem->count == 0)
			break;
		if (signal_pending_state(state, current)) {
			ret = -EINTR;
			goto out;
		}
		if (signal_pending_state(state, current))
			goto out_nolock;
		set_task_state(tsk, state);
		raw_spin_unlock_irqrestore(&sem->wait_lock, flags);
		schedule();
@@ -227,12 +225,19 @@ int __sched __down_write_common(struct rw_semaphore *sem, int state)
	}
	/* got the lock */
	sem->count = -1;
out:
	list_del(&waiter.list);

	raw_spin_unlock_irqrestore(&sem->wait_lock, flags);

	return ret;

out_nolock:
	list_del(&waiter.list);
	if (!list_empty(&sem->wait_list))
		__rwsem_do_wake(sem, 1);
	raw_spin_unlock_irqrestore(&sem->wait_lock, flags);

	return -EINTR;
}

void __sched __down_write(struct rw_semaphore *sem)