Re: [PATCH v2 0/3] USB: serial: return errors from break handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 06, 2023 at 01:39:03PM +0200, Johan Hovold wrote:
> On Tue, Jun 06, 2023 at 01:18:19PM +0200, Oliver Neukum wrote:
> > On 04.06.23 14:35, Johan Hovold wrote:
> > > This series starts returning errors from break handling and also uses
> > > that mechanism to report to user space when break signalling is not
> > > supported (e.g. when device or driver support is missing).
> 
> > do you eventually want this to be done for all serial devices?
> > That is does cdc-acm need something like this patch?
> 
> Looks good to me. If this turns out to confuse userspace we may have to
> turn that -ENOTTY into 0 in the tty layer, but we can still use it to
> avoid the unnecessary wait to "disable" the break state.
> 
> > From 16430d9f109f904b2bfbac6e43a939209b6c4bc7 Mon Sep 17 00:00:00 2001
> > From: Oliver Neukum <oneukum@xxxxxxxx>
> > Date: Tue, 6 Jun 2023 12:57:00 +0200
> > Subject: [PATCH] usb: cdc-acm: return correct error code on unsupported break
> > 
> > Return -ENOTTY if the device says that it doesn't support break
> > so that the upper layers get error reporting right.

Yeah, when I asked for this, I didn't realize that no devices did this,
I thought it was a one-off with this device.  There is a distinct
possibility that this will break userland.  This sounds like a good
plan.

-corey

> > 
> > Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx>
> 
> Acked-by: Johan Hovold <johan@xxxxxxxxxx>
> 
> > ---
> >  drivers/usb/class/cdc-acm.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
> > index 11da5fb284d0..7751f5728716 100644
> > --- a/drivers/usb/class/cdc-acm.c
> > +++ b/drivers/usb/class/cdc-acm.c
> > @@ -892,6 +892,9 @@ static int acm_tty_break_ctl(struct tty_struct *tty, int state)
> >  	struct acm *acm = tty->driver_data;
> >  	int retval;
> >  
> > +	if (!(acm->ctrl_caps & USB_CDC_CAP_BRK))
> > +		return -ENOTTY;
> > +
> >  	retval = acm_send_break(acm, state ? 0xffff : 0);
> >  	if (retval < 0)
> >  		dev_dbg(&acm->control->dev,



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux