Loading drivers/usb/class/cdc-acm.c +24 −0 Original line number Diff line number Diff line Loading @@ -853,6 +853,27 @@ 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) { 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; if (copy_to_user(count, &icount, sizeof(icount)) > 0) rv = -EFAULT; return rv; } static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { Loading @@ -869,6 +890,9 @@ static int acm_tty_ioctl(struct tty_struct *tty, case TIOCMIWAIT: rv = wait_serial_change(acm, arg); break; case TIOCGICOUNT: rv = get_serial_usage(acm, (struct serial_icounter_struct __user *) arg); break; } return rv; Loading Loading
drivers/usb/class/cdc-acm.c +24 −0 Original line number Diff line number Diff line Loading @@ -853,6 +853,27 @@ 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) { 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; if (copy_to_user(count, &icount, sizeof(icount)) > 0) rv = -EFAULT; return rv; } static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { Loading @@ -869,6 +890,9 @@ static int acm_tty_ioctl(struct tty_struct *tty, case TIOCMIWAIT: rv = wait_serial_change(acm, arg); break; case TIOCGICOUNT: rv = get_serial_usage(acm, (struct serial_icounter_struct __user *) arg); break; } return rv; Loading