The kernel’s software TLS implementation queues up data for encryption when data is sent through the socket. Once an encryption operation finishes, it goes to the TCP send buffer and actually counts against the SNDBUF limit.
This SNDBUF limit is checked before queuing up TLS encryption operations, so if the userspace send calls complete before encryption operations complete and begin sending, this limit won’t cause the userspace program’s send call to ever return EAGAIN which the test expects. This doesn’t seem to be a bug in the kernel, but rather some inherent flakiness in the way the test operates. In the following debug logging, the sk_wmem_queued_add messages indicate data being sent out after an encryption completes, and the tls_sw: looping ... messages indicate the kernel handling send calls from userspace. In the first case, you can see encryption completes in the middle of the userspace program looping through send calls. However, in the second case the userspace calls complete too quickly before any encryption operations complete and so EAGAIN is never returned. Returned EAGAIN [ 3554.756083] sk_wmem_queued_add: sk = 000000004b009d57, adding 896 bytes [ 3554.756173] sk_wmem_queued_add: sk = 000000004b009d57, adding -896 bytes [ 3554.783629] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.783646] tls_sw: alloc called, sk = 000000004b009d57, sk_wmem_queued = 0 [ 3554.785625] sk_wmem_queued_add: sk = 000000004b009d57, adding 896 bytes [ 3554.785638] sk_wmem_queued_add: sk = 000000004b009d57, adding 16413 bytes [ 3554.785679] sk_wmem_queued_add: sk = 000000004b009d57, adding -17309 bytes [ 3554.785703] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.785710] tls_sw: alloc called, sk = 000000004b009d57, sk_wmem_queued = 0 [ 3554.785769] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.785773] tls_sw: alloc called, sk = 000000004b009d57, sk_wmem_queued = 0 [ 3554.785821] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.785824] tls_sw: alloc called, sk = 000000004b009d57, sk_wmem_queued = 0 [ 3554.785870] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.785873] tls_sw: alloc called, sk = 000000004b009d57, sk_wmem_queued = 0 [ 3554.785919] sk_wmem_queued_add: sk = 000000004b009d57, adding 896 bytes [ 3554.785921] sk_wmem_queued_add: sk = 000000004b009d57, adding 16355 bytes [ 3554.785934] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 17251, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.785936] tls_sw: no memory free goto wait_for_sndbuf [ 3554.796061] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 17251, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.796077] tls_sw: no memory free goto wait_for_sndbuf [ 3554.806196] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 17251, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.806210] tls_sw: no memory free goto wait_for_sndbuf [ 3554.816333] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 17251, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3554.816347] tls_sw: no memory free goto wait_for_sndbuf [ 3554.826422] sk_wmem_queued_add: sk = 000000004b009d57, adding -17251 bytes [ 3554.826500] sk_wmem_queued_add: sk = 000000004b009d57, adding 896 bytes [ 3554.826507] sk_wmem_queued_add: sk = 000000004b009d57, adding 58 bytes [ 3554.826534] sk_wmem_queued_add: sk = 000000004b009d57, adding 896 bytes [ 3554.826541] sk_wmem_queued_add: sk = 000000004b009d57, adding 16413 bytes [ 3554.826547] sk_wmem_queued_add: sk = 000000004b009d57, adding 16297 bytes [ 3554.826551] sk_wmem_queued_add: sk = 000000004b009d57, adding 116 bytes [ 3554.826556] sk_wmem_queued_add: sk = 000000004b009d57, adding 16413 bytes Never returned EAGAIN: [ 3558.816916] sk_wmem_queued_add: sk = 00000000b57a30a9, adding 896 bytes [ 3558.816974] sk_wmem_queued_add: sk = 00000000b57a30a9, adding -896 bytes [ 3558.817418] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.817428] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.817898] sk_wmem_queued_add: sk = 00000000b57a30a9, adding 896 bytes [ 3558.817917] sk_wmem_queued_add: sk = 00000000b57a30a9, adding 16413 bytes [ 3558.817975] sk_wmem_queued_add: sk = 00000000b57a30a9, adding -17309 bytes [ 3558.818009] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818023] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818135] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818141] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818212] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818217] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818260] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818264] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818308] tls_sw: looping, need 16413 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818311] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818354] tls_sw: looping, need 1725 bytes free, sk_wmem_queued = 0, sk_sndbuf = 4608, sk_reserved_mem = 0 [ 3558.818358] tls_sw: alloc called, sk = 00000000b57a30a9, sk_wmem_queued = 0 [ 3558.818372] sk_wmem_queued_add: sk = 00000000b57a30a9, adding 896 bytes [ 3558.818375] sk_wmem_queued_add: sk = 00000000b57a30a9, adding 16355 bytes [ 3558.858731] sk_wmem_queued_add: sk = 00000000b57a30a9, adding -17251 bytes -- You received this bug notification because you are a member of Canonical Platform QA Team, which is subscribed to ubuntu-kernel-tests. https://bugs.launchpad.net/bugs/2085822 Title: ubuntu_kselftests_net net:tls tls.12_aes_ccm.nonblocking Expected 0 (0) != eagain (0) Status in ubuntu-kernel-tests: New Bug description: A failure of the tls.12_aes_ccm.nonblocking case of the net:tls test of ubuntu_kselftests_net was observed on J-nvidia-6.8 version 6.8.0-1017.19 on DGX H100 node hidon. 04:04:50 DEBUG| [stdout] # # RUN tls.12_aes_ccm.nonblocking ... 04:04:50 DEBUG| [stdout] # # tls.c:1266:nonblocking:Expected 0 (0) != eagain (0) 04:04:50 DEBUG| [stdout] # # nonblocking: Test failed at step #9 04:04:50 DEBUG| [stdout] # # FAIL tls.12_aes_ccm.nonblocking All other net:tls sub-cases pass. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/2085822/+subscriptions -- Mailing list: https://launchpad.net/~canonical-ubuntu-qa Post to : canonical-ubuntu-qa@lists.launchpad.net Unsubscribe : https://launchpad.net/~canonical-ubuntu-qa More help : https://help.launchpad.net/ListHelp