From 461f2c327d660f5c3d8950b3dc83945957bb3a78 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 5 Feb 2025 08:47:31 -0500 Subject: [PATCH] bfdd: Use pass by reference for bfd_key_delete 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 (cherry picked from commit 8119e167b0ae95927618696ba11d7252d9d5637c) --- bfdd/bfd.c | 6 +++--- bfdd/bfd.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bfdd/bfd.c b/bfdd/bfd.c index 3a2959a03a..e536567c36 100644 --- a/bfdd/bfd.c +++ b/bfdd/bfd.c @@ -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); } diff --git a/bfdd/bfd.h b/bfdd/bfd.h index ea8ed03ff9..645a76596f 100644 --- a/bfdd/bfd.h +++ b/bfdd/bfd.h @@ -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); -- 2.39.5