[RFC PATCH 11/18] jffs2: Convert jffs2_gcd_mtd kthread into the iterant API
Oleg Nesterov
oleg at redhat.com
Sat Jun 6 14:16:48 PDT 2015
On 06/05, Petr Mladek wrote:
>
> [*] In fact, there was a bug in the original code. It tried to process
> a non-existing signal when the system was freezing. See the common
> check for pending signal and freezing.
And another bug afaics:
> - case SIGSTOP:
> - jffs2_dbg(1, "%s(): SIGSTOP received\n",
> - __func__);
> - set_current_state(TASK_STOPPED);
> - schedule();
> - break;
This is obviously racy, we can miss SIGCONT.
Still I personally dislike the new kthread_sigaction() API. I agree,
a couple if signal helpers for kthreads make sense. Say,
void kthread_do_signal_stop(void)
{
spin_lock_irq(&curtent->sighand->siglock);
if (current->jobctl & JOBCTL_STOP_DEQUEUED)
__set_current_state(TASK_STOPPED);
spin_unlock_irq(¤t->sighand->siglock);
schedule();
}
and probably even "int kthread_signal_deque(void)".
But personally I do not think kthread_do_signal() makes a lot of sense...
Oleg.
More information about the linux-mtd
mailing list