2014-02-19 20:02:06

by Paul Gortmaker

[permalink] [raw]
Subject: [PATCH] drivers/tty/serial: deal with 8250_core.c uninitialized warning for good

Every couple of months, someone sends a patch to fix:

drivers/tty/serial/8250/8250_core.c: In function 'serial_unlink_irq_chain':
drivers/tty/serial/8250/8250_core.c:1712:2: warning: 'i' may be used uninitialized in this function [-Wuninitialized]

and they in turn get a NACK for their efforts, and are told that
their compiler is broken. This has been going on since at least
the year 2008: https://lkml.org/lkml/2008/11/24/433

Lets add a comment, so that subsequent patches don't get as far as
the maintainers or the mailing lists.

Cc: Alan Cox <[email protected]>
Signed-off-by: Paul Gortmaker <[email protected]>

diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index 69932b7556cf..747073b8c38a 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -1694,6 +1694,10 @@ static int serial_link_irq_chain(struct uart_8250_port *up)

static void serial_unlink_irq_chain(struct uart_8250_port *up)
{
+ /*
+ * yes, some broken gcc emit "warning: 'i' may be used uninitialized"
+ * but no, we are not going to take a patch that assigns NULL below.
+ */
struct irq_info *i;
struct hlist_node *n;
struct hlist_head *h;
--
1.8.5.2


2014-02-19 20:06:47

by Jiri Slaby

[permalink] [raw]
Subject: Re: [PATCH] drivers/tty/serial: deal with 8250_core.c uninitialized warning for good

On 02/19/2014 09:00 PM, Paul Gortmaker wrote:
> Every couple of months, someone sends a patch to fix:
>
> drivers/tty/serial/8250/8250_core.c: In function 'serial_unlink_irq_chain':
> drivers/tty/serial/8250/8250_core.c:1712:2: warning: 'i' may be used uninitialized in this function [-Wuninitialized]
>
> and they in turn get a NACK for their efforts, and are told that
> their compiler is broken. This has been going on since at least
> the year 2008: https://lkml.org/lkml/2008/11/24/433
>
> Lets add a comment, so that subsequent patches don't get as far as
> the maintainers or the mailing lists.

Hi, wouldn't hlist_for_each_entry do a better job to silent both the
compiler and the reporters with the added value of cleanup?

> Cc: Alan Cox <[email protected]>
> Signed-off-by: Paul Gortmaker <[email protected]>
>
> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
> index 69932b7556cf..747073b8c38a 100644
> --- a/drivers/tty/serial/8250/8250_core.c
> +++ b/drivers/tty/serial/8250/8250_core.c
> @@ -1694,6 +1694,10 @@ static int serial_link_irq_chain(struct uart_8250_port *up)
>
> static void serial_unlink_irq_chain(struct uart_8250_port *up)
> {
> + /*
> + * yes, some broken gcc emit "warning: 'i' may be used uninitialized"
> + * but no, we are not going to take a patch that assigns NULL below.
> + */
> struct irq_info *i;
> struct hlist_node *n;
> struct hlist_head *h;

thanks,
--
js
suse labs

2014-02-19 20:51:30

by Alan

[permalink] [raw]
Subject: Re: [PATCH] drivers/tty/serial: deal with 8250_core.c uninitialized warning for good

On Wed, 2014-02-19 at 15:00 -0500, Paul Gortmaker wrote:
> Every couple of months, someone sends a patch to fix:
>
> drivers/tty/serial/8250/8250_core.c: In function 'serial_unlink_irq_chain':
> drivers/tty/serial/8250/8250_core.c:1712:2: warning: 'i' may be used uninitialized in this function [-Wuninitialized]
>
> and they in turn get a NACK for their efforts, and are told that
> their compiler is broken. This has been going on since at least
> the year 2008: https://lkml.org/lkml/2008/11/24/433
>
> Lets add a comment, so that subsequent patches don't get as far as
> the maintainers or the mailing lists.

Are people still using gcc variants that get this wrong ?

Fine by me.

Acked-by: Alan Cox <[email protected]>

2014-02-19 21:18:36

by Paul Gortmaker

[permalink] [raw]
Subject: Re: [PATCH] drivers/tty/serial: deal with 8250_core.c uninitialized warning for good

On 14-02-19 03:51 PM, Alan Cox wrote:
> On Wed, 2014-02-19 at 15:00 -0500, Paul Gortmaker wrote:
>> Every couple of months, someone sends a patch to fix:
>>
>> drivers/tty/serial/8250/8250_core.c: In function 'serial_unlink_irq_chain':
>> drivers/tty/serial/8250/8250_core.c:1712:2: warning: 'i' may be used uninitialized in this function [-Wuninitialized]
>>
>> and they in turn get a NACK for their efforts, and are told that
>> their compiler is broken. This has been going on since at least
>> the year 2008: https://lkml.org/lkml/2008/11/24/433
>>
>> Lets add a comment, so that subsequent patches don't get as far as
>> the maintainers or the mailing lists.
>
> Are people still using gcc variants that get this wrong ?

It seems that gcc 4.6.3 gets it wrong, and it isn't _that_ old.

Paul.
--

$ mips-linux-gcc -v
Using built-in specs.
COLLECT_GCC=mips-linux-gcc
COLLECT_LTO_WRAPPER=/home/paul/tc/gcc-4.6.3-nolibc/mips-linux/bin/../libexec/gcc/mips-linux/4.6.3/lto-wrapper
Target: mips-linux
Configured with: /home/tony/buildall/src/gcc/configure --target=mips-linux --host=x86_64-linux-gnu --build=x86_64-linux-gnu --enable-targets=all --prefix=/opt/cross/gcc-4.6.3-nolibc/mips-linux/ --enable-languages=c --with-newlib --without-headers --enable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --enable-checking=release --with-mpfr=/home/tony/buildall/src/sys-x86_64 --with-gmp=/home/tony/buildall/src/sys-x86_64 --disable-bootstrap --disable-libquadmath
Thread model: single
gcc version 4.6.3 (GCC)
$ make allmodconfig > /dev/null
$ make drivers/tty/serial/8250/8250_core.o > /dev/null
drivers/tty/serial/8250/8250_core.c: In function 'serial_unlink_irq_chain':
drivers/tty/serial/8250/8250_core.c:1712:2: warning: 'i' may be used uninitialized in this function [-Wuninitialized]
$


>
> Fine by me.
>
> Acked-by: Alan Cox <[email protected]>
>
>