Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
a284be2
slurmcltd - Mark REQUEST_PERSIST_INIT as keep_msg
naterini Feb 5, 2026
47134e1
Prevent packing null topo_gres_bitmap when gres rebuild_topo fails
saboritoscar Jan 28, 2026
4869f18
Merge branch 'cherrypick-2876-25.11' into 'slurm-25.11'
lipixx Feb 9, 2026
ae01e4d
Merge branch 'cherrypick-2908-25.11' into 'slurm-25.11'
mcmult Feb 10, 2026
acb1cb7
cgroup/v2 - Make function more generic
lipixx Feb 9, 2026
0f9ff8c
cgroup/v2 - Change root cgroup of slurmd process to a new subcgroup
mikicat Jan 28, 2026
a955ffd
Add changelog for the previous 2 commits
mikicat Feb 10, 2026
5afa677
Merge branch 'cherrypick-2902-25.11' into 'slurm-25.11'
lipixx Feb 10, 2026
368bf8c
Fix sprio regression not handling comma separated list of jobids
Feb 10, 2026
dbd3778
Merge branch 'cherrypick-2936-25.11' into 'slurm-25.11'
gaijin03 Feb 13, 2026
2eb4156
Fix container_id memory leaks
naterini Feb 6, 2026
269bf4e
xcpuinfo - Collect all P-core frequencies not just one
asanchez1987 Feb 5, 2026
38075a1
Merge branch 'cherrypick-2906-25.11' into 'slurm-25.11'
gaijin03 Feb 13, 2026
2a752a9
Merge branch 'cherrypick-2919-25.11' into 'slurm-25.11'
gaijin03 Feb 13, 2026
3a2ddfc
namespace/linux - add disable_bpf_token option
mcmult Jan 15, 2026
02d4da2
Docs - Fix namespace link and title on documentation page
SirDoctorK Feb 12, 2026
27d5a80
Docs - Update position for namespace entry after page rename
SirDoctorK Feb 12, 2026
236c1fa
Docs - Update explanatory hint for namespace page
SirDoctorK Feb 13, 2026
66f074b
slurmctld - For EXPEDITED_REQUEUE, only requeue on failure
bgregory-design Feb 6, 2026
7f56f4a
slurmctld - Catch expedited requeue while epilog is running
bgregory-design Feb 9, 2026
a5d2b0f
Docs - Update sshare man page
Feb 13, 2026
0178580
slurmctld - Don't clear POWERED_DOWN cloud nodes from topo when in co…
MeganD101 Jan 8, 2026
135a98d
interfaces/topology - Remove node from topologies not in topology_str
MeganD101 Jan 9, 2026
d5751d2
slurmctld - Prevent outdated Topology config files from persisting
MeganD101 Jan 8, 2026
2fff9a1
Merge branch 'cherrypick-2806-25.11' into 'slurm-25.11'
gaijin03 Feb 13, 2026
dd450d1
Merge branch 'cherrypick-2884-25.11' into 'slurm-25.11'
MarshallGarey Feb 13, 2026
3d306d1
Merge branch 'cherrypick-2895-25.11' into 'slurm-25.11'
naterini Feb 16, 2026
6b7ef48
slurmctld - Prevent dropping node_space table entry with diff licenses
MeganD101 Feb 13, 2026
a089201
Fix rare CLOUD nodes turning FUTURE on restart
bsngardner Jan 13, 2026
3c8658f
Merge branch 'cherrypick-2868-25.11' into 'slurm-25.11'
gaijin03 Feb 17, 2026
38344ee
Merge branch 'cherrypick-2960-25.11' into 'slurm-25.11'
gaijin03 Feb 17, 2026
0ae715c
Merge branch 'cherrypick-2948-25.11' into 'slurm-25.11'
mcmult Feb 17, 2026
d5eac75
accept() first in rpc_mgr()
naterini Feb 13, 2026
920257c
Avoid pthread_join() on running thread
naterini Feb 13, 2026
36acfd8
tls - Add tls_g_is_client_authenticated()
benglines Dec 16, 2025
ad65c91
conmgr - Add tls_is_client_authenticated()
benglines Dec 16, 2025
3c18816
Add conn_is_mtls to slurm_msg_t
benglines Dec 16, 2025
3749add
conmgr - Record client authentication in slurm_msg_t
benglines Dec 16, 2025
a7d80bc
Check msg->conn_is_mtls for client auth instead of msg->conn
benglines Dec 16, 2025
c950c99
Merge branch 'cherrypick-2930-25.11' into 'slurm-25.11'
benglines Feb 17, 2026
7188d4f
slurmd - Fix potential process leak when handling --get-user-env
armengod-schedmd Dec 24, 2025
e6dca18
Merge branch 'cherrypick-2849-25.11' into 'slurm-25.11'
naterini Feb 18, 2026
58624e1
slurmctld - Track if _sched_agent() alive
naterini Feb 11, 2026
8e31b35
slurmctld - Always wait for scheduler thread to exit
naterini Feb 11, 2026
ea56759
slurmctld - Wake up _sched_agent() thread on shutdown
naterini Feb 12, 2026
005eacf
slurmcltd - Avoid tracking _sched_agent() thread via thread_id
naterini Feb 12, 2026
e836450
Merge branch 'cherrypick-2918-25.11' into 'slurm-25.11'
gaijin03 Feb 18, 2026
e88d9f3
Fix segfault in eval_nodes_block()
Feb 10, 2026
b683415
Merge branch 'cherrypick-2698-25.11' into 'slurm-25.11'
asanchez1987 Feb 18, 2026
b95b346
Merge branch 'cherrypick-2952-25.11' into 'slurm-25.11'
gaijin03 Feb 18, 2026
e5e4864
Add cluster_license_count()
MeganD101 Feb 17, 2026
731ca96
slurmctld - sort resv licenses appended to node_space table licenses
MeganD101 Feb 17, 2026
ed328a7
slurmctld - Only check for diff in relevant HRes licenses in backfill
MeganD101 Feb 13, 2026
cbc1fee
Merge branch 'cherrypick-2954-25.11' into 'slurm-25.11'
MeganD101 Feb 18, 2026
0936f91
Merge branch 'cherrypick-2932-25.11' into 'slurm-25.11'
gaijin03 Feb 18, 2026
1307173
slurmctld - If no bf_licenses, don't set licenses based later_start
MeganD101 Feb 18, 2026
fdb5702
Merge branch 'cherrypick-2983-25.11' into 'slurm-25.11'
gaijin03 Feb 18, 2026
db99d2b
Docs - Update REST API reference and changelog for 25.11.3
MarshallGarey Feb 19, 2026
0f1347f
Populate CHANGELOG for 25.11.3
mcmult Feb 19, 2026
c21c011
Update META for 25.11.3
mcmult Feb 19, 2026
8767184
Remove ExecReload from slurmrestd unit file
cinek810 Feb 19, 2026
ac1b121
Merge branch 'cherrypick-2985-25.11' into 'slurm-25.11'
naterini Feb 20, 2026
b68b2d3
Fix archive order so period_start is set before archive_write_file us…
cinek810 Feb 23, 2026
6aaef98
Merge branch 'cherrypick-2885-25.11' into 'slurm-25.11'
MeganD101 Feb 24, 2026
5c795f9
Skip x11 shutdown when x11 functionality was not requested
hautreux Jan 14, 2026
5081044
Merge branch 'cherrypick-2823-25.11' into 'slurm-25.11'
mcmult Feb 25, 2026
84ea30a
Fix curl build errors with libcurl 8.16+
mcmult Feb 24, 2026
136794e
Merge branch 'cherrypick-3006-25.11' into 'slurm-25.11'
gaijin03 Feb 26, 2026
a705202
Docs - Update restrictions on placement and number of hostlist ranges
SirDoctorK Feb 25, 2026
6a26b65
Merge branch 'cherrypick-3014-25.11' into 'slurm-25.11'
SirDoctorK Feb 27, 2026
23bbd95
scrun - Fix segfault in env_array_for_job() after SWAP
Feb 13, 2026
c420393
Merge branch 'cherrypick-2959-25.11' into 'slurm-25.11'
lipixx Feb 27, 2026
0023297
Fix two memory leaks
tripiana Feb 23, 2026
7e239fc
Merge branch 'cherrypick-3000-25.11' into 'slurm-25.11'
gaijin03 Mar 2, 2026
b607020
Merge branch 'slurm-25.11' into 25.11.ug
itkovian Mar 2, 2026
0825419
job_submit/lua - add "core_spec" to job_desc
iddecker Mar 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CHANGELOG/slurm-25.11.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,47 @@
## Changes in 25.11.3

