On Thu, Nov 10, 2016 at 04:23:23PM +0200, Andy Shevchenko wrote: > On Thu, 2016-11-10 at 14:57 +0100, Greg Kroah-Hartman wrote: > > On Thu, Nov 03, 2016 at 06:27:39PM +0200, Andy Shevchenko wrote: > > > 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. > > > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > > --- > > > drivers/tty/serial/serial_core.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/tty/serial/serial_core.c > > > b/drivers/tty/serial/serial_core.c > > > index ff90c8e..80002fe 100644 > > > --- a/drivers/tty/serial/serial_core.c > > > +++ b/drivers/tty/serial/serial_core.c > > > @@ -746,7 +746,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; > > > > Why not make retinfo->flags be upf_t instead of int? > > Because upf_t is internal type, but flags are part of UAPI. Ah crap. Yeah, that's fine. But: > > > > > retinfo->xmit_fifo_size = uport->fifosize; > > > retinfo->baud_base = uport->uartclk / 16; > > > retinfo->close_delay = jiffies_to_msecs(port- > > > >close_delay) / 10; > > > @@ -820,7 +820,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; > > > > same here, why not fix new_flags? new_flags is a local variable, that shouldn't need to be forced. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html