From 8ec586b01b2ca2165f845c9c9d6192348713ebf1 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Fri, 1 Dec 2017 13:41:27 -0500 Subject: [PATCH] bgpd: fix potential deadlock With the way things are set up, this bit of code would never actually cause a deadlock, but would be highly likely in the future. Signed-off-by: Quentin Young --- bgpd/bgp_packet.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index e111dd785f..4b018aef4d 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -556,12 +556,14 @@ static int bgp_write_notify(struct peer *peer) { /* There should be at least one packet. */ s = stream_fifo_pop(peer->obuf); - if (!s) - return 0; - assert(stream_get_endp(s) >= BGP_HEADER_SIZE); } pthread_mutex_unlock(&peer->io_mtx); + if (!s) + return 0; + + assert(stream_get_endp(s) >= BGP_HEADER_SIZE); + /* Stop collecting data within the socket */ sockopt_cork(peer->fd, 0); -- 2.39.5