[Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr

Vladimir Sementsov-Ogievskiy posted 1 patch 4 years, 7 months ago
Test docker-clang@ubuntu passed
Test FreeBSD passed
Test checkpatch passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190910075943.12977-1-vsementsov@virtuozzo.com
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>
util/qemu-sockets.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Vladimir Sementsov-Ogievskiy 4 years, 7 months ago
In "if (saddr->keep_alive) {" we may already be on error path, with
invalid sock < 0. Fix it by returning error earlier.

Reported-by: Coverity (CID 1405300)
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 util/qemu-sockets.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 98ff3a1cce..bcc06d0e01 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -461,12 +461,13 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp)
         }
     }
 
+    freeaddrinfo(res);
+
     if (sock < 0) {
         error_propagate(errp, local_err);
+        return sock;
     }
 
-    freeaddrinfo(res);
-
     if (saddr->keep_alive) {
         int val = 1;
         int ret = qemu_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
-- 
2.18.0


Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Daniel P. Berrangé 4 years, 7 months ago
On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
> In "if (saddr->keep_alive) {" we may already be on error path, with
> invalid sock < 0. Fix it by returning error earlier.
> 
> Reported-by: Coverity (CID 1405300)
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  util/qemu-sockets.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Eric Blake 4 years, 7 months ago
On 9/10/19 3:03 AM, Daniel P. Berrangé wrote:
> On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
>> In "if (saddr->keep_alive) {" we may already be on error path, with
>> invalid sock < 0. Fix it by returning error earlier.
>>
>> Reported-by: Coverity (CID 1405300)
>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> ---
>>  util/qemu-sockets.c | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Thanks.  Will queue through my NBD tree, since that's where the original
problem was introduced.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Vladimir Sementsov-Ogievskiy 4 years, 7 months ago
10.09.2019 16:59, Eric Blake wrote:
> On 9/10/19 3:03 AM, Daniel P. Berrangé wrote:
>> On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
>>> In "if (saddr->keep_alive) {" we may already be on error path, with
>>> invalid sock < 0. Fix it by returning error earlier.
>>>
>>> Reported-by: Coverity (CID 1405300)
>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>> ---
>>>   util/qemu-sockets.c | 5 +++--
>>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> 
> Thanks.  Will queue through my NBD tree, since that's where the original
> problem was introduced.
> 

Please add when queueing:

Fixes: aec21d31756cbd

-- 
Best regards,
Vladimir
Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Vladimir Sementsov-Ogievskiy 4 years, 7 months ago
11.09.2019 15:08, Vladimir Sementsov-Ogievskiy wrote:
> 10.09.2019 16:59, Eric Blake wrote:
>> On 9/10/19 3:03 AM, Daniel P. Berrangé wrote:
>>> On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
>>>> In "if (saddr->keep_alive) {" we may already be on error path, with
>>>> invalid sock < 0. Fix it by returning error earlier.
>>>>
>>>> Reported-by: Coverity (CID 1405300)
>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>> ---
>>>>   util/qemu-sockets.c | 5 +++--
>>>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>>
>>> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>>
>> Thanks.  Will queue through my NBD tree, since that's where the original
>> problem was introduced.
>>
> 
> Please add when queueing:
> 
> Fixes: aec21d31756cbd
> 

Hmm, don't you forget? Don't see it neither in pull request nor in your branches.

-- 
Best regards,
Vladimir
Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Eric Blake 4 years, 7 months ago
On 9/25/19 6:33 AM, Vladimir Sementsov-Ogievskiy wrote:
> 11.09.2019 15:08, Vladimir Sementsov-Ogievskiy wrote:
>> 10.09.2019 16:59, Eric Blake wrote:
>>> On 9/10/19 3:03 AM, Daniel P. Berrangé wrote:
>>>> On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
>>>>> In "if (saddr->keep_alive) {" we may already be on error path, with
>>>>> invalid sock < 0. Fix it by returning error earlier.
>>>>>
>>>>> Reported-by: Coverity (CID 1405300)
>>>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>>> ---
>>>>>   util/qemu-sockets.c | 5 +++--
>>>>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>>>
>>>> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>>>
>>> Thanks.  Will queue through my NBD tree, since that's where the original
>>> problem was introduced.
>>>
>>
>> Please add when queueing:
>>
>> Fixes: aec21d31756cbd
>>
> 
> Hmm, don't you forget? Don't see it neither in pull request nor in your branches.

Thanks for catching this.  Fixing now...

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH] util/qemu-sockets: fix keep_alive handling in inet_connect_saddr
Posted by Stefano Garzarella 4 years, 7 months ago
On Tue, Sep 10, 2019 at 10:59:43AM +0300, Vladimir Sementsov-Ogievskiy wrote:
> In "if (saddr->keep_alive) {" we may already be on error path, with
> invalid sock < 0. Fix it by returning error earlier.
> 
> Reported-by: Coverity (CID 1405300)
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> ---
>  util/qemu-sockets.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>