* Fix regression from af2c0bd which caused usercpu and systemcpu to be missing for job steps.
* Fixed issue where RestrictedCoresPerGPU with shared gres are limited to using restricted cores on one job per sharing gres.
* slurmd - Fix regression that could cause thread limits to not be enforced for handling incoming RPCs.
* Fix "sacctmgr show conf" to properly display CommitDelay in seconds instead of as a boolean.
* Fix cron/requeued jobs being incorrectly reported as runaway
* slurmctld - Prevent the double-removal of accounting usage for jobs being requeued that are in the COMPLETED or COMPLETING state.
* When deleting a QOS from the DB, also remove it from partition QOS, AllowQOS and DenyQOS fields.
* Fixed bug that could cause the detected CPU count to be lower than actual available CPU count. This bug could have resulted in the default value for conmgr_threads being lower than the number of available CPUs in sackd, scrun, slurmctld, slurmscriptd, slurmd, slurmstepd, slurmdbd, and slurmrestd when the assigned CPUs are not sequential.
* slurmdbd - Prevent the following slurmdbd.conf options from overriding the default values of any in the list not specified: AllowNoDefAcct, AllResourcesAbsolute, DisableCoordDBD, DisableArchiveCommands.
* salloc/sbatch - Nesting a non-stepmgr salloc or sbatch inside an existing job allocation that enabled the stepmgr will no longer result in the inner job’s steps failing to launch.
* Prevent slurmd -G from initializing sack processing thread.
* Added SLURM_CLUSTER_NAME, SLURM_JOB_ACCOUNT and SLURM_JOB_GROUP environment variables when a step is launched.
* slurmctld - Prevent marking external nodes as being unresponsive when reconfiguring if SlurmctldParameters=enable_configless is used.
* Fix potential segfault when attempting to look up the controller address via DNS in configless mode.
* Fix "undefined symbol: gpu_common_underscorify_tolower" when gpu/nrt plugin in use.
* slurmrestd - Avoid memory leak on authentication failures with invalid bearer tokens.
* Fix potential deadlock in _x11_signal_handler() during stepd_cleanup().
* slurmctld - Fix reservations AllowedPartitions logic leading to incorrect purge of valid reservations in some use-cases.
* slurmcltd - Avoid persistent connections hangs when enable_async_reply is configured.
* Prevent potential controller segfault when reconfiguring after gres file updates.
* Reparent slurmd to a subcgroup to avoid conflicting with systemd.
* Fix sprio regression not handling comma separated list of jobids.
* slurmctld,slurmd - Fix memory leak when container ID is populated.
* slurmd - Fix P-core detection on processors with varying P-core frequencies and in cpuset-restricted environments.
* namespace/linux - add disable_bpf_token option.
* slurmctld - Avoid expedited requeue triggering a job to requeue when job exit code was zero.
* slurmctld - Avoid expedited requeue of jobs while waiting for job epilog script to complete.
* slurmctld - Prevent removing cloud nodes from the topology when putting them in the POWERED_DOWN state if they are present in topology.conf or topology.yaml and their node configuration did not specify the Topology option.
* interfaces/topology - When modifying a nodes topology with the Topology option in slurm.conf or the slurmd --conf Topology, change the topology to fully match the new topology.
* slurmctld - Allow changes to topology.conf or topology.yaml, and slurm.conf node configuration Topology option to take effect on a reconfigure or restart when power saving is enabled.
* slurmctld - Prevent backfill from combining future timeslots if they have different license reservations.
* Fix CLOUD nodes infrequently becoming FUTURE on slurmctld restart.
* slurmdbd - Avoid race condition that could cause a hang during shutdown when incoming connection fails.
* slurmdbd - Avoid crash during shutdown due to `sacctmgr shutdown` request.
* Fix slurmctld assertion when using "enable_async_reply" and certmgr is used for a TLS enabled cluster.
* Fix potential slurmd process leak when handling --get-user-env.
* slurmcltd - Avoid race condition that could cause the StateSaveLocation updates to be missed during shutdown.
* slurmcltd - Avoid race condition that could cause slurmctld to hang during shutdown before updating StateSaveLocation.
* slurmctld - Avoid race condition that could cause shutdown to wait on the wrong thread.
* Fix handling of 0 node test allocations in topology/block.
* slurmctld - In backfill, prevent unnecessarily testing jobs at future times using the select plugin if it is guaranteed to fail.

