Thread (6 messages) 6 messages, 3 authors, 2014-10-13

Re: [PATCH] tty/serial_core: Introduce lock mechanism for RS485

From: One Thousand Gnomes <hidden>
Date: 2014-10-13 13:52:48
Also in: lkml

quoted hunk ↗ jump to hunk
@@ -1154,8 +1154,16 @@ static int uart_get_icount(struct tty_struct *tty,
 static int uart_get_rs485_config(struct uart_port *port,
 			 struct serial_rs485 __user *rs485)
 {
-	if (copy_to_user(rs485, &port->rs485, sizeof(port->rs485)))
+	unsigned long flags;
+	int ret;
+
+	spin_lock_irqsave(&port->lock, flags);
+	ret = copy_to_user(rs485, &port->rs485, sizeof(port->rs485));
+	spin_unlock_irqrestore(&port->lock, flags);
Looks good apart from this bit.. The copy needs to go to a temporary
before the lock is taken otherwise we may sleep on a pagefault with irqs
off

Alan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help