|
@@ -1863,8 +1863,7 @@ static int sx_set_serial_info(struct specialix_port *port,
|
|
|
return -EFAULT;
|
|
|
}
|
|
|
|
|
|
- lock_kernel();
|
|
|
-
|
|
|
+ mutex_lock(&port->port.mutex);
|
|
|
change_speed = ((port->port.flags & ASYNC_SPD_MASK) !=
|
|
|
(tmp.flags & ASYNC_SPD_MASK));
|
|
|
change_speed |= (tmp.custom_divisor != port->custom_divisor);
|
|
@@ -1875,7 +1874,7 @@ static int sx_set_serial_info(struct specialix_port *port,
|
|
|
((tmp.flags & ~ASYNC_USR_MASK) !=
|
|
|
(port->port.flags & ~ASYNC_USR_MASK))) {
|
|
|
func_exit();
|
|
|
- unlock_kernel();
|
|
|
+ mutex_unlock(&port->port.mutex);
|
|
|
return -EPERM;
|
|
|
}
|
|
|
port->port.flags = ((port->port.flags & ~ASYNC_USR_MASK) |
|
|
@@ -1892,7 +1891,7 @@ static int sx_set_serial_info(struct specialix_port *port,
|
|
|
sx_change_speed(bp, port);
|
|
|
|
|
|
func_exit();
|
|
|
- unlock_kernel();
|
|
|
+ mutex_unlock(&port->port.mutex);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1906,7 +1905,7 @@ static int sx_get_serial_info(struct specialix_port *port,
|
|
|
func_enter();
|
|
|
|
|
|
memset(&tmp, 0, sizeof(tmp));
|
|
|
- lock_kernel();
|
|
|
+ mutex_lock(&port->port.mutex);
|
|
|
tmp.type = PORT_CIRRUS;
|
|
|
tmp.line = port - sx_port;
|
|
|
tmp.port = bp->base;
|
|
@@ -1917,7 +1916,7 @@ static int sx_get_serial_info(struct specialix_port *port,
|
|
|
tmp.closing_wait = port->port.closing_wait * HZ/100;
|
|
|
tmp.custom_divisor = port->custom_divisor;
|
|
|
tmp.xmit_fifo_size = CD186x_NFIFO;
|
|
|
- unlock_kernel();
|
|
|
+ mutex_unlock(&port->port.mutex);
|
|
|
if (copy_to_user(retinfo, &tmp, sizeof(tmp))) {
|
|
|
func_exit();
|
|
|
return -EFAULT;
|