summaryrefslogtreecommitdiff
path: root/drivers/input/misc/uinput.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2018-10-05 03:50:48 +0300
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2018-10-05 21:42:32 +0300
commitcecf10704899467a787975e3d94a1f0129b9688e (patch)
tree07edd95c8cff1b92df3b63907f3a5a4bdf808574 /drivers/input/misc/uinput.c
parent36d2582ff235b4e01ad64a734c877a52dc762d9c (diff)
downloadlinux-cecf10704899467a787975e3d94a1f0129b9688e.tar.xz
Input: uinput - add a schedule point in uinput_inject_events()
Large writes to uinput interface may cause rcu stalls. Let's add cond_resched() to the loop to avoid this. Reviewed-by: Paul E. McKenney <paulmck@linux.ibm.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/misc/uinput.c')
-rw-r--r--drivers/input/misc/uinput.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index eb14ddf69346..8ec483e8688b 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -598,6 +598,7 @@ static ssize_t uinput_inject_events(struct uinput_device *udev,
input_event(udev->dev, ev.type, ev.code, ev.value);
bytes += input_event_size();
+ cond_resched();
}
return bytes;