diff options
| author | Christian Breunig <christian@breunig.cc> | 2026-07-19 18:57:59 +0000 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2026-07-19 18:57:59 +0000 |
| commit | ba396133c4342068881d3e98c71a7dd9e6afd75b (patch) | |
| tree | a0346b698b4c4325ae0bc0abf2aee957d127bb16 /interface-definitions/include/interface-source-validation.xml.i | |
| parent | 43093ec740b6350492e4d4d16617ddf638ee4b94 (diff) | |
| download | vyos-1x-ba396133c4342068881d3e98c71a7dd9e6afd75b.tar.gz vyos-1x-ba396133c4342068881d3e98c71a7dd9e6afd75b.zip | |
wireless: T9104: fix CLI/OS race on interface removal
A classical race condition detected depending on host system CPU load while
executing smoketests.
Removal of the Wireless/Wifi interfaces can cause a KeyError.
Traceback (most recent call last):
File "/usr/libexec/vyos/conf_mode/interfaces_wireless.py", line 414, in <module>
apply(c)
File "/usr/libexec/vyos/conf_mode/interfaces_wireless.py", line 325, in apply
WiFiIf(**wifi).remove()
^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py", line 358, in __init__
self._create()
File "/usr/lib/python3/dist-packages/vyos/ifconfig/wireless.py", line 33, in _create
cmd = ['iw', 'phy', self.config['physical_device'], 'interface', 'add',
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
KeyError: 'physical_device'
In src/conf_mode/interfaces_wireless.py:apply(), the delete path
unconditionally does WiFiIf(**wifi).remove(). Since the wifi dict for a
deleted node never contains physical_device, and Interface.__init__ calls
self._create() whenever the kernel interface doesn't already exist,
WiFiIf._create() crashes with KeyError: 'physical_device' when the interface
never actually got created (or already vanished) before deletion.
Diffstat (limited to 'interface-definitions/include/interface-source-validation.xml.i')
0 files changed, 0 insertions, 0 deletions
