ifplugd: if SIOCSIFFLAGS fails with ENODEV, don't die
Some user managed to hit a race where iface is gone between SIOCGIFFLAGS and SIOCSIFFLAGS (!). If SIOCSIFFLAGS fails, treat it the same as failed SIOCGIFFLAGS Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
110c6bb413
commit
b11be131b7
@ -358,8 +358,12 @@ static void up_iface(void)
|
|||||||
ifrequest.ifr_flags |= IFF_UP;
|
ifrequest.ifr_flags |= IFF_UP;
|
||||||
/* Let user know we mess up with interface */
|
/* Let user know we mess up with interface */
|
||||||
bb_error_msg("upping interface");
|
bb_error_msg("upping interface");
|
||||||
if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting interface flags") < 0)
|
if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting interface flags") < 0) {
|
||||||
xfunc_die();
|
if (errno != ENODEV)
|
||||||
|
xfunc_die();
|
||||||
|
G.iface_exists = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* why do we mess with IP addr? It's not our business */
|
#if 0 /* why do we mess with IP addr? It's not our business */
|
||||||
|
Loading…
Reference in New Issue
Block a user