projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
auxdisplay: Remove in_interrupt() usage.
[linux-2.6-microblaze.git]
/
drivers
/
auxdisplay
/
charlcd.c
diff --git
a/drivers/auxdisplay/charlcd.c
b/drivers/auxdisplay/charlcd.c
index
f43430e
..
24fd6f3
100644
(file)
--- a/
drivers/auxdisplay/charlcd.c
+++ b/
drivers/auxdisplay/charlcd.c
@@
-470,12
+470,14
@@
static ssize_t charlcd_write(struct file *file, const char __user *buf,
char c;
for (; count-- > 0; (*ppos)++, tmp++) {
char c;
for (; count-- > 0; (*ppos)++, tmp++) {
- if (
!in_interrupt() && (((count + 1) & 0x1f) == 0))
+ if (
((count + 1) & 0x1f) == 0) {
/*
/*
- * let's be a little nice with other processes
- * that need some CPU
+ * charlcd_write() is invoked as a VFS->write() callback
+ * and as such it is always invoked from preemptible
+ * context and may sleep.
*/
*/
- schedule();
+ cond_resched();
+ }
if (get_user(c, tmp))
return -EFAULT;
if (get_user(c, tmp))
return -EFAULT;
@@
-537,12
+539,8
@@
static void charlcd_puts(struct charlcd *lcd, const char *s)
int count = strlen(s);
for (; count-- > 0; tmp++) {
int count = strlen(s);
for (; count-- > 0; tmp++) {
- if (!in_interrupt() && (((count + 1) & 0x1f) == 0))
- /*
- * let's be a little nice with other processes
- * that need some CPU
- */
- schedule();
+ if (((count + 1) & 0x1f) == 0)
+ cond_resched();
charlcd_write_char(lcd, *tmp);
}
charlcd_write_char(lcd, *tmp);
}