Thanks Peter. Well. I'am afraid my testing was wrong, because Karel reports it fixes the problem... But. I applied this patch to my 3.11 tree (last commit is bff157b3a) which also has the additional patch (03e12617 "tty: disassociate_ctty() sends the extra SIGCONT"), and TET_CONFIG=CFG TET_ROOT=. ./T.tcflush 4 still fails... T.tcflush was compiled on another (Karel's) machine, perhaps there is something in libc, I do not know. So let me ask just in case, I assume the fix below doesn't depend on other changes I could miss? I'll retest after git-pull and report... On 09/25, Peter Hurley wrote: > > Commit 'e7f3880cd9b98c5bf9391ae7acdec82b75403776' > tty: Fix recursive deadlock in tty_perform_flush() > introduced a regression where tcflush() does not generate > SIGTTOU for background process groups. > > Make sure ioctl(TCFLSH) calls tty_check_change() when > invoked from the line discipline. > > Cc: stable@xxxxxxxxxxxxxxx # v3.10+ > Reported-by: Oleg Nesterov <oleg@xxxxxxxxxx> Actually Reported-by: Karel Srot <ksrot@xxxxxxxxxx> my fault, forgot to mention this. > Signed-off-by: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> > --- > drivers/tty/tty_ioctl.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/tty/tty_ioctl.c b/drivers/tty/tty_ioctl.c > index 3500d41..088b4ca 100644 > --- a/drivers/tty/tty_ioctl.c > +++ b/drivers/tty/tty_ioctl.c > @@ -1201,6 +1201,9 @@ int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file, > } > return 0; > case TCFLSH: > + retval = tty_check_change(tty); > + if (retval) > + return retval; > return __tty_perform_flush(tty, arg); > default: > /* Try the mode commands */ > -- > 1.8.1.2 > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html