[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20141002135805.GF6324@worktop.programming.kicks-ass.net>
Date: Thu, 2 Oct 2014 15:58:05 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Peter Hurley <peter@...leysoftware.com>
Cc: Fengguang Wu <fengguang.wu@...el.com>,
Jet Chen <jet.chen@...el.com>, Su Tao <tao.su@...el.com>,
Yuanhan Liu <yuanhan.liu@...el.com>, LKP <lkp@...org>,
linux-kernel@...r.kernel.org,
Marcel Holtmann <marcel@...tmann.org>, oleg@...hat.com
Subject: Re: [rfcomm_run] WARNING: CPU: 1 PID: 79 at kernel/sched/core.c:7156
__might_sleep()
On Thu, Oct 02, 2014 at 03:52:50PM +0200, Peter Zijlstra wrote:
> > If yes, then wakeups from signals don't work either, right?
>
> Its a kthread, there should not be any signals.
That said, in the tty patch we do appear to have this problem.
Oleg, do we want something like the below on top to make that work
again?
---
--- a/kernel/sched/wait.c
+++ b/kernel/sched/wait.c
@@ -326,8 +326,10 @@ long wait_woken(wait_queue_t *wait, unsi
* woken_wake_function() such that if we observe WQ_FLAG_WOKEN we must
* also observe all state before the wakeup.
*/
- if (!(wait->flags & WQ_FLAG_WOKEN))
- timeout = schedule_timeout(timeout);
+ if (!(wait->flags & WQ_FLAG_WOKEN)) {
+ if (___wait_is_interruptible(mode) && !signal_pending_state(mode, current))
+ timeout = schedule_timeout(timeout);
+ }
__set_current_state(TASK_RUNNING);
/*
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists