Skip to content

[Backport to xserver-21.1] dix: Fix overzealous caching of ResourceClientBits()

Commit c7311654 cached the value of ResourceClientBits(), but that value depends on the MaxClients value set either from the command line or from the configuration file.

For the latter, a call to ResourceClientBits() is issued before the configuration file is read, meaning that the cached value is from the default, not from the maximum number of clients set in the configuration file.

That obviously causes all sort of issues, including memory corruption and crashes of the Xserver when reaching the default limit value.

To avoid that issue, also keep the LimitClient value, and recompute the ilog2() value if that changes, as on startup when the value is set from the the xorg.conf ServerFlags section.

v2: Drop the cache == 0 test Rename cache vars

Fixes: c7311654 - dix: cache ResourceClientBits() value Closes: #1310 (closed) Signed-off-by: Olivier Fourdan Reviewed-by: Adam Jackson (cherry picked from commit 2efa6d65)

cc: @p12tic

Merge request reports