netifd: Read current link state when processing netlink event
authorHans Dedecker <dedeckeh@gmail.com>
Thu, 23 Oct 2014 09:13:44 +0000 (11:13 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 24 Oct 2014 17:50:24 +0000 (19:50 +0200)
commitfb24913f6de4eb730b4ee4ee4962c2f69e18b641
tree81b658fffd9ceac190970aca395b8133141fcd8c
parentb46a8f3b9794efed197ffd2f6f62eb946de5f235
netifd: Read current link state when processing netlink event

Netifd commit b2dcb02570939d98b92c7c55db1c328693a5d52a introduces
a race condition resulting into infinite toggling interfaces
(eg static interfaces with linksensing enabled, vlan interfaces
with proto none (#18106)) when linksensing is enabled resulting into
a crash.
As netlink event messages will be queued on the netlink event socket
the included lower up interface flag will not always represent the
current link state when netifd processes the netlink messages;
by reading the current link state when a netlink event message is
parsed the correct info is passed to the device layer.
This will avoid continuous interface toggling (down/up) triggered
by link state changes based on outdated netlink interface info.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
system-linux.c