## Changes in 25.11.2

* slurmstepd - Revert regression that would apply job environment to container runtime invocation.
Expand Down
4 changes: 2 additions & 2 deletions META
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
Name: slurm
Major: 25
Minor: 11
Micro: 2
Version: 25.11.2
Micro: 3
Version: 25.11.3
Release: 1

##
Expand Down
2 changes: 1 addition & 1 deletion debian/changelog
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slurm-smd (25.11.2-1) UNRELEASED; urgency=medium
slurm-smd (25.11.3-1) UNRELEASED; urgency=medium

* Initial release.

Expand Down
2 changes: 1 addition & 1 deletion doc/html/documentation.shtml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ may be found in the <a href="https://slurm.schedmd.com/archive/">archive</a>.
<li><a href="dynamic_nodes.html">Dynamic Nodes</a></li>
<li><a href="elasticsearch.html">Elasticsearch Guide</a></li>
<li><a href="jobcomp_kafka.html">Job Completion Kafka plugin Guide</a></li>
<li><a href="namespace_tmpfs.html">namespace/tmpfs - Job Specific Temporary File Management</a></li>
<li><a href="jwt.html">JSON Web Tokens Authentication</a></li>
<li><a href="federation.html">Federated Scheduling Guide</a></li>
<li><a href="pam_slurm_adopt.html">Job Containment (SSH Session Control) with pam_slurm_adopt</a></li>
Expand All @@ -55,6 +54,7 @@ may be found in the <a href="https://slurm.schedmd.com/archive/">archive</a>.
<li><a href="hres.html">Hierarchical Resources (HRES)</a> (in Beta)</li>
<li><a href="mcs.html">Multi-Category Security (MCS) Guide</a></li>
<li><a href="nss_slurm.html">Name Service Caching Through NSS Slurm</a></li>
<li><a href="namespace.html">Namespace Plugins (replaces job_container plugins)</a></li>
<li><a href="network.html">Network Configuration Guide</a></li>
<li><a href="openapi_release_notes.html">OpenAPI Plugin Release Notes</a></li>
<li><a href="power_save.html">Power Saving Guide (power down idle nodes)</a></li>
Expand Down
66 changes: 66 additions & 0 deletions doc/html/openapi_release_notes/slurm-25.11.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,69 @@
<h2 id="25113">Slurm 25.11.3<a class="slurm_link" href="#25113"></a></h2>
<h3>data_parser/v0.0.44</h3>
<h4>Modified Fields</h4>
<table class="tchange">
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info.version = "Slurm-25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].release = "25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].version.micro = "3";</td>
</tr>
</table>
<h3>data_parser/v0.0.43</h3>
<h4>Modified Fields</h4>
<table class="tchange">
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info.version = "Slurm-25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].release = "25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].version.micro = "3";</td>
</tr>
</table>
<h3>data_parser/v0.0.42</h3>
<h4>Modified Fields</h4>
<table class="tchange">
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info.version = "Slurm-25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].release = "25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].version.micro = "3";</td>
</tr>
</table>
<h3>data_parser/v0.0.41</h3>
<h4>Modified Fields</h4>
<table class="tchange">
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info.version = "Slurm-25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].release = "25.11.3";</td>
</tr>
<tr class="trchange">
<td class="tdfield">Replaced</td>
<td class="tdchange">.info["x-slurm"].version.micro = "3";</td>
</tr>
</table>

