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

Reply via email to