diff options
author | David S. Miller <davem@davemloft.net> | 2017-10-27 13:50:06 +0900 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-27 13:50:06 +0900 |
commit | 9618aec3349b7669b6bf123c7c6121789cb82861 (patch) | |
tree | 6a4d6f63a900b5e8a5ccaf1c34c0635bf042d276 /include | |
parent | 78e0ea6791d7baafb8a0ca82b1bd0c7b3453c919 (diff) | |
parent | cfbb0d90a7abb289edc91833d0905931f8805f12 (diff) | |
download | linux-stable-9618aec3349b7669b6bf123c7c6121789cb82861.tar.gz linux-stable-9618aec3349b7669b6bf123c7c6121789cb82861.tar.bz2 linux-stable-9618aec3349b7669b6bf123c7c6121789cb82861.zip |
Merge tag 'mac80211-for-davem-2017-10-25' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
Johannes Berg says:
====================
pull-request: mac80211 2017-10-25
Here are:
* follow-up fixes for the WoWLAN security issue, to fix a
partial TKIP key material problem and to use crypto_memneq()
* a change for better enforcement of FQ's memory limit
* a disconnect/connect handling fix, and
* a user rate mask validation fix
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/fq_impl.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h index 4e6131cd3f43..ac1a2317941e 100644 --- a/include/net/fq_impl.h +++ b/include/net/fq_impl.h @@ -146,6 +146,7 @@ static void fq_tin_enqueue(struct fq *fq, fq_flow_get_default_t get_default_func) { struct fq_flow *flow; + bool oom; lockdep_assert_held(&fq->lock); @@ -167,8 +168,8 @@ static void fq_tin_enqueue(struct fq *fq, } __skb_queue_tail(&flow->queue, skb); - - if (fq->backlog > fq->limit || fq->memory_usage > fq->memory_limit) { + oom = (fq->memory_usage > fq->memory_limit); + while (fq->backlog > fq->limit || oom) { flow = list_first_entry_or_null(&fq->backlogs, struct fq_flow, backlogchain); @@ -183,8 +184,10 @@ static void fq_tin_enqueue(struct fq *fq, flow->tin->overlimit++; fq->overlimit++; - if (fq->memory_usage > fq->memory_limit) + if (oom) { fq->overmemory++; + oom = (fq->memory_usage > fq->memory_limit); + } } } |