<h2 id="25112">Slurm 25.11.2<a class="slurm_link" href="#25112"></a></h2>
<h3>data_parser/v0.0.44</h3>
<h4>Modified Fields</h4>
Expand Down
2 changes: 1 addition & 1 deletion doc/html/rest_api.shtml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div class="app-desc">API to access and control Slurm</div>
<div class="app-desc">More information: <a href="https://www.schedmd.com/">https://www.schedmd.com/</a></div>
<div class="app-desc">Contact Info: <a href="sales@schedmd.com">sales@schedmd.com</a></div>
<div class="app-desc">Version: Slurm-25.11.2</div>
<div class="app-desc">Version: Slurm-25.11.3</div>
<div class="app-desc">BasePath:</div>
<div class="license-info">Apache 2.0</div>
<div class="license-url">https://www.apache.org/licenses/LICENSE-2.0.html</div>
Expand Down
4 changes: 2 additions & 2 deletions doc/man/man1/sshare.1
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ from sibling accounts.

.TP
\f3FairShare\fP
The Fair\-Share factor, based on a user or account's assigned shares and
the effective usage charged to them or their accounts.
The Fair\-Share factor, based on a user's assigned shares and
the effective usage charged to them.
.IP

.TP
Expand Down
9 changes: 9 additions & 0 deletions doc/man/man5/namespace.yaml.5
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ Default namespace configuration. If specified this contains the fields described
in options.
.IP

