aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-11-02 06:32:03 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2016-11-02 06:32:03 +0100
commit303ac6d412b4578cbe74c884aa81138cb45d9625 (patch)
tree425f3ce2583a439d34bc0bd9c0f5a73941c3b6a5 /src
parentdata: do not allow usage of keypair just before hash removal (diff)
downloadwireguard-monolithic-historical-303ac6d412b4578cbe74c884aa81138cb45d9625.tar.xz
wireguard-monolithic-historical-303ac6d412b4578cbe74c884aa81138cb45d9625.zip
kref: elide checks
Diffstat (limited to 'src')
-rw-r--r--src/noise.c4
-rw-r--r--src/peer.c8
2 files changed, 4 insertions, 8 deletions
diff --git a/src/noise.c b/src/noise.c
index cefedee..886a1e7 100644
--- a/src/noise.c
+++ b/src/noise.c
@@ -98,9 +98,7 @@ void noise_keypair_put(struct noise_keypair *keypair)
struct noise_keypair *noise_keypair_get(struct noise_keypair *keypair)
{
RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "Calling noise_keypair_get without holding the RCU read lock.");
- if (unlikely(!keypair))
- return NULL;
- if (unlikely(!kref_get_unless_zero(&keypair->refcount)))
+ if (unlikely(!keypair || !kref_get_unless_zero(&keypair->refcount)))
return NULL;
return keypair;
}
diff --git a/src/peer.c b/src/peer.c
index 6e6ccda..aa630a4 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -44,16 +44,14 @@ struct wireguard_peer *peer_create(struct wireguard_device *wg, const u8 public_
struct wireguard_peer *peer_get(struct wireguard_peer *peer)
{
RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "Calling peer_get without holding the RCU read lock.");
- if (unlikely(!peer))
- return NULL;
- if (unlikely(!kref_get_unless_zero(&peer->refcount)))
+ if (unlikely(!peer || !kref_get_unless_zero(&peer->refcount)))
return NULL;
return peer;
}
void peer_remove(struct wireguard_peer *peer)
{
- if (!peer)
+ if (unlikely(!peer))
return;
lockdep_assert_held(&peer->device->device_update_lock);
@@ -88,7 +86,7 @@ static void kref_release(struct kref *refcount)
void peer_put(struct wireguard_peer *peer)
{
- if (!peer)
+ if (unlikely(!peer))
return;
kref_put(&peer->refcount, kref_release);
}