aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/wfx/data_tx.c
diff options
context:
space:
mode:
authorJérôme Pouiller <jerome.pouiller@silabs.com>2020-01-15 13:55:06 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-01-16 20:59:51 +0100
commitdef39be019b6494acd3570ce6f3f11ba1c3203a3 (patch)
tree92c2c482393ec7f333f99e9a6d96a7796aacde14 /drivers/staging/wfx/data_tx.c
parentstaging: wfx: fix case where RTS threshold is 0 (diff)
downloadlinux-dev-def39be019b6494acd3570ce6f3f11ba1c3203a3.tar.xz
linux-dev-def39be019b6494acd3570ce6f3f11ba1c3203a3.zip
staging: wfx: fix possible overflow on jiffies comparaison
MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is recommended to use function time_*() to compare jiffies. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20200115135338.14374-45-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/wfx/data_tx.c')
-rw-r--r--drivers/staging/wfx/data_tx.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/staging/wfx/data_tx.c b/drivers/staging/wfx/data_tx.c
index 60459299a3a9..704ebfe1cd05 100644
--- a/drivers/staging/wfx/data_tx.c
+++ b/drivers/staging/wfx/data_tx.c
@@ -270,8 +270,7 @@ void wfx_tx_policy_init(struct wfx_vif *wvif)
static int wfx_alloc_link_id(struct wfx_vif *wvif, const u8 *mac)
{
int i, ret = 0;
- unsigned long max_inactivity = 0;
- unsigned long now = jiffies;
+ unsigned long oldest;
spin_lock_bh(&wvif->ps_state_lock);
for (i = 0; i < WFX_MAX_STA_IN_AP_MODE; ++i) {
@@ -280,13 +279,10 @@ static int wfx_alloc_link_id(struct wfx_vif *wvif, const u8 *mac)
break;
} else if (wvif->link_id_db[i].status != WFX_LINK_HARD &&
!wvif->wdev->tx_queue_stats.link_map_cache[i + 1]) {
- unsigned long inactivity =
- now - wvif->link_id_db[i].timestamp;
-
- if (inactivity < max_inactivity)
- continue;
- max_inactivity = inactivity;
- ret = i + 1;
+ if (!ret || time_after(oldest, wvif->link_id_db[i].timestamp)) {
+ oldest = wvif->link_id_db[i].timestamp;
+ ret = i + 1;
+ }
}
}