Skip to contentSkip to conversation

Input: evdev - add a schedule point in evdev_write()

PATCH In review Dmitry Torokhov 2 participants 2 messages Oct 5, 2018

Subsystems (2)
lore
Share & tools
lore

Dmitry Torokhov

author maintainer
#0 lore raw

PATCH 1/1 Input: evdev - add a schedule point in evdev_write()

Large writes to evdev interface may cause rcu stalls. Let's add cond_resched() to the loop to avoid this.

---
 drivers/input/evdev.c | 1 +
 1 file changed, 1 insertion(+)
drivers/input/evdev.c +1 -0
index 370206f987f9..f48369d6f3a0 100644
@@ -564,6 +564,7 @@ static ssize_t evdev_write(struct file *file, const char __user *buffer,
 
 		input_inject_event(&evdev->handle,
 				   event.type, event.code, event.value);
+		cond_resched();
 	}
 
  out:
Signature · 5 lines
2.19.0.605.g01d371f741-goog


-- 
Dmitry
Reviewed-by on v1 1/1
#1 lore raw
Quoted 4 lines · Dmitry Torokhov

Large writes to evdev interface may cause rcu stalls. Let's add cond_resched() to the loop to avoid this.

Quoted 23 lines
---
 drivers/input/evdev.c | 1 +
 1 file changed, 1 insertion(+)
drivers/input/evdev.c +1 -0
index 370206f987f9..f48369d6f3a0 100644
@@ -564,6 +564,7 @@ static ssize_t evdev_write(struct file *file, const char __user *buffer,
 
 		input_inject_event(&evdev->handle,
 				   event.type, event.code, event.value);
+		cond_resched();
 	}
 
  out:
Signature · 5 lines
2.19.0.605.g01d371f741-goog


-- 
Dmitry