diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2021-06-25 11:24:24 -0400 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-06-25 11:24:24 -0400 |
| commit | b8917b4ae44d1b945f6fba3d8ee6777edb44633b (patch) | |
| tree | 0e3b6b1113b40d444f078b3bedcd98b93ac78f4a /net/openvswitch/meter.c | |
| parent | 79b1e56509beb8d53b2b92f27555cd2175c67b8a (diff) | |
| parent | 188982cda00ebfe28b50c2905d9bbaa2e9a001b9 (diff) | |
| download | linux-next-b8917b4ae44d1b945f6fba3d8ee6777edb44633b.tar.gz linux-next-b8917b4ae44d1b945f6fba3d8ee6777edb44633b.zip | |
Merge tag 'kvmarm-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
KVM/arm64 updates for v5.14.
- Add MTE support in guests, complete with tag save/restore interface
- Reduce the impact of CMOs by moving them in the page-table code
- Allow device block mappings at stage-2
- Reduce the footprint of the vmemmap in protected mode
- Support the vGIC on dumb systems such as the Apple M1
- Add selftest infrastructure to support multiple configuration
and apply that to PMU/non-PMU setups
- Add selftests for the debug architecture
- The usual crop of PMU fixes
Diffstat (limited to 'net/openvswitch/meter.c')
| -rw-r--r-- | net/openvswitch/meter.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/openvswitch/meter.c b/net/openvswitch/meter.c index 96b524ceabca..896b8f5bc885 100644 --- a/net/openvswitch/meter.c +++ b/net/openvswitch/meter.c @@ -611,6 +611,14 @@ bool ovs_meter_execute(struct datapath *dp, struct sk_buff *skb, spin_lock(&meter->lock); long_delta_ms = (now_ms - meter->used); /* ms */ + if (long_delta_ms < 0) { + /* This condition means that we have several threads fighting + * for a meter lock, and the one who received the packets a + * bit later wins. Assuming that all racing threads received + * packets at the same time to avoid overflow. + */ + long_delta_ms = 0; + } /* Make sure delta_ms will not be too large, so that bucket will not * wrap around below. |
