diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2017-07-25 20:39:57 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-07-30 07:44:22 -0700 |
commit | a17e74c533c1be241177c83545e3ec0a39db8a68 (patch) | |
tree | 059611b805607841c4d64bd04c9057f7bdf3b5d4 /drivers/tty/serial/serial_core.c | |
parent | bdc4704b2da9a30162d5990c1dad605828fcecdd (diff) | |
download | linux-a17e74c533c1be241177c83545e3ec0a39db8a68.tar.bz2 |
serial: core: enforce type for upf_t when copying
upf_t is a bitwise defined type and any assignment from different, but
compatible, types makes static analyzer unhappy.
drivers/tty/serial/serial_core.c:793:29: warning: incorrect type in assignment (different base types)
drivers/tty/serial/serial_core.c:793:29: expected int [signed] flags
drivers/tty/serial/serial_core.c:793:29: got restricted upf_t [usertype] flags
drivers/tty/serial/serial_core.c:867:19: warning: incorrect type in assignment (different base types)
drivers/tty/serial/serial_core.c:867:19: expected restricted upf_t [usertype] new_flags
drivers/tty/serial/serial_core.c:867:19: got int [signed] flags
Enforce corresponding types when upf_t being assigned.
Note, we need __force attribute due to the scope of variable. It's being
used in user space with plain old type while kernel uses bitwise one.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/serial_core.c')
-rw-r--r-- | drivers/tty/serial/serial_core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index f534a40aebde..73ce4e2f7a93 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -744,7 +744,7 @@ static int uart_get_info(struct tty_port *port, struct serial_struct *retinfo) if (HIGH_BITS_OFFSET) retinfo->port_high = (long) uport->iobase >> HIGH_BITS_OFFSET; retinfo->irq = uport->irq; - retinfo->flags = uport->flags; + retinfo->flags = (__force int)uport->flags; retinfo->xmit_fifo_size = uport->fifosize; retinfo->baud_base = uport->uartclk / 16; retinfo->close_delay = jiffies_to_msecs(port->close_delay) / 10; @@ -818,7 +818,7 @@ static int uart_set_info(struct tty_struct *tty, struct tty_port *port, new_info->type != uport->type); old_flags = uport->flags; - new_flags = new_info->flags; + new_flags = (__force upf_t)new_info->flags; old_custom_divisor = uport->custom_divisor; if (!capable(CAP_SYS_ADMIN)) { |