Update odroidxu4-current to 5.4.220 (#4362)
This commit is contained in:
parent
24197c1c61
commit
4e615d8ead
202
patch/kernel/archive/odroidxu4-5.4/patch-5.4.218-219.patch
Normal file
202
patch/kernel/archive/odroidxu4-5.4/patch-5.4.218-219.patch
Normal file
@ -0,0 +1,202 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index c26d5ce1d6768..58325c33ef0cf 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
-SUBLEVEL = 218
|
||||
+SUBLEVEL = 219
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index ae5623244d5e3..e509239d7e06a 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -895,15 +895,17 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
|
||||
{
|
||||
struct pipe_inode_info *pipe;
|
||||
long ret, bytes;
|
||||
+ umode_t i_mode;
|
||||
size_t len;
|
||||
int i, flags, more;
|
||||
|
||||
/*
|
||||
- * We require the input to be seekable, as we don't want to randomly
|
||||
- * drop data for eg socket -> socket splicing. Use the piped splicing
|
||||
- * for that!
|
||||
+ * We require the input being a regular file, as we don't want to
|
||||
+ * randomly drop data for eg socket -> socket splicing. Use the
|
||||
+ * piped splicing for that!
|
||||
*/
|
||||
- if (unlikely(!(in->f_mode & FMODE_LSEEK)))
|
||||
+ i_mode = file_inode(in)->i_mode;
|
||||
+ if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode)))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
|
||||
index 7747a6f46d299..f30a205323de5 100644
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1460,7 +1460,6 @@ struct ieee802_11_elems {
|
||||
const u8 *supp_rates;
|
||||
const u8 *ds_params;
|
||||
const struct ieee80211_tim_ie *tim;
|
||||
- const u8 *challenge;
|
||||
const u8 *rsn;
|
||||
const u8 *erp_info;
|
||||
const u8 *ext_supp_rates;
|
||||
@@ -1507,7 +1506,6 @@ struct ieee802_11_elems {
|
||||
u8 ssid_len;
|
||||
u8 supp_rates_len;
|
||||
u8 tim_len;
|
||||
- u8 challenge_len;
|
||||
u8 rsn_len;
|
||||
u8 ext_supp_rates_len;
|
||||
u8 wmm_info_len;
|
||||
@@ -1521,6 +1519,8 @@ struct ieee802_11_elems {
|
||||
u8 country_elem_len;
|
||||
u8 bssid_index_len;
|
||||
|
||||
+ void *nontx_profile;
|
||||
+
|
||||
/* whether a parse error occurred while retrieving these elements */
|
||||
bool parse_error;
|
||||
};
|
||||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
|
||||
index 5415e566e09d8..b48a09043663a 100644
|
||||
--- a/net/mac80211/mlme.c
|
||||
+++ b/net/mac80211/mlme.c
|
||||
@@ -2829,14 +2829,14 @@ static void ieee80211_auth_challenge(struct ieee80211_sub_if_data *sdata,
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_mgd_auth_data *auth_data = sdata->u.mgd.auth_data;
|
||||
+ const struct element *challenge;
|
||||
u8 *pos;
|
||||
- struct ieee802_11_elems elems;
|
||||
u32 tx_flags = 0;
|
||||
|
||||
pos = mgmt->u.auth.variable;
|
||||
- ieee802_11_parse_elems(pos, len - (pos - (u8 *)mgmt), false, &elems,
|
||||
- mgmt->bssid, auth_data->bss->bssid);
|
||||
- if (!elems.challenge)
|
||||
+ challenge = cfg80211_find_elem(WLAN_EID_CHALLENGE, pos,
|
||||
+ len - (pos - (u8 *)mgmt));
|
||||
+ if (!challenge)
|
||||
return;
|
||||
auth_data->expected_transaction = 4;
|
||||
drv_mgd_prepare_tx(sdata->local, sdata, 0);
|
||||
@@ -2844,7 +2844,8 @@ static void ieee80211_auth_challenge(struct ieee80211_sub_if_data *sdata,
|
||||
tx_flags = IEEE80211_TX_CTL_REQ_TX_STATUS |
|
||||
IEEE80211_TX_INTFL_MLME_CONN_TX;
|
||||
ieee80211_send_auth(sdata, 3, auth_data->algorithm, 0,
|
||||
- elems.challenge - 2, elems.challenge_len + 2,
|
||||
+ (void *)challenge,
|
||||
+ challenge->datalen + sizeof(*challenge),
|
||||
auth_data->bss->bssid, auth_data->bss->bssid,
|
||||
auth_data->key, auth_data->key_len,
|
||||
auth_data->key_idx, tx_flags);
|
||||
@@ -3223,7 +3224,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
pos = mgmt->u.assoc_resp.variable;
|
||||
ieee802_11_parse_elems(pos, len - (pos - (u8 *)mgmt), false, &elems,
|
||||
- mgmt->bssid, assoc_data->bss->bssid);
|
||||
+ mgmt->bssid, NULL);
|
||||
|
||||
if (!elems.supp_rates) {
|
||||
sdata_info(sdata, "no SuppRates element in AssocResp\n");
|
||||
@@ -3298,6 +3299,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
|
||||
sdata_info(sdata,
|
||||
"AP bug: VHT operation missing from AssocResp\n");
|
||||
}
|
||||
+ kfree(bss_elems.nontx_profile);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3575,7 +3577,7 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
pos = mgmt->u.assoc_resp.variable;
|
||||
ieee802_11_parse_elems(pos, len - (pos - (u8 *)mgmt), false, &elems,
|
||||
- mgmt->bssid, assoc_data->bss->bssid);
|
||||
+ mgmt->bssid, NULL);
|
||||
|
||||
if (status_code == WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY &&
|
||||
elems.timeout_int &&
|
||||
@@ -3882,6 +3884,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
ifmgd->assoc_data->timeout = jiffies;
|
||||
ifmgd->assoc_data->timeout_started = true;
|
||||
run_again(sdata, ifmgd->assoc_data->timeout);
|
||||
+ kfree(elems.nontx_profile);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4049,7 +4052,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
ieee80211_report_disconnect(sdata, deauth_buf,
|
||||
sizeof(deauth_buf), true,
|
||||
WLAN_REASON_DEAUTH_LEAVING);
|
||||
- return;
|
||||
+ goto free;
|
||||
}
|
||||
|
||||
if (sta && elems.opmode_notif)
|
||||
@@ -4064,6 +4067,8 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
||||
elems.cisco_dtpc_elem);
|
||||
|
||||
ieee80211_bss_info_change_notify(sdata, changed);
|
||||
+free:
|
||||
+ kfree(elems.nontx_profile);
|
||||
}
|
||||
|
||||
void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
|
||||
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
|
||||
index c353162e81aea..ee65f1f50a0ab 100644
|
||||
--- a/net/mac80211/scan.c
|
||||
+++ b/net/mac80211/scan.c
|
||||
@@ -216,6 +216,8 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
|
||||
rx_status, beacon);
|
||||
}
|
||||
|
||||
+ kfree(elems.nontx_profile);
|
||||
+
|
||||
return bss;
|
||||
}
|
||||
|
||||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
|
||||
index a529861256e62..6223af1c3457a 100644
|
||||
--- a/net/mac80211/util.c
|
||||
+++ b/net/mac80211/util.c
|
||||
@@ -1006,10 +1006,6 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||
} else
|
||||
elem_parse_failed = true;
|
||||
break;
|
||||
- case WLAN_EID_CHALLENGE:
|
||||
- elems->challenge = pos;
|
||||
- elems->challenge_len = elen;
|
||||
- break;
|
||||
case WLAN_EID_VENDOR_SPECIFIC:
|
||||
if (elen >= 4 && pos[0] == 0x00 && pos[1] == 0x50 &&
|
||||
pos[2] == 0xf2) {
|
||||
@@ -1367,6 +1363,11 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||
cfg80211_find_ext_elem(WLAN_EID_EXT_NON_INHERITANCE,
|
||||
nontransmitted_profile,
|
||||
nontransmitted_profile_len);
|
||||
+ if (!nontransmitted_profile_len) {
|
||||
+ nontransmitted_profile_len = 0;
|
||||
+ kfree(nontransmitted_profile);
|
||||
+ nontransmitted_profile = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
crc = _ieee802_11_parse_elems_crc(start, len, action, elems, filter,
|
||||
@@ -1396,7 +1397,7 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
|
||||
offsetofend(struct ieee80211_bssid_index, dtim_count))
|
||||
elems->dtim_count = elems->bssid_index->dtim_count;
|
||||
|
||||
- kfree(nontransmitted_profile);
|
||||
+ elems->nontx_profile = nontransmitted_profile;
|
||||
|
||||
return crc;
|
||||
}
|
||||
7342
patch/kernel/archive/odroidxu4-5.4/patch-5.4.219-220.patch
Normal file
7342
patch/kernel/archive/odroidxu4-5.4/patch-5.4.219-220.patch
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user