On 07.05.2019 16:45, John Fastabend wrote:
Andre Tomt wrote:
On 14.04.2019 22:40, John Fastabend wrote:
On 4/13/19 6:56 PM, Andre Tomt wrote:
On 13.04.2019 17:34, Steinar H. Gunderson wrote:
Hi,

I've been using kTLS for a while, with my video reflector Cubemap
(https://git.sesse.net/?p=cubemap). After I upgraded my server from
4.18.11 to 5.0.6, seemingly I've started seeing corruption. The data sent
with send() (HTTP headers, HLS playlists) appears to be fine, but sendfile()
(actual video data, from a file on tmpfs) is not; after ~20 kB of data
(19626 in one test here), the data appears to be randomly corrupted. Diffing
non-TLS (good) and TLS (bad) video data:

[...]

Hi John

Have you had any luck tracking this down?

Just gave net.git a spin and it is still serving up corrupted data when
ktls is active and using sendfile.  FWIW I only tested without ktls
offload capable hardware (ie in software mode) and no bpf. Same sendfile
usage on a non-ktls socket works fine.

Hi Andre, I should have a series to address this in the next few days. I
still need to resolve a couple corner cases. Hopefully, by next week we
can get bpf tree working for this case.

current linus master, net.git master and bpf.git master are all still not working right, so I took a closer look.

It seems to only happen if sendfile writes more than a maximum tls record size worth of data. If I clamp the sendfile calls to 16384 bytes at a time everything works fine.

Not sure if sendfile triggers record splitting, but could that be what is broken? The bisected commit does touch that part quite extensively.

I made a fest input that just repeats 0-9 a-z 10 times for each character in a loop and got the following corruption post-decryption:

00004f74: 6969 6969 6969 6969 6969  iiiiiiiiii
00004f7e: 6a6a 6a6a 6a6a 6a6a 6a6a  jjjjjjjjjj
00004f88: 6b6b 6b6b 6b6b 6b6b 6b6b  kkkkkkkkkk
00004f92: 6c6c 6c6c 6c6c 6c6c 6c6c  llllllllll
00004f9c: 6d6d 6d6d 6d6d 6d6d 6d6d  mmmmmmmmmm
00004fa6: 6e6e 6e6e 6e6e 6e6e 6e6e  nnnnnnnnnn
00004fb0: 6f6f 6f6f 6f6f 6f6f 6f6f  oooooooooo
00004fba: 7070 7070 7070 7070 7070  pppppppppp
00004fc4: 7171 7171 7171 7171 7171  qqqqqqqqqq
00004fce: 7272 6d6d 6d6d 6d6d 6e6e  rrmmmmmmnn <- uh oh, goes backwards?
00004fd8: 6e6e 6e6e 6e6e 6e6e 6f6f  nnnnnnnnoo
00004fe2: 6f6f 6f6f 6f6f 6f6f 7070  oooooooopp
00004fec: 7070 7070 7070 7070 7171  ppppppppqq
00004ff6: 7171 7171 7171 7171 7272  qqqqqqqqrr
00005000: 7272 7272 7272 7272 7373  rrrrrrrrss
0000500a: 7373 7373 7373 7373 7474  sssssssstt
00005014: 7474 7474 7474 7474 7575  ttttttttuu
0000501e: 7575 7575 7575 7575 7676  uuuuuuuuvv
00005028: 7676 7676 7676 7676 7777  vvvvvvvvww

Reply via email to