Re: [PATCH][netifd] system-linux: initialize ifreq struct before using it

2020-10-09 Thread Alin Năstac
Hi Hans,

I have the confirmation, this change fixed my problem.

Given the fact that my commit fixes an obvious programming error, I
don't think I need to put a detailed explanation in the commit
description.

BR,
Alin

On Thu, Oct 8, 2020 at 2:35 PM Alin Năstac  wrote:
>
> Hi Hans,
>
> The issue I have involved adding an external device to the lan bridge
> through add_device ubus call. Sometimes this operation fails to add
> the new bridge port with the following device debug traces:
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
> device_create_default(525): Create simple device 'wds1_1_2'
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
> device_init_virtual(478): Initialize device 'wds1_1_2'
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
> device_set_present(634): Network device 'wds1_1_2' is now present
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
> __device_add_user(710): Add user for device 'wds1_1_2', refcount=1
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]: device_claim(413):
> Claim Network device wds1_1_2, new active count: 1
> Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]: device_claim(432):
> claim Network device wds1_1_2 failed: -1
>
> I'm not sure it fixes the problem I experience (the jury is still out
> on that), but it is definitely caused by system_if_resolve() failure
> to retrieve the interface index. Looking at the handling of
> SIOCGIFINDEX in the kernel, it shouldn't matter if the rest of the
> fields are uninitialized, but a variable should always be initialized
> before its first use.
>
> BR,
> Alin
>
> On Thu, Oct 8, 2020 at 2:15 PM Hans Dedecker  wrote:
> >
> > Hi Alin,
> >
> > On Thu, Oct 8, 2020 at 1:31 PM Alin Nastac  wrote:
> > Could you add which issue this fixes ?
> >
> > Thx
> > Hans
> > >
> > > Signed-off-by: Alin Nastac 
> > > ---
> > >  system-linux.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > >
> > > diff --git a/system-linux.c b/system-linux.c
> > > index 6778b1d..9188899 100644
> > > --- a/system-linux.c
> > > +++ b/system-linux.c
> > > @@ -904,6 +904,8 @@ failure:
> > >  int system_if_resolve(struct device *dev)
> > >  {
> > > struct ifreq ifr;
> > > +
> > > +   memset(, 0, sizeof(ifr));
> > > strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
> > > if (!ioctl(sock_ioctl, SIOCGIFINDEX, ))
> > > return ifr.ifr_ifindex;
> > > --
> > > 2.7.4
> > >

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [PATCH][netifd] system-linux: initialize ifreq struct before using it

2020-10-08 Thread Alin Năstac
Hi Hans,

The issue I have involved adding an external device to the lan bridge
through add_device ubus call. Sometimes this operation fails to add
the new bridge port with the following device debug traces:
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
device_create_default(525): Create simple device 'wds1_1_2'
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
device_init_virtual(478): Initialize device 'wds1_1_2'
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
device_set_present(634): Network device 'wds1_1_2' is now present
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]:
__device_add_user(710): Add user for device 'wds1_1_2', refcount=1
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]: device_claim(413):
Claim Network device wds1_1_2, new active count: 1
Wed Oct  7 04:22:57 2020 daemon.err netifd[2843]: device_claim(432):
claim Network device wds1_1_2 failed: -1

I'm not sure it fixes the problem I experience (the jury is still out
on that), but it is definitely caused by system_if_resolve() failure
to retrieve the interface index. Looking at the handling of
SIOCGIFINDEX in the kernel, it shouldn't matter if the rest of the
fields are uninitialized, but a variable should always be initialized
before its first use.

BR,
Alin

On Thu, Oct 8, 2020 at 2:15 PM Hans Dedecker  wrote:
>
> Hi Alin,
>
> On Thu, Oct 8, 2020 at 1:31 PM Alin Nastac  wrote:
> Could you add which issue this fixes ?
>
> Thx
> Hans
> >
> > Signed-off-by: Alin Nastac 
> > ---
> >  system-linux.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/system-linux.c b/system-linux.c
> > index 6778b1d..9188899 100644
> > --- a/system-linux.c
> > +++ b/system-linux.c
> > @@ -904,6 +904,8 @@ failure:
> >  int system_if_resolve(struct device *dev)
> >  {
> > struct ifreq ifr;
> > +
> > +   memset(, 0, sizeof(ifr));
> > strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
> > if (!ioctl(sock_ioctl, SIOCGIFINDEX, ))
> > return ifr.ifr_ifindex;
> > --
> > 2.7.4
> >

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [PATCH][netifd] system-linux: initialize ifreq struct before using it

2020-10-08 Thread Hans Dedecker
Hi Alin,

On Thu, Oct 8, 2020 at 1:31 PM Alin Nastac  wrote:
Could you add which issue this fixes ?

Thx
Hans
>
> Signed-off-by: Alin Nastac 
> ---
>  system-linux.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/system-linux.c b/system-linux.c
> index 6778b1d..9188899 100644
> --- a/system-linux.c
> +++ b/system-linux.c
> @@ -904,6 +904,8 @@ failure:
>  int system_if_resolve(struct device *dev)
>  {
> struct ifreq ifr;
> +
> +   memset(, 0, sizeof(ifr));
> strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
> if (!ioctl(sock_ioctl, SIOCGIFINDEX, ))
> return ifr.ifr_ifindex;
> --
> 2.7.4
>

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[PATCH][netifd] system-linux: initialize ifreq struct before using it

2020-10-08 Thread Alin Nastac
Signed-off-by: Alin Nastac 
---
 system-linux.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/system-linux.c b/system-linux.c
index 6778b1d..9188899 100644
--- a/system-linux.c
+++ b/system-linux.c
@@ -904,6 +904,8 @@ failure:
 int system_if_resolve(struct device *dev)
 {
struct ifreq ifr;
+
+   memset(, 0, sizeof(ifr));
strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
if (!ioctl(sock_ioctl, SIOCGIFINDEX, ))
return ifr.ifr_ifindex;
-- 
2.7.4


___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel