On Mon, Jul 10, 2017 at 06:21:37PM +0300, Andy Shevchenko wrote: > On Mon, Jul 10, 2017 at 11:31 AM, Okash Khawaja <okash.khaw...@gmail.com> > wrote: > > On Sun, Jul 09, 2017 at 06:04:17PM +0300, Andy Shevchenko wrote: > >> On Sun, Jul 9, 2017 at 2:41 PM, Okash Khawaja <okash.khaw...@gmail.com> > >> wrote: > >> > >> > +struct tty_struct *tty_kopen(dev_t device) > >> > +{ > >> > + struct tty_struct *tty; > >> > + struct tty_driver *driver = NULL; > >> > + int index = -1; > >> > + > >> > + mutex_lock(&tty_mutex); > >> > + driver = tty_lookup_driver(device, NULL, &index); > >> > + if (IS_ERR(driver)) { > >> > >> > + mutex_unlock(&tty_mutex); > >> > + return ERR_CAST(driver); > >> > >> Hmm... perhaps > >> > >> tty = ERR_CAST(driver); > >> goto out_unlock; > >> > >> See below for further details. > >> > > Sorry missed this one out. Since tty_lookup_driver has failed, we don't > > need to down the refcount on driver. So we can return here, without > > going to out_unlock. > > Yeah, and my point is to use goto with the symmetric giveups of lock > and reference. Ah okay I see your point. Sure, I don't mind either way. However, this code closely follows tty_open_by_driver, so I have tried to keep the same pattern for sake of consistency :)
Thanks, Okash