diff mbox

Fix vhost_net compilation errors for i386-softmmu target

Message ID 4C972B3A.7000800@redhat.com
State New
Headers show

Commit Message

Michal Novotny Sept. 20, 2010, 9:36 a.m. UTC
Hi,
there were compilation errors when I was trying to compile i386-softmmu 
target on i386
host (running on Fedora-13 with development version of qemu downloaded 
from git).

There were errors of comparison of unsigned expression was always true 
which made it
unable to compile. This simple fix fixes the issue.

...
cc1: warnings being treated as errors
.../hw/vhost_net.c: In function ‘vhost_net_start’:
.../vhost_net.c:154: error: comparison of unsigned expression >= 0 is 
always true
make[1]: *** [vhost_net.o] Error 1
make: *** [subdir-i386-softmmu] Error 2

Signed-off-by: Michal Novotny <minovotn@redhat.com>

Comments

Michael S. Tsirkin Sept. 20, 2010, 5:53 p.m. UTC | #1
On Mon, Sep 20, 2010 at 11:36:58AM +0200, Michal Novotny wrote:
> Hi,
> there were compilation errors when I was trying to compile
> i386-softmmu target on i386
> host (running on Fedora-13 with development version of qemu
> downloaded from git).
> 
> There were errors of comparison of unsigned expression was always
> true which made it
> unable to compile. This simple fix fixes the issue.
> 
> ...
> cc1: warnings being treated as errors
> .../hw/vhost_net.c: In function ‘vhost_net_start’:
> .../vhost_net.c:154: error: comparison of unsigned expression >= 0
> is always true
> make[1]: *** [vhost_net.o] Error 1
> make: *** [subdir-i386-softmmu] Error 2
> 
> Signed-off-by: Michal Novotny <minovotn@redhat.com>
> 
> -- 
> Michal Novotny<minovotn@redhat.com>, RHCE
> Virtualization Team (xen userspace), Red Hat
> 

This is not the right fix though. I have queued
the correct one on my tree, will send pull request.

> >From 21dd405dbc871c8d0053cc68f8862665dc12f69a Mon Sep 17 00:00:00 2001
> From: Michal Novotny <minovotn@redhat.com>
> Date: Mon, 20 Sep 2010 11:29:42 +0200
> Subject: [PATCH] Fix vhost_net compilation errors for i386-softmmu target
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> 
> Hi,
> there were compilation errors when I was trying to compile i386-softmmu target on i386
> host (running on Fedora-13 with development version of qemu downloaded from git).
> 
> There were errors of comparison of unsigned expression was always true which made it
> unable to compile. This simple fix fixes the issue.
> 
> ...
> cc1: warnings being treated as errors
> .../hw/vhost_net.c: In function ???vhost_net_start???:
> .../vhost_net.c:154: error: comparison of unsigned expression >= 0 is always true
> make[1]: *** [vhost_net.o] Error 1
> make: *** [subdir-i386-softmmu] Error 2
> 
> Signed-off-by: Michal Novotny <minovotn@redhat.com>
> ---
>  hw/vhost_net.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/vhost_net.c b/hw/vhost_net.c
> index 4a7b819..6958712 100644
> --- a/hw/vhost_net.c
> +++ b/hw/vhost_net.c
> @@ -151,7 +151,7 @@ int vhost_net_start(struct vhost_net *net,
>      return 0;
>  fail:
>      file.fd = -1;
> -    while (--file.index >= 0) {
> +    while (--file.index > 0) {
>          int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
>          assert(r >= 0);
>      }
> -- 
> 1.7.2.3
>
Blue Swirl Sept. 20, 2010, 6:03 p.m. UTC | #2
On Mon, Sep 20, 2010 at 9:36 AM, Michal Novotny <minovotn@redhat.com> wrote:
> Hi,
> there were compilation errors when I was trying to compile i386-softmmu
> target on i386
> host (running on Fedora-13 with development version of qemu downloaded from
> git).
>
> There were errors of comparison of unsigned expression was always true which
> made it
> unable to compile. This simple fix fixes the issue.
>
> ...
> cc1: warnings being treated as errors
> .../hw/vhost_net.c: In function ‘vhost_net_start’:
> .../vhost_net.c:154: error: comparison of unsigned expression >= 0 is always
> true
> make[1]: *** [vhost_net.o] Error 1
> make: *** [subdir-i386-softmmu] Error 2
>
> Signed-off-by: Michal Novotny <minovotn@redhat.com>

I don't think the patch is correct. It looks like zero is a valid
value for file.index, changing the check means that the ioctl is not
performed for case file.index == 0.

The preincrements and predecrements seem suspicious.
Michal Novotny Sept. 21, 2010, 7:03 a.m. UTC | #3
On 09/20/2010 07:53 PM, Michael S. Tsirkin wrote:
> On Mon, Sep 20, 2010 at 11:36:58AM +0200, Michal Novotny wrote:
>    
>> Hi,
>> there were compilation errors when I was trying to compile
>> i386-softmmu target on i386
>> host (running on Fedora-13 with development version of qemu
>> downloaded from git).
>>
>> There were errors of comparison of unsigned expression was always
>> true which made it
>> unable to compile. This simple fix fixes the issue.
>>
>> ...
>> cc1: warnings being treated as errors
>> .../hw/vhost_net.c: In function ‘vhost_net_start’:
>> .../vhost_net.c:154: error: comparison of unsigned expression>= 0
>> is always true
>> make[1]: *** [vhost_net.o] Error 1
>> make: *** [subdir-i386-softmmu] Error 2
>>
>> Signed-off-by: Michal Novotny<minovotn@redhat.com>
>>
>> -- 
>> Michal Novotny<minovotn@redhat.com>, RHCE
>> Virtualization Team (xen userspace), Red Hat
>>
>>      
> This is not the right fix though. I have queued
> the correct one on my tree, will send pull request.
>
>    

Oh, ok. Nevertheless according to the definition of file.index to be 
unsigned it can never be negative value so that's why I implemented the 
check against greater than zero rather than equal or greater than zero 
but maybe that's not the right way to fix it like you say. However, 
since your patch is already in the queue as you told me it's fine.

Michal
diff mbox

Patch

From 21dd405dbc871c8d0053cc68f8862665dc12f69a Mon Sep 17 00:00:00 2001
From: Michal Novotny <minovotn@redhat.com>
Date: Mon, 20 Sep 2010 11:29:42 +0200
Subject: [PATCH] Fix vhost_net compilation errors for i386-softmmu target
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hi,
there were compilation errors when I was trying to compile i386-softmmu target on i386
host (running on Fedora-13 with development version of qemu downloaded from git).

There were errors of comparison of unsigned expression was always true which made it
unable to compile. This simple fix fixes the issue.

...
cc1: warnings being treated as errors
.../hw/vhost_net.c: In function ‘vhost_net_start’:
.../vhost_net.c:154: error: comparison of unsigned expression >= 0 is always true
make[1]: *** [vhost_net.o] Error 1
make: *** [subdir-i386-softmmu] Error 2

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 hw/vhost_net.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/vhost_net.c b/hw/vhost_net.c
index 4a7b819..6958712 100644
--- a/hw/vhost_net.c
+++ b/hw/vhost_net.c
@@ -151,7 +151,7 @@  int vhost_net_start(struct vhost_net *net,
     return 0;
 fail:
     file.fd = -1;
-    while (--file.index >= 0) {
+    while (--file.index > 0) {
         int r = ioctl(net->dev.control, VHOST_NET_SET_BACKEND, &file);
         assert(r >= 0);
     }
-- 
1.7.2.3