Re: [patch 1/3] tty: resolve tty contention between kernel and user space
From: Okash Khawaja
Date: Mon Jul 10 2017 - 12:12:41 EST
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.khawaja@xxxxxxxxx> 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.khawaja@xxxxxxxxx> 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