]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bfdd: Use pass by reference for bfd_key_delete
authorDonald Sharp <sharpd@nvidia.com>
Wed, 5 Feb 2025 13:47:31 +0000 (08:47 -0500)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Wed, 12 Feb 2025 18:01:22 +0000 (18:01 +0000)
Coverity is pointing out that bfd_key_delete is
passing by value instead of reference for a very
large structure.  Double plus not good.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 8119e167b0ae95927618696ba11d7252d9d5637c)

bfdd/bfd.c
bfdd/bfd.h

index 3a2959a03aff8fdadc802804eedde17700002b7d..e536567c36217ded63e08b1c86fb8b075e2046dc 100644 (file)
@@ -982,7 +982,7 @@ void bfd_session_free(struct bfd_session *bs)
        /* Remove session from data plane if any. */
        bfd_dplane_delete_session(bs);
 
-       bfd_key_delete(bs->key);
+       bfd_key_delete(&bs->key);
        bfd_id_delete(bs->discrs.my_discr);
 
        /* Remove observer if any. */
@@ -1999,11 +1999,11 @@ struct bfd_session *bfd_id_delete(uint32_t id)
        return hash_release(bfd_id_hash, &bs);
 }
 
-struct bfd_session *bfd_key_delete(struct bfd_key key)
+struct bfd_session *bfd_key_delete(struct bfd_key *key)
 {
        struct bfd_session bs;
 
-       bs.key = key;
+       bs.key = *key;
 
        return hash_release(bfd_key_hash, &bs);
 }
index ea8ed03ff9485b49a08b63256f66af82b8bc61f1..645a76596f9b6bb47ce0117adddffa0c0b3f5356 100644 (file)
@@ -701,7 +701,7 @@ struct bfd_session *bfd_id_lookup(uint32_t id);
 struct bfd_session *bfd_key_lookup(struct bfd_key *key);
 struct sbfd_reflector *sbfd_discr_lookup(uint32_t discr);
 struct bfd_session *bfd_id_delete(uint32_t id);
-struct bfd_session *bfd_key_delete(struct bfd_key key);
+struct bfd_session *bfd_key_delete(struct bfd_key *key);
 struct sbfd_reflector *sbfd_discr_delete(uint32_t discr);
 
 bool bfd_id_insert(struct bfd_session *bs);