On 8 Jan 2020, at 13:15, John Fastabend wrote: > It is possible to build a plaintext buffer using push helper that is larger > than the allocated encrypt buffer. When this record is pushed to crypto > layers this can result in a NULL pointer dereference because the crypto > API expects the encrypt buffer is large enough to fit the plaintext > buffer. > > To resolve catch the cases this can happen and split the buffer into two > records to send individually. Unfortunately, there is still one case to > handle where the split creates a zero sized buffer. In this case we merge > the buffers and unmark the split. This happens when apply is zero and user > pushed data beyond encrypt buffer. This fixes the original case as well > because the split allocated an encrypt buffer larger than the plaintext > buffer and the merge simply moves the pointers around so we now have > a reference to the new (larger) encrypt buffer. > > Perhaps its not ideal but it seems the best solution for a fixes branch > and avoids handling these two cases, (a) apply that needs split and (b) > non apply case. The are edge cases anyways so optimizing them seems not > necessary unless someone wants later in next branches. > > Fixes: d3b18ad31f93d ("tls: add bpf support to sk_msg handling") > Signed-off-by: John Fastabend <john.fastabend@xxxxxxxxx> Acked-by: Jonathan Lemon <jonathan.lemon@xxxxxxxxx>