[libvirt PATCH] virThreadPoolExpand: Prevent expanding worker pool by zero
Michal Prívozník
mprivozn at redhat.com
Mon Jul 12 12:11:50 UTC 2021
On 7/12/21 12:57 PM, Tim Wiederhake wrote:
> On Mon, 2021-07-12 at 10:09 +0200, Peter Krempa wrote:
>> On Fri, Jul 09, 2021 at 15:43:06 +0200, Tim Wiederhake wrote:
>>> `virThreadPoolNewFull` may call `virThreadPoolExpand` with
>>> `prioWorkers` = 0.
>>
>> Could you elaborate in which situations this happens?
>
> Sure!
>
I'll just add that this happens by default only for admin server,
because it is explicitly called with prio_workers = 0:
if (!(srvAdm = virNetServerNew("admin", 1,
config->admin_min_workers,
config->admin_max_workers,
0,
config->admin_max_clients,
0,
config->admin_keepalive_interval,
config->admin_keepalive_count,
remoteAdmClientNew,
NULL,
remoteAdmClientFree,
dmn))) {
(see src/remote/remote_daemon.c:1091)
But since we allow users to configure number of workers (for other
servers too) it may happen with any server, not just admin.
I wonder how do you feel about guarding virThreadPoolExpand() with check
for #threads > 0, e.g. like this:
diff --git i/src/util/virthreadpool.c w/src/util/virthreadpool.c
index 9ddd86a679..18660576ef 100644
--- i/src/util/virthreadpool.c
+++ w/src/util/virthreadpool.c
@@ -250,7 +250,8 @@ virThreadPoolNewFull(size_t minWorkers,
if (virThreadPoolExpand(pool, minWorkers, false) < 0)
goto error;
- if (virThreadPoolExpand(pool, prioWorkers, true) < 0)
+ if (prioWorkers > 0 &&
+ virThreadPoolExpand(pool, prioWorkers, true) < 0)
goto error;
return pool;
Michal
More information about the libvir-list
mailing list