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

Commit 242ac985 authored by Anurag Singh's avatar Anurag Singh Committed by Mark Salyzyn
Browse files

input: evdev: Move wake_lock_destroy call



Calling wake_lock_destroy from inside a spinlock
protected region (or, in general, from atomic context)
leads to a 'scheduling while atomic bug' because the
internal wakeup source deletion logic calls
synchronize_rcu, which can sleep. Moreover,
since the interal lists are already protected with
RCUs and spinlocks, putting the wake_lock_destroy
call in a spinlock is redundant.

Change-Id: I10a2239b664a5f43e54495f24fe588fb09282305
Signed-off-by: default avatarAnurag Singh <anursing@codeaurora.org>
parent 997ca62f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -851,8 +851,8 @@ static int evdev_disable_suspend_block(struct evdev *evdev,

	spin_lock_irq(&client->buffer_lock);
	client->use_wake_lock = false;
	wake_lock_destroy(&client->wake_lock);
	spin_unlock_irq(&client->buffer_lock);
	wake_lock_destroy(&client->wake_lock);

	return 0;
}