.TP
\fBdisable_bpf_token\fR
If specified this disables the use of bpf tokens in the namespace plugin. Use of
this option when ConstrainDevices is set in the cgroup.conf file will result in
devices only being constrained at the job level, individual steps won't actually
be constrained if requesting fewer devices than the job does. This will also
permit ConstrainDevices to work on kernels where bpf tokens are not available.
.IP

.TP
\fBnode_confs\fR
List of node namespace configurations. The list element attributes are described
Expand Down
13 changes: 4 additions & 9 deletions doc/man/man5/slurm.conf.5
Original file line number Diff line number Diff line change
Expand Up @@ -6949,17 +6949,12 @@ Multiple node names may be comma separated (e.g. "alpha,beta,gamma")
and/or a simple node range expression may optionally be used to
specify numeric ranges of nodes to avoid building a configuration
file with large numbers of entries.
The node range expression can contain one pair of square brackets
The node range expression can contain one or more pairs of square brackets
with a sequence of comma\-separated numbers and/or ranges of numbers
separated by a "\-" (e.g. "linux[0\-64,128]", or "lx[15,18,32\-33]").
Note that the numeric ranges can include one or more leading
zeros to indicate the numeric portion has a fixed number of digits
separated by a "\-" (e.g., "linux[0\-64,128]", "lx[15,18,32\-33]", or
"rack[0\-63]_blade[0\-41]"). Note that the numeric ranges can include one or
more leading zeros to indicate the numeric portion has a fixed number of digits
(e.g. "linux[0000\-1023]").
Multiple numeric ranges can be included in the expression
(e.g. "rack[0\-63]_blade[0\-41]").
If one or more numeric expressions are included, one of them
must be at the end of the name (e.g. "unit[0\-31]rack" is invalid),
but arbitrary names can always be used in a comma\-separated list.
.LP
The node configuration specified the following information:

Expand Down
1 change: 0 additions & 1 deletion etc/slurmrestd.service.in
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ ExecStart=@sbindir@/slurmrestd $SLURMRESTD_OPTIONS
Environment=SLURM_JWT=daemon
# Listen on TCP socket by default.
Environment=SLURMRESTD_LISTEN=:@SLURMRESTD_PORT@
ExecReload=/bin/kill -HUP $MAINPID
LimitMEMLOCK=infinity

