mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 12:57:06 +09:00
UPSTREAM: [media] lirc: might sleep error in lirc_dev_fop_read
[ 101.457944] ------------[ cut here ]------------
[ 101.457954] WARNING: CPU: 3 PID: 1819 at kernel/sched/core.c:7708 __might_sleep+0x7e/0x80
[ 101.457960] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0364bc2>] lirc_dev_fop_read+0x292/0x4e0 [lirc_dev]
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
(cherry picked from commit 12accdcb92)
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
This commit is contained in:
@@ -681,7 +681,6 @@ ssize_t lirc_dev_fop_read(struct file *file,
|
||||
* between while condition checking and scheduling)
|
||||
*/
|
||||
add_wait_queue(&ir->buf->wait_poll, &wait);
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
/*
|
||||
* while we didn't provide 'length' bytes, device is opened in blocking
|
||||
@@ -706,13 +705,13 @@ ssize_t lirc_dev_fop_read(struct file *file,
|
||||
}
|
||||
|
||||
mutex_unlock(&ir->irctl_lock);
|
||||
schedule();
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
schedule();
|
||||
set_current_state(TASK_RUNNING);
|
||||
|
||||
if (mutex_lock_interruptible(&ir->irctl_lock)) {
|
||||
ret = -ERESTARTSYS;
|
||||
remove_wait_queue(&ir->buf->wait_poll, &wait);
|
||||
set_current_state(TASK_RUNNING);
|
||||
goto out_unlocked;
|
||||
}
|
||||
|
||||
@@ -732,7 +731,6 @@ ssize_t lirc_dev_fop_read(struct file *file,
|
||||
}
|
||||
|
||||
remove_wait_queue(&ir->buf->wait_poll, &wait);
|
||||
set_current_state(TASK_RUNNING);
|
||||
|
||||
out_locked:
|
||||
mutex_unlock(&ir->irctl_lock);
|
||||
|
||||
Reference in New Issue
Block a user