bind9/lib/isc
Aram Sargsyan c6529891bb Fix isc_quota bug
Running jobs which were entered into the isc_quota queue is the
responsibility of the isc_quota_release() function, which, when
releasing a previously acquired quota, checks whether the queue
is empty, and if it's not, it runs a job from the queue without touching
the 'quota->used' counter. This mechanism is susceptible to a possible
hangup of a newly queued job in case when between the time a decision
has been made to queue it (because used >= max) and the time it was
actually queued, the last quota was released. Since there is no more
quotas to be released (unless arriving in the future), the newly
entered job will be stuck in the queue.

Fix the wrong memory ordering for 'quota->used', as the relaxed
ordering doesn't ensure that data modifications made by one thread
are visible in other threads.

Add checks in both isc_quota_release() and isc_quota_acquire_cb()
to make sure that the described hangup does not happen. Also see
code comments.
2025-02-20 10:56:00 +00:00
..
include Fix isc_quota bug 2025-02-20 10:56:00 +00:00
netmgr DoH: http_send_outgoing() return value is not used 2025-02-19 17:52:36 +02:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
ascii.c Consolidate some ASCII tables in isc/ascii and isc/hex 2022-09-12 12:18:57 +01:00
assertions.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
async.c Cleanup the __tsan_acquire/__tsan_release 2023-07-28 08:59:08 +02:00
async_p.h Change the isc_async API to use cds_wfcqueue internally 2023-05-12 14:16:25 +02:00
backtrace.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
base32.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
base64.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
commandline.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
condition.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
counter.c Implement global limit for outgoing queries 2024-12-05 14:17:07 +01:00
crypto.c Add new logging category for logging crypto errors in libisc 2024-11-26 11:22:33 +01:00
dir.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
entropy.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
errno.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
errno2result.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
errno2result.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
error.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
file.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
fips.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
getaddresses.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hash.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hashmap.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
heap.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
helper.c Add isc_helper API that adds 1:1 thread for each loop 2024-09-12 12:09:45 +00:00
hex.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
histo.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
hmac.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ht.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
httpd.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
interfaceiter.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
iterated_hash.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
jemalloc_shim.h Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
job.c Add tracing probes to the isc_job unit 2023-08-21 18:39:53 +02:00
job_p.h Use proper padding instead of using alignas() 2024-02-08 10:54:35 +01:00
lex.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
lib.c unify libcrypto and evp_md handling 2024-10-16 14:03:14 +03:00
log.c clean up log module names 2024-12-11 17:11:32 +00:00
loop.c mark loop as shuttingdown earlier in shutdown_cb 2024-12-10 19:18:49 +00:00
loop_p.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
Makefile.am Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
managers.c remove isc_task completely 2023-02-16 18:35:32 +01:00
md.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
mem.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
mem_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
meminfo.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
mutex.c Fix PTHREAD_MUTEX_ADAPTIVE_NP and PTHREAD_MUTEX_ERRORCHECK_NP usage 2024-08-05 07:31:39 +00:00
mutex_p.h Use library constructor to create default mutex attr once 2022-07-13 13:19:32 +02:00
mutexblock.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
net.c Remove unused definition of ISC_CMSG_IP_TOS 2024-11-27 15:03:27 +01:00
netaddr.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
netscope.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
nonce.c Switch the CSPRNG function from RAND_bytes() to uv_random() 2022-09-26 15:13:11 +02:00
openssl_shim.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
openssl_shim.h Remove unused <openssl/hmac.h> headers from OpenSSL shims 2024-10-16 04:19:16 +00:00
os.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
os_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
parseint.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
picohttpparser.c Update picohttpparser.{c,h} with upstream repository 2024-12-08 11:14:37 +00:00
picohttpparser.h Update picohttpparser.{c,h} with upstream repository 2024-12-08 11:14:37 +00:00
portset.c clean up uses of ISC_R_NOMEMORY 2025-01-23 15:54:57 -08:00
probes.d Add tracing probes to the isc_job unit 2023-08-21 18:39:53 +02:00
proxy2.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
quota.c Fix isc_quota bug 2025-02-20 10:56:00 +00:00
radix.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
random.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ratelimiter.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
regex.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
region.c Incrementally apply AXFR transfer 2024-11-22 15:00:55 +01:00
result.c deduplicate result codes 2025-01-23 15:54:57 -08:00
rwlock.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
safe.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
serial.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
signal.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
sockaddr.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stats.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stdio.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stdtime.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
string.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
symtab.c Refactor and simplify isc_symtab 2025-02-17 11:43:19 +01:00
syslog.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
thread.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
tid.c Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
time.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
timer.c use a thread-local variable to get the current running loop 2024-04-02 10:35:56 +02:00
tls.c Add new logging category for logging crypto errors in libisc 2024-11-26 11:22:33 +01:00
tm.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
url.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
utf8.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
uv.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
work.c Improve the Userspace RCU integration 2023-04-27 12:38:53 +02:00
xml.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00