mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
sockptr: introduce copy_struct_to_sockptr()
We already have copy_struct_from_sockptr() as wrapper to copy_struct_from_user() or copy_struct_from_bounce_buffer(), so it's good to have copy_struct_to_sockptr() as well matching the behavior of copy_struct_to_user() or copy_struct_to_bounce_buffer(). The world would be better without sockptr_t, but having copy_struct_to_sockptr() is better than open code it in various places. I'll use this in my IPPROTO_SMBDIRECT work, but maybe it will also be useful for others... IPPROTO_QUIC will likely also use it. Cc: Dmitry Safonov <0x7f454c46@gmail.com> Cc: Dmitry Safonov <dima@arista.com> Cc: Francesco Ruggeri <fruggeri@arista.com> Cc: Salam Noureddine <noureddine@arista.com> Cc: David Ahern <dsahern@kernel.org> Cc: David S. Miller <davem@davemloft.net> Cc: Michal Luczaj <mhal@rbox.co> Cc: David Wei <dw@davidwei.uk> Cc: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com> Cc: Marcel Holtmann <marcel@holtmann.org> Cc: Xin Long <lucien.xin@gmail.com> Cc: Eric Dumazet <edumazet@google.com> Cc: Kuniyuki Iwashima <kuniyu@google.com> Cc: Paolo Abeni <pabeni@redhat.com> Cc: Willem de Bruijn <willemb@google.com> Cc: Neal Cardwell <ncardwell@google.com> Cc: Jakub Kicinski <kuba@kernel.org> Cc: Simon Horman <horms@kernel.org> Cc: Aleksa Sarai <cyphar@cyphar.com> Cc: Christian Brauner <brauner@kernel.org> CC: Kees Cook <keescook@chromium.org> Cc: netdev@vger.kernel.org Cc: linux-bluetooth@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Link: https://patch.msgid.link/c950ee1578cb93b4411c3731010def9c1cd82f0d.1775576651.git.metze@samba.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
d2c344740b
commit
c5ca9f85d7
|
|
@ -107,6 +107,16 @@ static inline int copy_to_sockptr(sockptr_t dst, const void *src, size_t size)
|
|||
return copy_to_sockptr_offset(dst, 0, src, size);
|
||||
}
|
||||
|
||||
static inline int
|
||||
copy_struct_to_sockptr(sockptr_t dst, size_t usize, const void *src,
|
||||
size_t ksize, bool *ignored_trailing)
|
||||
{
|
||||
if (!sockptr_is_kernel(dst))
|
||||
return copy_struct_to_user(dst.user, usize, src, ksize, ignored_trailing);
|
||||
|
||||
return copy_struct_to_bounce_buffer(dst.kernel, usize, src, ksize, ignored_trailing);
|
||||
}
|
||||
|
||||
static inline void *memdup_sockptr_noprof(sockptr_t src, size_t len)
|
||||
{
|
||||
void *p = kmalloc_track_caller_noprof(len, GFP_USER | __GFP_NOWARN);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user