android_kernel_sony_sdm845/include
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Vakul Garg dfa24bc6d5 UPSTREAM: net/tls: Fixed race condition in async encryption
On processors with multi-engine crypto accelerators, it is possible that
multiple records get encrypted in parallel and their encryption
completion is notified to different cpus in multicore processor. This
leads to the situation where tls_encrypt_done() starts executing in
parallel on different cores. In current implementation, encrypted
records are queued to tx_ready_list in tls_encrypt_done(). This requires
addition to linked list 'tx_ready_list' to be protected. As
tls_decrypt_done() could be executing in irq content, it is not possible
to protect linked list addition operation using a lock.

To fix the problem, we remove linked list addition operation from the
irq context. We do tx_ready_list addition/removal operation from
application context only and get rid of possible multiple access to
the linked list. Before starting encryption on the record, we add it to
the tail of tx_ready_list. To prevent tls_tx_records() from transmitting
it, we mark the record with a new flag 'tx_ready' in 'struct tls_rec'.
When record encryption gets completed, tls_encrypt_done() has to only
update the 'tx_ready' flag to true & linked list add operation is not
required.

The changed logic brings some other side benefits. Since the records
are always submitted in tls sequence number order for encryption, the
tx_ready_list always remains sorted and addition of new records to it
does not have to traverse the linked list.

Lastly, we renamed tx_ready_list in 'struct tls_sw_context_tx' to
'tx_list'. This is because now, the some of the records at the tail are
not ready to transmit.

Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption")
Change-Id: Ia6b257be1354681c9b9e6592e1636658025989c5
Signed-off-by: Vakul Garg <vakul.garg@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 17:58:36 +07:00
..
acpi ACPI: scan: Use unique number for instance_no 2021-03-30 14:41:41 +02:00
asm-generic BACKPORT: bpf: Support llvm-objcopy for vmlinux BTF 2026-05-15 17:58:11 +07:00
clocksource
crypto BACKPORT: crypto: scatterwalk - remove 'chain' argument from scatterwalk_crypto_chain() 2026-05-15 17:58:28 +07:00
drm treewide: Backport new vmalloc for large performance benefits 2026-05-15 17:48:25 +07:00
dt-bindings
keys
kvm
linux UPSTREAM: bpf: Fix build error without CONFIG_INET 2026-05-15 17:58:19 +07:00
math-emu
media
memory
microvisor
misc
net UPSTREAM: net/tls: Fixed race condition in async encryption 2026-05-15 17:58:36 +07:00
pcmcia
ras
rdma
rxrpc
scsi Merge remote-tracking branch 'common/android-4.9-q' into android13-4.9-sdm845 2022-11-09 19:25:28 +02:00
soc
sound Revert "ANDROID: ALSA: jack: Update supported jack switch types" 2026-01-06 16:27:45 +02:00
target scsi: target: Fix ordered tag handling 2021-11-26 11:48:41 +01:00
trace UPSTREAM: xdp: Add devmap_hash map type for looking up devices by hashed index 2026-05-15 17:58:04 +07:00
uapi UPSTREAM: tls: RX path for ktls 2026-05-15 17:58:23 +07:00
video Merge remote-tracking branch 'common/android-4.9-q' into android12-4.9-sdm845 2022-09-06 06:20:26 +03:00
vservices
xen xen/gnttab: fix gnttab_end_foreign_access() without page specified 2022-03-11 10:03:33 +01:00