[Install]
Expand Down
2 changes: 1 addition & 1 deletion slurm.spec
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Name: slurm
Version: 25.11.2
Version: 25.11.3
%define rel 1
Release: %{rel}.%{gittag}%{?dist}%{?gpu}.ug
Summary: Slurm Workload Manager
Expand Down
4 changes: 2 additions & 2 deletions src/common/env.c
Original file line number Diff line number Diff line change
Expand Up @@ -2327,7 +2327,7 @@ char **env_array_user_default(const char *username)
timeleft -= (now.tv_usec - begin.tv_usec) / 1000;
if (timeleft <= 0) {
verbose("timeout waiting for "SUCMD" to complete");
kill(-child, 9);
kill(child, 9);
break;
}
if ((rc = poll(&ufds, 1, timeleft)) <= 0) {
Expand Down Expand Up @@ -2370,7 +2370,7 @@ char **env_array_user_default(const char *username)
env_array_free(child_args.tmp_env);

for (config_timeout=0; ; config_timeout++) {
kill(-child, SIGKILL); /* Typically a no-op */
kill(child, SIGKILL); /* Typically a no-op */
if (config_timeout)
sleep(1);
if (waitpid(child, &rc, WNOHANG) > 0)
Expand Down
1 change: 1 addition & 0 deletions src/common/job_record.c
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ extern void job_record_delete(void *job_entry)
xfree(job_ptr->burst_buffer_state);
xfree(job_ptr->comment);
xfree(job_ptr->container);
xfree(job_ptr->container_id);
xfree(job_ptr->clusters);
xfree(job_ptr->cpus_per_tres);
xfree(job_ptr->extra);
Expand Down
8 changes: 5 additions & 3 deletions src/common/persist_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,9 +424,11 @@ extern void slurm_persist_conn_recv_server_fini(void)
* thread_count mutex which this has locked.
* After joining persist_service_conn[i] could be NULL
*/
slurm_mutex_unlock(&thread_count_lock);
slurm_thread_join(thread_id);
slurm_mutex_lock(&thread_count_lock);
if (thread_id != pthread_self()) {
slurm_mutex_unlock(&thread_count_lock);
slurm_thread_join(thread_id);
slurm_mutex_lock(&thread_count_lock);
}
}
if (persist_service_conn[i] && persist_service_conn[i]->pcon) {
void *conn = persist_service_conn[i]->pcon->conn;
Expand Down
3 changes: 3 additions & 0 deletions src/common/slurm_protocol_defs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1878,6 +1878,7 @@ extern void slurm_free_job_info_members(job_info_t * job)
xfree(job->het_job_id_set);
xfree(job->job_size_str);
xfree(job->licenses);
xfree(job->licenses_allocated);
xfree(job->mail_user);
xfree(job->mcs_label);
xfree(job->mem_per_tres);
Expand All @@ -1894,6 +1895,7 @@ extern void slurm_free_job_info_members(job_info_t * job)
xfree(job->req_node_inx);
xfree(job->req_nodes);
xfree(job->resv_name);
xfree(job->resv_ports);
free_job_resources(&job->job_resrcs);
xfree(job->selinux_context);
xfree(job->state_desc);
Expand Down Expand Up @@ -2119,6 +2121,7 @@ extern void slurm_free_job_step_create_request_msg(
{
if (msg) {
xfree(msg->container);
xfree(msg->container_id);
xfree(msg->cpus_per_tres);
xfree(msg->exc_nodes);
xfree(msg->features);
Expand Down
2 changes: 2 additions & 0 deletions src/common/slurm_protocol_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,8 @@ typedef struct slurm_msg {
* our trust store) */
void *conn; /* interfaces/conn data used for sending this message and
* receiving a response */
bool conn_is_mtls; /* True if the connection used to receive this message
* used mTLS */

uint16_t msg_type; /* really a slurm_msg_type_t but needs to be
* this way for packing purposes. message type */
Expand Down
4 changes: 4 additions & 0 deletions src/conmgr/rpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@

#include "src/conmgr/conmgr.h"
#include "src/conmgr/mgr.h"
#include "src/conmgr/tls.h"

static int _try_parse_rpc(conmgr_fd_t *con, slurm_msg_t **msg_ptr)
{
Expand Down Expand Up @@ -153,6 +154,9 @@ static int _try_parse_rpc(conmgr_fd_t *con, slurm_msg_t **msg_ptr)
set_buf_offset(msg->buffer, size_buf(rpc));
}

if (con->tls)
msg->conn_is_mtls = tls_is_client_authenticated(con);

/* notify conmgr we processed some data successfully */
set_buf_offset(con->in, need);
}
Expand Down
7 changes: 7 additions & 0 deletions src/conmgr/tls.c
Original file line number Diff line number Diff line change
Expand Up @@ -808,3 +808,10 @@ extern void tls_check_fingerprint(conmgr_callback_args_t conmgr_args, void *arg)
close_con(false, con);
}
}

extern bool tls_is_client_authenticated(conmgr_fd_t *con)
{
xassert(con->tls);

return tls_g_is_client_authenticated(con->tls);
}
5 changes: 5 additions & 0 deletions src/conmgr/tls.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,9 @@ extern void tls_handle_write(conmgr_callback_args_t conmgr_args, void *arg);
extern void tls_check_fingerprint(conmgr_callback_args_t conmgr_args,
void *arg);

/*
* Return true if client is authenticated via TLS
*/
extern bool tls_is_client_authenticated(conmgr_fd_t *con);

#endif /* _CONMGR_TLS_H */
26 changes: 13 additions & 13 deletions src/curl/slurm_curl.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,20 +170,20 @@ extern int slurm_curl_request(const char *data, const char *url,
CURL_SETOPT(c, CURLOPT_READFUNCTION, _read_function);
CURL_SETOPT(c, CURLOPT_WRITEFUNCTION, _write_callback);
CURL_SETOPT(c, CURLOPT_WRITEDATA, (void *) &chunk);
CURL_SETOPT(c, CURLOPT_TIMEOUT, timeout);
CURL_SETOPT(c, CURLOPT_TIMEOUT, (long) timeout);
CURL_SETOPT(c, CURLOPT_URL, url);

if (!verify_cert) {
/* These are needed to work with self-signed certificates */
CURL_SETOPT(c, CURLOPT_SSL_VERIFYPEER, 0);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYHOST, 0);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYPEER, 0L);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYHOST, 0L);
}

