Patchwork net: tap-linux: Fix unhelpful error message

login
register
mail settings
Submitter Luiz Capitulino
Date Oct. 14, 2011, 6:05 p.m.
Message ID <20111014150510.610f6deb@doriath>
Download mbox | patch
Permalink /patch/119883/
State New
Headers show

Comments

Luiz Capitulino - Oct. 14, 2011, 6:05 p.m.
I'm getting:

    could not configure /dev/net/tun (tap%d): Operation not permitted

When the ioctl() fails, ifr.ifr_name will most likely not be overwritten.
So we better only use it when ifname contains a string.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---

PS: Trivial tree candidate.

 net/tap-linux.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
Luiz Capitulino - Oct. 27, 2011, 6:51 p.m.
On Fri, 14 Oct 2011 15:05:10 -0300
Luiz Capitulino <lcapitulino@redhat.com> wrote:

> I'm getting:
> 
>     could not configure /dev/net/tun (tap%d): Operation not permitted
> 
> When the ioctl() fails, ifr.ifr_name will most likely not be overwritten.
> So we better only use it when ifname contains a string.

I had forgotten about this one, but just got it again... Stefan, I think
this is a candidate for the trivial tree.

> 
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
> 
> PS: Trivial tree candidate.
> 
>  net/tap-linux.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/net/tap-linux.c b/net/tap-linux.c
> index ff8cad0..41d581b 100644
> --- a/net/tap-linux.c
> +++ b/net/tap-linux.c
> @@ -73,7 +73,11 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required
>          pstrcpy(ifr.ifr_name, IFNAMSIZ, "tap%d");
>      ret = ioctl(fd, TUNSETIFF, (void *) &ifr);
>      if (ret != 0) {
> -        error_report("could not configure %s (%s): %m", PATH_NET_TUN, ifr.ifr_name);
> +        if (ifname[0] != '\0') {
> +            error_report("could not configure %s (%s): %m", PATH_NET_TUN, ifr.ifr_name);
> +        } else {
> +            error_report("could not configure %s: %m", PATH_NET_TUN);
> +        }
>          close(fd);
>          return -1;
>      }
Stefan Hajnoczi - Oct. 28, 2011, 7:40 a.m.
On Fri, Oct 14, 2011 at 03:05:10PM -0300, Luiz Capitulino wrote:
> I'm getting:
> 
>     could not configure /dev/net/tun (tap%d): Operation not permitted
> 
> When the ioctl() fails, ifr.ifr_name will most likely not be overwritten.
> So we better only use it when ifname contains a string.
> 
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
> 
> PS: Trivial tree candidate.
> 
>  net/tap-linux.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)

Thanks, applied to the trivial patches -next tree:
http://repo.or.cz/w/qemu/stefanha.git/shortlog/refs/heads/trivial-patches-next

Stefan

Patch

diff --git a/net/tap-linux.c b/net/tap-linux.c
index ff8cad0..41d581b 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -73,7 +73,11 @@  int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required
         pstrcpy(ifr.ifr_name, IFNAMSIZ, "tap%d");
     ret = ioctl(fd, TUNSETIFF, (void *) &ifr);
     if (ret != 0) {
-        error_report("could not configure %s (%s): %m", PATH_NET_TUN, ifr.ifr_name);
+        if (ifname[0] != '\0') {
+            error_report("could not configure %s (%s): %m", PATH_NET_TUN, ifr.ifr_name);
+        } else {
+            error_report("could not configure %s: %m", PATH_NET_TUN);
+        }
         close(fd);
         return -1;
     }