2013-10-25 07:51:24

by Zhi Yong Wu

[permalink] [raw]
Subject: [PATCH 1/3] vxlan: silence one build warning

From: Zhi Yong Wu <[email protected]>

drivers/net/vxlan.c: In function ‘vxlan_sock_add’:
drivers/net/vxlan.c:2298:11: warning: ‘sock’ may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/net/vxlan.c:2275:17: note: ‘sock’ was declared here
LD drivers/net/built-in.o

Signed-off-by: Zhi Yong Wu <[email protected]>
---
drivers/net/vxlan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 2ef5b62..e15f1af 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -2272,7 +2272,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
{
struct vxlan_net *vn = net_generic(net, vxlan_net_id);
struct vxlan_sock *vs;
- struct socket *sock;
+ struct socket *sock = NULL;
struct sock *sk;
int rc = 0;
unsigned int h;
--
1.7.11.7


2013-10-25 07:51:34

by Zhi Yong Wu

[permalink] [raw]
Subject: [PATCH 2/3] net, datagram: fix the uncorrect comment in zerocopy_sg_from_iovec()

From: Zhi Yong Wu <[email protected]>

Signed-off-by: Zhi Yong Wu <[email protected]>
---
net/core/datagram.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/core/datagram.c b/net/core/datagram.c
index af814e7..a16ed7b 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -577,7 +577,7 @@ EXPORT_SYMBOL(skb_copy_datagram_from_iovec);
/**
* zerocopy_sg_from_iovec - Build a zerocopy datagram from an iovec
* @skb: buffer to copy
- * @from: io vector to copy to
+ * @from: io vector to copy from
* @offset: offset in the io vector to start copying from
* @count: amount of vectors to copy to buffer from
*
--
1.7.11.7

2013-10-25 07:51:58

by Zhi Yong Wu

[permalink] [raw]
Subject: [PATCH 3/3] net, iovec: fix the uncorrect comment in memcpy_fromiovecend()

From: Zhi Yong Wu <[email protected]>

Signed-off-by: Zhi Yong Wu <[email protected]>
---
net/core/iovec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/core/iovec.c b/net/core/iovec.c
index b77eeec..4cdb7c4 100644
--- a/net/core/iovec.c
+++ b/net/core/iovec.c
@@ -100,7 +100,7 @@ int memcpy_toiovecend(const struct iovec *iov, unsigned char *kdata,
EXPORT_SYMBOL(memcpy_toiovecend);

/*
- * Copy iovec from kernel. Returns -EFAULT on error.
+ * Copy iovec to kernel. Returns -EFAULT on error.
*/

int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
--
1.7.11.7

2013-10-25 15:41:44

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

On Fri, 25 Oct 2013 15:49:18 +0800
Zhi Yong Wu <[email protected]> wrote:

> From: Zhi Yong Wu <[email protected]>
>
> drivers/net/vxlan.c: In function ‘vxlan_sock_add’:
> drivers/net/vxlan.c:2298:11: warning: ‘sock’ may be used uninitialized in this function [-Wmaybe-uninitialized]
> drivers/net/vxlan.c:2275:17: note: ‘sock’ was declared here
> LD drivers/net/built-in.o
>
> Signed-off-by: Zhi Yong Wu <[email protected]>
> ---
> drivers/net/vxlan.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> index 2ef5b62..e15f1af 100644
> --- a/drivers/net/vxlan.c
> +++ b/drivers/net/vxlan.c
> @@ -2272,7 +2272,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
> {
> struct vxlan_net *vn = net_generic(net, vxlan_net_id);
> struct vxlan_sock *vs;
> - struct socket *sock;
> + struct socket *sock = NULL;
> struct sock *sk;
> int rc = 0;
> unsigned int h;

This only happens with certain versions of Gcc which have buggy dependency
analysis. It doesn't happen with Gcc 4.7, think it only shows up in 4.4.
I would rather not fix the warning this way since it risks masking later bugs if this code ever changes.

2013-10-26 07:06:08

by Zhi Yong Wu

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

On Fri, Oct 25, 2013 at 11:41 PM, Stephen Hemminger
<[email protected]> wrote:
> On Fri, 25 Oct 2013 15:49:18 +0800
> Zhi Yong Wu <[email protected]> wrote:
>
>> From: Zhi Yong Wu <[email protected]>
>>
>> drivers/net/vxlan.c: In function ?vxlan_sock_add?:
>> drivers/net/vxlan.c:2298:11: warning: ?sock? may be used uninitialized in this function [-Wmaybe-uninitialized]
>> drivers/net/vxlan.c:2275:17: note: ?sock? was declared here
>> LD drivers/net/built-in.o
>>
>> Signed-off-by: Zhi Yong Wu <[email protected]>
>> ---
>> drivers/net/vxlan.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
>> index 2ef5b62..e15f1af 100644
>> --- a/drivers/net/vxlan.c
>> +++ b/drivers/net/vxlan.c
>> @@ -2272,7 +2272,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
>> {
>> struct vxlan_net *vn = net_generic(net, vxlan_net_id);
>> struct vxlan_sock *vs;
>> - struct socket *sock;
>> + struct socket *sock = NULL;
>> struct sock *sk;
>> int rc = 0;
>> unsigned int h;
>
> This only happens with certain versions of Gcc which have buggy dependency
> analysis. It doesn't happen with Gcc 4.7, think it only shows up in 4.4.
> I would rather not fix the warning this way since it risks masking later bugs if this code ever changes.
Gcc version is 4.7.2 on my box, this warning took palce.
# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
...
gcc version 4.7.2 20120921 (Red Hat 4.7.2-2) (GCC)


--
Regards,

Zhi Yong Wu

2013-10-26 14:48:33

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

On Sat, 26 Oct 2013 15:06:04 +0800
Zhi Yong Wu <[email protected]> wrote:

> On Fri, Oct 25, 2013 at 11:41 PM, Stephen Hemminger
> <[email protected]> wrote:
> > On Fri, 25 Oct 2013 15:49:18 +0800
> > Zhi Yong Wu <[email protected]> wrote:
> >
> >> From: Zhi Yong Wu <[email protected]>
> >>
> >> drivers/net/vxlan.c: In function ‘vxlan_sock_add’:
> >> drivers/net/vxlan.c:2298:11: warning: ‘sock’ may be used uninitialized in this function [-Wmaybe-uninitialized]
> >> drivers/net/vxlan.c:2275:17: note: ‘sock’ was declared here
> >> LD drivers/net/built-in.o
> >>
> >> Signed-off-by: Zhi Yong Wu <[email protected]>
> >> ---
> >> drivers/net/vxlan.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> >> index 2ef5b62..e15f1af 100644
> >> --- a/drivers/net/vxlan.c
> >> +++ b/drivers/net/vxlan.c
> >> @@ -2272,7 +2272,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
> >> {
> >> struct vxlan_net *vn = net_generic(net, vxlan_net_id);
> >> struct vxlan_sock *vs;
> >> - struct socket *sock;
> >> + struct socket *sock = NULL;
> >> struct sock *sk;
> >> int rc = 0;
> >> unsigned int h;
> >
> > This only happens with certain versions of Gcc which have buggy dependency
> > analysis. It doesn't happen with Gcc 4.7, think it only shows up in 4.4.
> > I would rather not fix the warning this way since it risks masking later bugs if this code ever changes.
> Gcc version is 4.7.2 on my box, this warning took palce.
> # gcc -v
> Using built-in specs.
> COLLECT_GCC=gcc
> ...
> gcc version 4.7.2 20120921 (Red Hat 4.7.2-2) (GCC)
>
>

I dont see it on Debian 7.
$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc-4.7.real
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5)

2013-10-27 02:31:15

by Zhi Yong Wu

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

HI, Stephen

I saw it on Fedora 17 without latest kernel. Then what do you think
that it is appropriate to solve this problem? discard this patch? If
yes, i can also agree.


On Sat, Oct 26, 2013 at 10:48 PM, Stephen Hemminger
<[email protected]> wrote:
> On Sat, 26 Oct 2013 15:06:04 +0800
> Zhi Yong Wu <[email protected]> wrote:
>
>> On Fri, Oct 25, 2013 at 11:41 PM, Stephen Hemminger
>> <[email protected]> wrote:
>> > On Fri, 25 Oct 2013 15:49:18 +0800
>> > Zhi Yong Wu <[email protected]> wrote:
>> >
>> >> From: Zhi Yong Wu <[email protected]>
>> >>
>> >> drivers/net/vxlan.c: In function ?vxlan_sock_add?:
>> >> drivers/net/vxlan.c:2298:11: warning: ?sock? may be used uninitialized in this function [-Wmaybe-uninitialized]
>> >> drivers/net/vxlan.c:2275:17: note: ?sock? was declared here
>> >> LD drivers/net/built-in.o
>> >>
>> >> Signed-off-by: Zhi Yong Wu <[email protected]>
>> >> ---
>> >> drivers/net/vxlan.c | 2 +-
>> >> 1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
>> >> index 2ef5b62..e15f1af 100644
>> >> --- a/drivers/net/vxlan.c
>> >> +++ b/drivers/net/vxlan.c
>> >> @@ -2272,7 +2272,7 @@ static struct vxlan_sock *vxlan_socket_create(struct net *net, __be16 port,
>> >> {
>> >> struct vxlan_net *vn = net_generic(net, vxlan_net_id);
>> >> struct vxlan_sock *vs;
>> >> - struct socket *sock;
>> >> + struct socket *sock = NULL;
>> >> struct sock *sk;
>> >> int rc = 0;
>> >> unsigned int h;
>> >
>> > This only happens with certain versions of Gcc which have buggy dependency
>> > analysis. It doesn't happen with Gcc 4.7, think it only shows up in 4.4.
>> > I would rather not fix the warning this way since it risks masking later bugs if this code ever changes.
>> Gcc version is 4.7.2 on my box, this warning took palce.
>> # gcc -v
>> Using built-in specs.
>> COLLECT_GCC=gcc
>> ...
>> gcc version 4.7.2 20120921 (Red Hat 4.7.2-2) (GCC)
>>
>>
>
> I dont see it on Debian 7.
> $ gcc -v
> Using built-in specs.
> COLLECT_GCC=/usr/bin/gcc-4.7.real
> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
> Target: x86_64-linux-gnu
> Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
> Thread model: posix
> gcc version 4.7.2 (Debian 4.7.2-5)



--
Regards,

Zhi Yong Wu

2013-10-27 19:33:58

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

On Sun, 27 Oct 2013 10:30:56 +0800
Zhi Yong Wu <[email protected]> wrote:

> HI, Stephen
>
> I saw it on Fedora 17 without latest kernel. Then what do you think
> that it is appropriate to solve this problem? discard this patch? If
> yes, i can also agree.
>

Either find where the uninitialized use is being caused by finding the code
path where it happens (manual analysis), or ignore the warning.

2013-10-28 04:38:10

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

From: Stephen Hemminger <[email protected]>
Date: Fri, 25 Oct 2013 08:41:34 -0700

> I would rather not fix the warning this way since it risks masking
> later bugs if this code ever changes.

But this is suboptimally coded, and is asking for the warning.

Anything returning a pointer by reference is asking for trouble
in my opinion.

The correct thing to do is to make create_v{4,6}_sock() return
the "struct socket *" as an error pointer.

No more ambiguous initializations, no more warnings.

2013-10-28 04:39:12

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 2/3] net, datagram: fix the uncorrect comment in zerocopy_sg_from_iovec()


"uncorrect" is not a word, you mean to say "incorrect".

Same goes for patch #3.

2013-10-28 15:25:18

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH 1/3] vxlan: silence one build warning

On Mon, 28 Oct 2013 00:38:07 -0400 (EDT)
David Miller <[email protected]> wrote:

> From: Stephen Hemminger <[email protected]>
> Date: Fri, 25 Oct 2013 08:41:34 -0700
>
> > I would rather not fix the warning this way since it risks masking
> > later bugs if this code ever changes.
>
> But this is suboptimally coded, and is asking for the warning.
>
> Anything returning a pointer by reference is asking for trouble
> in my opinion.
>
> The correct thing to do is to make create_v{4,6}_sock() return
> the "struct socket *" as an error pointer.
>
> No more ambiguous initializations, no more warnings.

Agreed, original code used ERR_PTR (see vxlan_socket_create),
the side effect stuff only came with the addition of IPv6.