Messages in this thread | | | Date | Mon, 14 Nov 2022 06:44:29 +0100 | Subject | Re: [PATCH] tty: synclink_gt: release resources when synclink_gt driver open failed | From | Jiri Slaby <> |
| |
On 14. 11. 22, 2:07, Zhengchao Shao wrote: > When synclink_gt driver open failed, it doesn't release resources.
But hdlc_close() does. Now, you call it (apart from the TTY layer) too.
> Compile tested only.
Hmm, NACK.
> Fixes: d4c63b7c7450 ("synclink_gt fix module reference") > Fixes: 705b6c7b34f2 ("[PATCH] new driver synclink_gt") > Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com> > --- > drivers/tty/synclink_gt.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c > index 25e9befdda3a..4dea52486410 100644 > --- a/drivers/tty/synclink_gt.c > +++ b/drivers/tty/synclink_gt.c > @@ -1441,14 +1441,15 @@ static int hdlcdev_open(struct net_device *dev) > /* generic HDLC layer open processing */ > rc = hdlc_open(dev); > if (rc) > - return rc; > + goto err_open; > > /* arbitrate between network and tty opens */ > spin_lock_irqsave(&info->netlock, flags); > if (info->port.count != 0 || info->netcount != 0) { > DBGINFO(("%s hdlc_open busy\n", dev->name)); > spin_unlock_irqrestore(&info->netlock, flags); > - return -EBUSY; > + rc = -EBUSY; > + goto err_open_busy; > } > info->netcount=1; > spin_unlock_irqrestore(&info->netlock, flags); > @@ -1458,7 +1459,7 @@ static int hdlcdev_open(struct net_device *dev) > spin_lock_irqsave(&info->netlock, flags); > info->netcount=0; > spin_unlock_irqrestore(&info->netlock, flags); > - return rc; > + goto err_open_busy; > } > > /* assert RTS and DTR, apply hardware settings */ > @@ -1478,6 +1479,12 @@ static int hdlcdev_open(struct net_device *dev) > else > netif_carrier_off(dev); > return 0; > + > +err_open_busy: > + hdlc_close(dev); > +err_open: > + module_put(THIS_MODULE); > + return rc; > } > > /**
-- js suse labs
| |