mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-02-07 12:44:03 -05:00
nl80211: Missing sysctl flags aren't fatal
The relevant flags were only added in Linux 4.6, so we shouldn't complain because they're missing. Also, they're always missing if a device is being removed (e.g., 'iw dev wlan0 del', or if the device is in the process of resetting itself). So kill those 2 birds with 1 stone: if we can't find the file, just silently skip it. Also, we probably should *actually* propagate the error if we had a write failure. Signed-off-by: Brian Norris <briannorris@chromium.org>
This commit is contained in:
parent
96e60047c9
commit
3b726df827
@ -10746,22 +10746,37 @@ static int nl80211_write_to_file(const char *name, unsigned int val)
|
|||||||
{
|
{
|
||||||
int fd, len;
|
int fd, len;
|
||||||
char tmp[128];
|
char tmp[128];
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
fd = open(name, O_RDWR);
|
fd = open(name, O_RDWR);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
wpa_printf(MSG_ERROR, "nl80211: Failed to open %s: %s",
|
int level;
|
||||||
|
/*
|
||||||
|
* Flags may not exist on older kernels, or while we're tearing
|
||||||
|
* down a disappearing device.
|
||||||
|
*/
|
||||||
|
if (errno == ENOENT) {
|
||||||
|
ret = 0;
|
||||||
|
level = MSG_DEBUG;
|
||||||
|
} else {
|
||||||
|
ret = -1;
|
||||||
|
level = MSG_ERROR;
|
||||||
|
}
|
||||||
|
wpa_printf(level, "nl80211: Failed to open %s: %s",
|
||||||
name, strerror(errno));
|
name, strerror(errno));
|
||||||
return fd;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = os_snprintf(tmp, sizeof(tmp), "%u\n", val);
|
len = os_snprintf(tmp, sizeof(tmp), "%u\n", val);
|
||||||
len = write(fd, tmp, len);
|
len = write(fd, tmp, len);
|
||||||
if (len < 0)
|
if (len < 0) {
|
||||||
|
ret = -1;
|
||||||
wpa_printf(MSG_ERROR, "nl80211: Failed to write to %s: %s",
|
wpa_printf(MSG_ERROR, "nl80211: Failed to write to %s: %s",
|
||||||
name, strerror(errno));
|
name, strerror(errno));
|
||||||
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user