Regression: netlink fail (triggered by iw) removes extra wlan (phy) interface

From: RafaÅ MiÅecki
Date: Thu Feb 25 2016 - 08:23:05 EST


Hi,

After updating kernel in OpenWrt from 4.1.6 to 4.1.10 I noticed that
if "iw" command fails (which happens very rarely) my wlan0-1 interface
disappears. To trigger this problem easily I'm using this trivial
script:
while [ 1 ]
do
iw phy phy0 interface add mon0 type monitor
ifconfig mon0 up
iw dev mon0 del
done

Whenever it goes wrong I see:
Failed to connect to generic netlink.
kern.info kernel: [ 1933.114338] br-lan: port 3(wlan0-1) entered disabled state
kern.info kernel: [ 1933.335568] device wlan0-1 left promiscuous mode
kern.info kernel: [ 1933.340385] br-lan: port 3(wlan0-1) entered disabled state
daemon.notice netifd: Network device 'wlan0-1' link is down
command failed: Too many open files in system (-23)

This regression is caused by commit:
4e27762 netlink: Fix autobind race condition that leads to zero port ID
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=4e27762417669cb459971635be550eb7b5598286
that is a backport of upstream:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1f770c0a09da855a2b51af6d19de97fb955eca85

This still happens with kernel 4.4.

My hardware is Linksys WRT160NL (Atheros AR9130 SoC) and I'm using two
__ap interfaces on phy0 (wlan0 and wlan0-1).

Could you take a look at this?
Is there some additional info I could provide to help fixing this?

--
RafaÅ