Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753427AbaJQH6K (ORCPT ); Fri, 17 Oct 2014 03:58:10 -0400 Received: from a.ns.miles-group.at ([95.130.255.143]:65276 "EHLO radon.swed.at" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750851AbaJQH6G (ORCPT ); Fri, 17 Oct 2014 03:58:06 -0400 Message-ID: <5440CC07.3000205@nod.at> Date: Fri, 17 Oct 2014 09:57:59 +0200 From: Richard Weinberger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 MIME-Version: 1.0 To: Peter Hurley , Greg Kroah-Hartman CC: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby , One Thousand Gnomes , Jeff Dike , user-mode-linux-devel@lists.sourceforge.net Subject: Re: [PATCH -next 04/10] uml: Fix unsafe pid reference to foreground process group References: <1413485990-16855-1-git-send-email-peter@hurleysoftware.com> <1413485990-16855-5-git-send-email-peter@hurleysoftware.com> In-Reply-To: <1413485990-16855-5-git-send-email-peter@hurleysoftware.com> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 16.10.2014 um 20:59 schrieb Peter Hurley: > Although the tty core maintains a pid reference for the foreground > process group, if the foreground process group is changed that > pid reference is dropped. Thus, the pid reference used for signalling > could become stale. > > Safely obtain a pid reference to the foreground process group and > release the reference after signalling is complete. > > cc: Jeff Dike > cc: Richard Weinberger > cc: user-mode-linux-devel@lists.sourceforge.net > Signed-off-by: Peter Hurley Acked-by: Richard Weinberger > --- > arch/um/drivers/line.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c > index 8035145..6208702 100644 > --- a/arch/um/drivers/line.c > +++ b/arch/um/drivers/line.c > @@ -632,6 +632,7 @@ static irqreturn_t winch_interrupt(int irq, void *data) > int fd = winch->fd; > int err; > char c; > + struct pid *pgrp; > > if (fd != -1) { > err = generic_read(fd, &c, NULL); > @@ -657,7 +658,10 @@ static irqreturn_t winch_interrupt(int irq, void *data) > if (line != NULL) { > chan_window_size(line, &tty->winsize.ws_row, > &tty->winsize.ws_col); > - kill_pgrp(tty->pgrp, SIGWINCH, 1); > + pgrp = tty_get_pgrp(tty); > + if (pgrp) > + kill_pgrp(pgrp, SIGWINCH, 1); > + put_pid(pgrp); > } > tty_kref_put(tty); > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/