gve: Fix u64_stats_sync to initialize start
authorCatherine Sullivan <csully@google.com>
Tue, 2 Jul 2019 22:46:57 +0000 (15:46 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 3 Jul 2019 18:27:46 +0000 (11:27 -0700)
u64_stats_fetch_begin needs to initialize start.

Signed-off-by: Catherine Sullivan <csully@google.com>
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/google/gve/gve_ethtool.c
drivers/net/ethernet/google/gve/gve_main.c

index 52947d6..26540b8 100644 (file)
@@ -102,7 +102,8 @@ gve_get_ethtool_stats(struct net_device *netdev,
             ring < priv->rx_cfg.num_queues; ring++) {
                if (priv->rx) {
                        do {
-                               u64_stats_fetch_begin(&priv->rx[ring].statss);
+                               start =
+                                 u64_stats_fetch_begin(&priv->rx[ring].statss);
                                rx_pkts += priv->rx[ring].rpackets;
                                rx_bytes += priv->rx[ring].rbytes;
                        } while (u64_stats_fetch_retry(&priv->rx[ring].statss,
@@ -113,7 +114,8 @@ gve_get_ethtool_stats(struct net_device *netdev,
             ring < priv->tx_cfg.num_queues; ring++) {
                if (priv->tx) {
                        do {
-                               u64_stats_fetch_begin(&priv->tx[ring].statss);
+                               start =
+                                 u64_stats_fetch_begin(&priv->tx[ring].statss);
                                tx_pkts += priv->tx[ring].pkt_done;
                                tx_bytes += priv->tx[ring].bytes_done;
                        } while (u64_stats_fetch_retry(&priv->tx[ring].statss,
index 6a147ed..83f65a5 100644 (file)
@@ -35,7 +35,8 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s)
        if (priv->rx) {
                for (ring = 0; ring < priv->rx_cfg.num_queues; ring++) {
                        do {
-                               u64_stats_fetch_begin(&priv->rx[ring].statss);
+                               start =
+                                 u64_stats_fetch_begin(&priv->rx[ring].statss);
                                s->rx_packets += priv->rx[ring].rpackets;
                                s->rx_bytes += priv->rx[ring].rbytes;
                        } while (u64_stats_fetch_retry(&priv->rx[ring].statss,
@@ -45,7 +46,8 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s)
        if (priv->tx) {
                for (ring = 0; ring < priv->tx_cfg.num_queues; ring++) {
                        do {
-                               u64_stats_fetch_begin(&priv->tx[ring].statss);
+                               start =
+                                 u64_stats_fetch_begin(&priv->tx[ring].statss);
                                s->tx_packets += priv->tx[ring].pkt_done;
                                s->tx_bytes += priv->tx[ring].bytes_done;
                        } while (u64_stats_fetch_retry(&priv->rx[ring].statss,