Skip to content

Commit 15cc7ba

Browse files
author
Al Viro
committed
usb_wwan: switch to ->[sg]et_serial()
Reviewed-by: Johan Hovold <[email protected]> Signed-off-by: Al Viro <[email protected]>
1 parent fc6cc97 commit 15cc7ba

File tree

3 files changed

+23
-49
lines changed

3 files changed

+23
-49
lines changed

drivers/usb/serial/option.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1962,7 +1962,8 @@ static struct usb_serial_driver option_1port_device = {
19621962
.chars_in_buffer = usb_wwan_chars_in_buffer,
19631963
.tiocmget = usb_wwan_tiocmget,
19641964
.tiocmset = usb_wwan_tiocmset,
1965-
.ioctl = usb_wwan_ioctl,
1965+
.get_serial = usb_wwan_get_serial_info,
1966+
.set_serial = usb_wwan_set_serial_info,
19661967
.attach = option_attach,
19671968
.release = option_release,
19681969
.port_probe = usb_wwan_port_probe,

drivers/usb/serial/usb-wwan.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ extern int usb_wwan_write_room(struct tty_struct *tty);
1515
extern int usb_wwan_tiocmget(struct tty_struct *tty);
1616
extern int usb_wwan_tiocmset(struct tty_struct *tty,
1717
unsigned int set, unsigned int clear);
18-
extern int usb_wwan_ioctl(struct tty_struct *tty,
19-
unsigned int cmd, unsigned long arg);
18+
extern int usb_wwan_get_serial_info(struct tty_struct *tty,
19+
struct serial_struct *ss);
20+
extern int usb_wwan_set_serial_info(struct tty_struct *tty,
21+
struct serial_struct *ss);
2022
extern int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port,
2123
const unsigned char *buf, int count);
2224
extern int usb_wwan_chars_in_buffer(struct tty_struct *tty);

drivers/usb/serial/usb_wwan.c

Lines changed: 17 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -132,38 +132,32 @@ int usb_wwan_tiocmset(struct tty_struct *tty,
132132
}
133133
EXPORT_SYMBOL(usb_wwan_tiocmset);
134134

135-
static int get_serial_info(struct usb_serial_port *port,
136-
struct serial_struct __user *retinfo)
135+
int usb_wwan_get_serial_info(struct tty_struct *tty,
136+
struct serial_struct *ss)
137137
{
138-
struct serial_struct tmp;
139-
140-
memset(&tmp, 0, sizeof(tmp));
141-
tmp.line = port->minor;
142-
tmp.port = port->port_number;
143-
tmp.baud_base = tty_get_baud_rate(port->port.tty);
144-
tmp.close_delay = port->port.close_delay / 10;
145-
tmp.closing_wait = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
138+
struct usb_serial_port *port = tty->driver_data;
139+
140+
ss->line = port->minor;
141+
ss->port = port->port_number;
142+
ss->baud_base = tty_get_baud_rate(port->port.tty);
143+
ss->close_delay = port->port.close_delay / 10;
144+
ss->closing_wait = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
146145
ASYNC_CLOSING_WAIT_NONE :
147146
port->port.closing_wait / 10;
148-
149-
if (copy_to_user(retinfo, &tmp, sizeof(*retinfo)))
150-
return -EFAULT;
151147
return 0;
152148
}
149+
EXPORT_SYMBOL(usb_wwan_get_serial_info);
153150

154-
static int set_serial_info(struct usb_serial_port *port,
155-
struct serial_struct __user *newinfo)
151+
int usb_wwan_set_serial_info(struct tty_struct *tty,
152+
struct serial_struct *ss)
156153
{
157-
struct serial_struct new_serial;
154+
struct usb_serial_port *port = tty->driver_data;
158155
unsigned int closing_wait, close_delay;
159156
int retval = 0;
160157

161-
if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
162-
return -EFAULT;
163-
164-
close_delay = new_serial.close_delay * 10;
165-
closing_wait = new_serial.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
166-
ASYNC_CLOSING_WAIT_NONE : new_serial.closing_wait * 10;
158+
close_delay = ss->close_delay * 10;
159+
closing_wait = ss->closing_wait == ASYNC_CLOSING_WAIT_NONE ?
160+
ASYNC_CLOSING_WAIT_NONE : ss->closing_wait * 10;
167161

168162
mutex_lock(&port->port.mutex);
169163

@@ -181,30 +175,7 @@ static int set_serial_info(struct usb_serial_port *port,
181175
mutex_unlock(&port->port.mutex);
182176
return retval;
183177
}
184-
185-
int usb_wwan_ioctl(struct tty_struct *tty,
186-
unsigned int cmd, unsigned long arg)
187-
{
188-
struct usb_serial_port *port = tty->driver_data;
189-
190-
dev_dbg(&port->dev, "%s cmd 0x%04x\n", __func__, cmd);
191-
192-
switch (cmd) {
193-
case TIOCGSERIAL:
194-
return get_serial_info(port,
195-
(struct serial_struct __user *) arg);
196-
case TIOCSSERIAL:
197-
return set_serial_info(port,
198-
(struct serial_struct __user *) arg);
199-
default:
200-
break;
201-
}
202-
203-
dev_dbg(&port->dev, "%s arg not supported\n", __func__);
204-
205-
return -ENOIOCTLCMD;
206-
}
207-
EXPORT_SYMBOL(usb_wwan_ioctl);
178+
EXPORT_SYMBOL(usb_wwan_set_serial_info);
208179

209180
int usb_wwan_write(struct tty_struct *tty, struct usb_serial_port *port,
210181
const unsigned char *buf, int count)

0 commit comments

Comments
 (0)