On 14/7/25 22:36, Steve Sistare wrote:
net_init_tap intends to return 0 for success and -1 on error.  However,
when net_init_tap() succeeds for a multi-queue device, it returns 1,
because of this code where ret becomes 1 when g_unix_set_fd_nonblocking
succeeds:

         ret = g_unix_set_fd_nonblocking(fd, true, NULL);
         if (!ret) {
             ... error ...
     free_fail:
         ...
         return ret;

Luckily, the only current call site checks for negative, rather than non-zero:

   net_client_init1()
       if (net_client_init_fun[](...) < 0)

Also, in the unlikely case that g_unix_set_fd_nonblocking fails and returns
false, ret=0 is returned, and net_client_init1 will use a broken interface.

Fix it to be future proof.

Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
---
  net/tap.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <phi...@linaro.org>


Reply via email to