From: Christopher Faulet Date: Tue, 18 Nov 2025 14:06:51 +0000 (+0100) Subject: WIP/MEDIUM: stick-tables: Don't get update lock if session is not in the update tree X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04012ae816c4ed4afe8079afa36464599c2f55d1;p=thirdparty%2Fhaproxy.git WIP/MEDIUM: stick-tables: Don't get update lock if session is not in the update tree --- diff --git a/src/stick_table.c b/src/stick_table.c index 12d269068..d32b49d49 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -376,7 +376,7 @@ int stktable_trash_oldest(struct stktable *t) * with that lock held, will grab a ref_cnt before releasing the * lock. So we must take this lock as well and check the ref_cnt. */ - if (!updt_locked) { + if (!updt_locked && ts->upd.node.leaf_p) { updt_locked = 1; HA_RWLOCK_WRLOCK(STK_TABLE_UPDT_LOCK, &t->updt_lock); } @@ -1063,7 +1063,7 @@ struct task *process_tables_expire(struct task *task, void *context, unsigned in * with that lock held, will grab a ref_cnt before releasing the * lock. So we must take this lock as well and check the ref_cnt. */ - if (!updt_locked) { + if (!updt_locked && ts->upd.node.leaf_p) { updt_locked = 1; HA_RWLOCK_WRLOCK(STK_TABLE_UPDT_LOCK, &t->updt_lock); }