diff --git a/include/haproxy/queue.h b/include/haproxy/queue.h
index 58a0b09..101a4ca 100644
--- a/include/haproxy/queue.h
+++ b/include/haproxy/queue.h
@@ -34,7 +34,7 @@
 
 struct pendconn *pendconn_add(struct stream *strm);
 int pendconn_dequeue(struct stream *strm);
-void process_srv_queue(struct server *s, int server_locked);
+void process_srv_queue(struct server *s);
 unsigned int srv_dynamic_maxconn(const struct server *s);
 int pendconn_redistribute(struct server *s);
 int pendconn_grab_from_px(struct server *s);
diff --git a/include/haproxy/stream.h b/include/haproxy/stream.h
index d313d2c..9a7ffa1 100644
--- a/include/haproxy/stream.h
+++ b/include/haproxy/stream.h
@@ -339,7 +339,7 @@
 	      ((s->be->lbprm.algo & BE_LB_KIND) == BE_LB_KIND_RR)))) {
 		sess_change_server(s, NULL);
 		if (may_dequeue_tasks(objt_server(s->target), s->be))
-			process_srv_queue(objt_server(s->target), 0);
+			process_srv_queue(objt_server(s->target));
 
 		s->flags &= ~(SF_DIRECT | SF_ASSIGNED | SF_ADDR_SET);
 		si->state = SI_ST_REQ;
diff --git a/src/backend.c b/src/backend.c
index f6f3ef0..2041c43 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -819,7 +819,7 @@
 			sess_change_server(s, srv);
 		} else {
 			if (may_dequeue_tasks(conn_slot, s->be))
-				process_srv_queue(conn_slot, 0);
+				process_srv_queue(conn_slot);
 		}
 	}
 
@@ -1831,7 +1831,7 @@
 
 		/* release other streams waiting for this server */
 		if (may_dequeue_tasks(srv, s->be))
-			process_srv_queue(srv, 0);
+			process_srv_queue(srv);
 		return 1;
 	}
 	/* if we get here, it's because we got SRV_STATUS_OK, which also
@@ -1907,7 +1907,7 @@
 			/* release other streams waiting for this server */
 			sess_change_server(s, NULL);
 			if (may_dequeue_tasks(srv, s->be))
-				process_srv_queue(srv, 0);
+				process_srv_queue(srv);
 
 			/* Failed and not retryable. */
 			si_shutr(si);
@@ -2235,7 +2235,7 @@
 		_HA_ATOMIC_INC(&s->be->be_counters.failed_conns);
 		sess_change_server(s, NULL);
 		if (may_dequeue_tasks(objt_server(s->target), s->be))
-			process_srv_queue(objt_server(s->target), 0);
+			process_srv_queue(objt_server(s->target));
 
 		/* shutw is enough so stop a connecting socket */
 		si_shutw(si);
diff --git a/src/cli.c b/src/cli.c
index 00990dc..bc561cf 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -2565,7 +2565,7 @@
 				HA_ATOMIC_DEC(&__objt_server(s->target)->cur_sess);
 			}
 			if (may_dequeue_tasks(__objt_server(s->target), be))
-				process_srv_queue(__objt_server(s->target), 0);
+				process_srv_queue(__objt_server(s->target));
 		}
 
 		s->target = NULL;
diff --git a/src/queue.c b/src/queue.c
index 78a4b52..618825e 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -331,10 +331,9 @@
 }
 
 /* Manages a server's connection queue. This function will try to dequeue as
- * many pending streams as possible, and wake them up. <server_locked> must
- * only be set if the caller already hold the server lock.
+ * many pending streams as possible, and wake them up.
  */
-void process_srv_queue(struct server *s, int server_locked)
+void process_srv_queue(struct server *s)
 {
 	struct proxy  *p = s->proxy;
 	int done = 0;
diff --git a/src/server.c b/src/server.c
index 0a128a2..2b3cc82 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1818,11 +1818,8 @@
 		sv->maxconn = v;
 	}
 
-	/* server_parse_maxconn_change_request requires the server lock held.
-	 * Specify it to process_srv_queue to prevent a deadlock.
-	 */
 	if (may_dequeue_tasks(sv, sv->proxy))
-		process_srv_queue(sv, 1);
+		process_srv_queue(sv);
 
 	return NULL;
 }
diff --git a/src/stream.c b/src/stream.c
index b8da935..c9c01fc 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -623,7 +623,7 @@
 			_HA_ATOMIC_DEC(&__objt_server(s->target)->cur_sess);
 		}
 		if (may_dequeue_tasks(objt_server(s->target), s->be))
-			process_srv_queue(objt_server(s->target), 0);
+			process_srv_queue(objt_server(s->target));
 	}
 
 	if (unlikely(s->srv_conn)) {
@@ -1815,7 +1815,7 @@
 			}
 			sess_change_server(s, NULL);
 			if (may_dequeue_tasks(srv, s->be))
-				process_srv_queue(srv, 0);
+				process_srv_queue(srv);
 		}
 	}
 
