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 52947d668e6d161d6d7a3efa0af37056d5e1984a..26540b8565410d558050177bec051305a4cc6891 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 6a147ed4627f873fb0c87026500c156758f9a467..83f65a5a9a3fc98740613f167dbbc3ccea119615 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,