<div dir="ltr"><div>Hi Felix,<br><br>Thx for the feedback. Regarding the remaining race condition I assume you refer<br>to the vlan device link status which can be set as enabled due to reading directly<br>the carrier state in cb_rtnl_event while the parent interface is still link status disabled? <br><br></div><div>I will rework my patch based on the keep_link_status changes and deliver a new patch tomorrow.<br><br></div><div>Hans<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 22, 2014 at 2:30 PM, Felix Fietkau <span dir="ltr"><<a href="mailto:nbd@openwrt.org" target="_blank">nbd@openwrt.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2014-10-22 14:14, Hans Dedecker wrote:<br>
> Netifd commit b2dcb02570939d98b92c7c55db1c328693a5d52a introduces<br>
> a race condition resulting into infinite toggling interfaces<br>
> (eg static interfaces with linksensing enabled, vlan interfaces<br>
> with proto none (#18106)) when linksensing is enabled resulting into<br>
> a crash.<br>
> As netlink event messages will be queued on the netlink event socket<br>
> the included lower up interface flag will not always represent the<br>
> current link state when netifd processes the netlink messages;<br>
> by reading the current link state when a netlink event message is<br>
> parsed the correct info is passed to the device layer.<br>
> This will avoid continuous interface toggling (down/up) triggered<br>
> by link state changes based on outdated netlink interface info.<br>
> This solution replaces the patch which was introduced to solve<br>
> issue (#1806) for vlan devices as other protocol handlers suffered<br>
> from the same problem.<br>
><br>
> Signed-off-by: Hans Dedecker <<a href="mailto:dedeckeh@gmail.com">dedeckeh@gmail.com</a>><br>
</span>While I agree with the change to read the carrier directly, this patch<br>
still has a remaining race condition.<br>
I added keep_link_status, because the VLAN device event callbacks set<br>
the VLAN device link status based on the link status of the parent device.<br>
Please either leave in keep_link_status or remove link status handling<br>
from the device event callbacks of VLAN devices.<br>
<span class="HOEnZb"><font color="#888888"><br>
- Felix<br>
</font></span></blockquote></div><br></div>