xsk: lock the control mutex in sock_diag interface
When accessing the members of an XDP socket, the control mutex should
be held. This commit fixes that.
Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Fixes: a36b38aa2a
("xsk: add sock_diag interface for AF_XDP")
Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
42fddcc7c6
commit
25dc18ff9b
|
@ -97,6 +97,7 @@ static int xsk_diag_fill(struct sock *sk, struct sk_buff *nlskb,
|
|||
msg->xdiag_ino = sk_ino;
|
||||
sock_diag_save_cookie(sk, msg->xdiag_cookie);
|
||||
|
||||
mutex_lock(&xs->mutex);
|
||||
if ((req->xdiag_show & XDP_SHOW_INFO) && xsk_diag_put_info(xs, nlskb))
|
||||
goto out_nlmsg_trim;
|
||||
|
||||
|
@ -117,10 +118,12 @@ static int xsk_diag_fill(struct sock *sk, struct sk_buff *nlskb,
|
|||
sock_diag_put_meminfo(sk, nlskb, XDP_DIAG_MEMINFO))
|
||||
goto out_nlmsg_trim;
|
||||
|
||||
mutex_unlock(&xs->mutex);
|
||||
nlmsg_end(nlskb, nlh);
|
||||
return 0;
|
||||
|
||||
out_nlmsg_trim:
|
||||
mutex_unlock(&xs->mutex);
|
||||
nlmsg_cancel(nlskb, nlh);
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue