lkml.org 
[lkml]   [2014]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH 03/12] serial_core: Handle TIOC[GS]RS485 ioctls.
Hello Alan

This patchset adds no extra locking features, if the drivers did not
implement a locking mechanism (and none did) there is chance of
conflict.

I can add a call to lock/unlock around uart_[gs]et_rs485_config. And
then, inside the drivers, use the lock when the structure is used.

I would prefer to add it as new patches in the patchset, so in case
this adds some bugs they can be bisected easily.

Thanks for your fast reply



On Wed, Oct 8, 2014 at 10:11 PM, Alan Cox <alan@linux.intel.com> wrote:
> On Wed, 2014-10-08 at 21:57 +0200, Ricardo Ribalda Delgado wrote:
>> The following drivers: 8250_core, atmel_serial, max310x, mcf, omap-serial
>> and sci16is7xx implement code to handle RS485 ioctls.
>
>>
>> +static int uart_get_rs485_config(struct uart_port *port,
>> + struct serial_rs485 __user *rs485)
>> +{
>> + if (!port->rs485_config)
>> + return -ENOIOCTLCMD;
>> +
>> + if (copy_to_user(rs485, &port->rs485, sizeof(port->rs485)))
>> + return -EFAULT;
>> + return 0;
>> +}
>> +
>> +static int uart_set_rs485_config(struct uart_port *port,
>> + struct serial_rs485 __user *rs485_user)
>> +{
>> + struct serial_rs485 rs485;
>> + int ret;
>> +
>> + if (!port->rs485_config)
>> + return -ENOIOCTLCMD;
>> +
>> + if (copy_from_user(&rs485, rs485_user, sizeof(rs485_user)))
>> + return -EFAULT;
>> +
>> + ret = port->rs485_config(port, &rs485);
>> + if (ret)
>> + return ret;
>> +
>> + if (copy_to_user(rs485_user, &port->rs485, sizeof(port->rs485)))
>> + return -EFAULT;
>> +
>> + return 0;
>> +
>
> What is the locking between setting/getting/driver use of the config ?
> This really needs a lock (termios sem I think is perhaps appropriate
> given when the values are normally referenced).
>
> Alan
>
>



--
Ricardo Ribalda


\
 
 \ /
  Last update: 2014-10-08 23:21    [W:0.834 / U:0.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site