Patch "net: prevent sign extension in dev_get_stats()" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
net: prevent sign extension in dev_get_stats()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-prevent-sign-extension-in-dev_get_stats.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
6f64ec74515925cced6df4571638b5a099a49aaeMon Sep 17 00:00:00 2001
From: Eric Dumazet <[email protected]>
Date: Tue, 27 Jun 2017 07:02:20 -0700
Subject: net: prevent sign extension in dev_get_stats()
From: Eric Dumazet <[email protected]>
commit 6f64ec74515925cced6df4571638b5a099a49aae upstream.
Similar to the fix provided by Dominik Heidler in commit 9b3dc0a17d73 ("l2tp: cast l2tp traffic counter to unsigned") we need to take care of 32bit kernels in dev_get_stats().
When using atomic_long_read(), we add a 'long' to u64 and might misinterpret high order bit, unless we cast to unsigned.
--- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/core/dev.c +2 -2
@@ -7052,8 +7052,8 @@ struct rtnl_link_stats64 *dev_get_stats( }else {netdev_stats_to_stats64 (storage, &dev->stats); } - storage->rx_dropped +=atomic_long_read (&dev->rx_dropped); - storage->tx_dropped +=atomic_long_read (&dev->tx_dropped); + storage->rx_dropped += (unsigned long )atomic_long_read (&dev->rx_dropped); + storage->tx_dropped += (unsigned long )atomic_long_read (&dev->tx_dropped);return storage; }EXPORT_SYMBOL (dev_get_stats);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/net-sched-fix-one-possible-panic-when-no-destroy-callback.patch queue-4.4/net-prevent-sign-extension-in-dev_get_stats.patch queue-4.4/net_sched-fix-error-recovery-at-qdisc-creation.patch