Skip to contentSkip to conversation

Patch "net: prevent sign extension in dev_get_stats()" has been added to the 3.18-stable tree

PATCH [email protected] 1 participant 1 message Jul 18, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

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 3.18-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-3.18 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 6f64ec74515925cced6df4571638b5a099a49aae Mon 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.

Fixes caf586e5f23ce ("net: add a core netdev->rx_dropped counter")
Fixes 015f0688f57ca ("net: net: add a core netdev->tx_dropped counter")
Fixes 6e7333d315a76 ("net: add rx_nohandler stat counter")
Cc Jarod Wilson <[email protected]>
---
 net/core/dev.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
net/core/dev.c +2 -2
@@ -6561,8 +6561,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-3.18/net-prevent-sign-extension-in-dev_get_stats.patch