On 08/31/2018 06:25 AM, John Fastabend wrote: > Currently we check sk_user_data is non NULL to determine if the sk > exists in a map. However, this is not sufficient to ensure the psock > or the ULP ops are not in use by another user, such as kcm or TLS. To > avoid this when adding a sock to a map also verify it is of the > correct ULP type. Additionally, when releasing a psock verify that > it is the TCP_ULP_BPF type before releasing the ULP. The error case > where we abort an update due to ULP collision can cause this error > path. > > For example, > > __sock_map_ctx_update_elem() > [...] > err = tcp_set_ulp_id(sock, TCP_ULP_BPF) <- collides with TLS > if (err) <- so err out here > goto out_free > [...] > out_free: > smap_release_sock() <- calling tcp_cleanup_ulp releases the > TLS ULP incorrectly. > > Fixes: 2f857d04601a ("bpf: sockmap, remove STRPARSER map_flags and add > multi-map support") > Signed-off-by: John Fastabend <john.fastab...@gmail.com>
Applied to bpf, thanks John!