if (use_mtls) {
if (mtls_ca_path) {
CURL_SETOPT(c, CURLOPT_CAINFO, mtls_ca_path);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYPEER, 1);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYHOST, 2);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYPEER, (long) 1);
CURL_SETOPT(c, CURLOPT_SSL_VERIFYHOST, (long) 2);
}
CURL_SETOPT(c, CURLOPT_SSLCERT, mtls_cert_path);
CURL_SETOPT(c, CURLOPT_SSLKEY, mtls_key_path);
Expand All @@ -197,27 +197,27 @@ extern int slurm_curl_request(const char *data, const char *url,
switch (request_method) {
case HTTP_REQUEST_POST:
CURL_SETOPT(c, CURLOPT_CUSTOMREQUEST, NULL);
CURL_SETOPT(c, CURLOPT_POST, 1);
CURL_SETOPT(c, CURLOPT_POST, 1L);
CURL_SETOPT(c, CURLOPT_POSTFIELDS, data);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0L);
break;
case HTTP_REQUEST_PATCH:
CURL_SETOPT(c, CURLOPT_CUSTOMREQUEST, "PATCH");
CURL_SETOPT(c, CURLOPT_POST, 1);
CURL_SETOPT(c, CURLOPT_POST, 1L);
CURL_SETOPT(c, CURLOPT_POSTFIELDS, data);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0L);
break;
case HTTP_REQUEST_GET:
CURL_SETOPT(c, CURLOPT_CUSTOMREQUEST, NULL);
CURL_SETOPT(c, CURLOPT_POST, 0);
CURL_SETOPT(c, CURLOPT_POST, 0L);
CURL_SETOPT(c, CURLOPT_POSTFIELDS, NULL);
CURL_SETOPT(c, CURLOPT_HTTPGET, 1);
CURL_SETOPT(c, CURLOPT_HTTPGET, 1L);
break;
case HTTP_REQUEST_DELETE:
CURL_SETOPT(c, CURLOPT_CUSTOMREQUEST, "DELETE");
CURL_SETOPT(c, CURLOPT_POST, 0);
CURL_SETOPT(c, CURLOPT_POST, 0L);
CURL_SETOPT(c, CURLOPT_POSTFIELDS, NULL);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0);
CURL_SETOPT(c, CURLOPT_HTTPGET, 0L);
break;
default:
error("%s: Unable to process this request: %s", __func__,
Expand Down
Loading