Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb2d387c authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: cdc-acm: use get_icount tty operation



Use the tty get_icount operation instead of implementing TIOCGICOUNT
directly.

Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Acked-by: default avatarOliver Neukum <oneukum@suse.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 04cbf383
Loading
Loading
Loading
Loading
+12 −19
Original line number Diff line number Diff line
@@ -968,25 +968,20 @@ static int wait_serial_change(struct acm *acm, unsigned long arg)
	return rv;
}

static int get_serial_usage(struct acm *acm,
			    struct serial_icounter_struct __user *count)
static int acm_tty_get_icount(struct tty_struct *tty,
					struct serial_icounter_struct *icount)
{
	struct serial_icounter_struct icount;
	int rv = 0;

	memset(&icount, 0, sizeof(icount));
	icount.dsr = acm->iocount.dsr;
	icount.rng = acm->iocount.rng;
	icount.dcd = acm->iocount.dcd;
	icount.frame = acm->iocount.frame;
	icount.overrun = acm->iocount.overrun;
	icount.parity = acm->iocount.parity;
	icount.brk = acm->iocount.brk;
	struct acm *acm = tty->driver_data;

	if (copy_to_user(count, &icount, sizeof(icount)) > 0)
		rv = -EFAULT;
	icount->dsr = acm->iocount.dsr;
	icount->rng = acm->iocount.rng;
	icount->dcd = acm->iocount.dcd;
	icount->frame = acm->iocount.frame;
	icount->overrun = acm->iocount.overrun;
	icount->parity = acm->iocount.parity;
	icount->brk = acm->iocount.brk;

	return rv;
	return 0;
}

static int acm_tty_ioctl(struct tty_struct *tty,
@@ -1011,9 +1006,6 @@ static int acm_tty_ioctl(struct tty_struct *tty,
		rv = wait_serial_change(acm, arg);
		usb_autopm_put_interface(acm->control);
		break;
	case TIOCGICOUNT:
		rv = get_serial_usage(acm, (struct serial_icounter_struct __user *) arg);
		break;
	}

	return rv;
@@ -1924,6 +1916,7 @@ static const struct tty_operations acm_ops = {
	.set_termios =		acm_tty_set_termios,
	.tiocmget =		acm_tty_tiocmget,
	.tiocmset =		acm_tty_tiocmset,
	.get_icount =		acm_tty_get_icount,
};

/*