From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754890AbcBHC14 (ORCPT ); Sun, 7 Feb 2016 21:27:56 -0500 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:57514 "EHLO out2-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754671AbcBHC1y (ORCPT ); Sun, 7 Feb 2016 21:27:54 -0500 X-Greylist: delayed 344 seconds by postgrey-1.27 at vger.kernel.org; Sun, 07 Feb 2016 21:27:54 EST X-Sasl-enc: 7wUVgXhlkcC7t7dixevkuePiayEfKSFNn1Z3vocPaKr7 1454898129 Date: Sun, 7 Feb 2016 18:21:52 -0800 From: Greg KH To: Stephen Rothwell , Peter Hurley Cc: linux-next@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: linux-next: manual merge of the tty tree with the tty.current tree Message-ID: <20160208022152.GA21591@kroah.com> References: <20160208131629.20a16097@canb.auug.org.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160208131629.20a16097@canb.auug.org.au> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 08, 2016 at 01:16:29PM +1100, Stephen Rothwell wrote: > Hi Greg, > > Today's linux-next merge of the tty tree got a conflict in: > > drivers/tty/tty_io.c > > between commit: > > e9036d066236 ("tty: Drop krefs for interrupted tty lock") > > from the tty.current tree and commit: > > d6203d0c7b73 ("tty: Refactor tty_open()") > > from the tty tree. > > I fixed it up (I think - see below) and can carry the fix as necessary > (no action is required). > > -- > Cheers, > Stephen Rothwell > > diff --cc drivers/tty/tty_io.c > index a7eacef1bd22,8d26ed79bb4c..000000000000 > --- a/drivers/tty/tty_io.c > +++ b/drivers/tty/tty_io.c > @@@ -2004,6 -2009,69 +2009,68 @@@ static struct tty_driver *tty_lookup_dr > } > > /** > + * tty_open_by_driver - open a tty device > + * @device: dev_t of device to open > + * @inode: inode of device file > + * @filp: file pointer to tty > + * > + * Performs the driver lookup, checks for a reopen, or otherwise > + * performs the first-time tty initialization. > + * > + * Returns the locked initialized or re-opened &tty_struct > + * > + * Claims the global tty_mutex to serialize: > + * - concurrent first-time tty initialization > + * - concurrent tty driver removal w/ lookup > + * - concurrent tty removal from driver table > + */ > + static struct tty_struct *tty_open_by_driver(dev_t device, struct inode *inode, > + struct file *filp) > + { > + struct tty_struct *tty; > + struct tty_driver *driver = NULL; > + int index = -1; > + int retval; > + > + mutex_lock(&tty_mutex); > + driver = tty_lookup_driver(device, filp, &index); > + if (IS_ERR(driver)) { > + mutex_unlock(&tty_mutex); > + return ERR_CAST(driver); > + } > + > + /* check whether we're reopening an existing tty */ > + tty = tty_driver_lookup_tty(driver, inode, index); > + if (IS_ERR(tty)) { > + mutex_unlock(&tty_mutex); > + goto out; > + } > + > + if (tty) { > + mutex_unlock(&tty_mutex); > + retval = tty_lock_interruptible(tty); > ++ tty_kref_put(tty); /* drop kref from tty_driver_lookup_tty() */ > + if (retval) { > + if (retval == -EINTR) > + retval = -ERESTARTSYS; > + tty = ERR_PTR(retval); > + goto out; > + } > - /* safe to drop the kref from tty_driver_lookup_tty() */ > - tty_kref_put(tty); > + retval = tty_reopen(tty); > + if (retval < 0) { > + tty_unlock(tty); > + tty = ERR_PTR(retval); > + } > + } else { /* Returns with the tty_lock held for now */ > + tty = tty_init_dev(driver, index); > + mutex_unlock(&tty_mutex); > + } > + out: > + tty_driver_kref_put(driver); > + return tty; > + } > + > + /** > * tty_open - open a tty device > * @inode: inode of device file > * @filp: file pointer to tty Peter warned me this was going to happen... Peter, is the merge above correct? thanks, greg k-h