From: Quentin Young Date: Fri, 1 Dec 2017 18:41:27 +0000 (-0500) Subject: bgpd: fix potential deadlock X-Git-Tag: frr-4.0-dev~115^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F1508%2Fhead;p=mirror%2Ffrr.git 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 --- 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);