Thread (12 messages) 12 messages, 6 authors, 2023-05-28

Re: [PATCH net-next v3] net: ioctl: Use kernel memory on protocol ioctl callbacks

From: Simon Horman <hidden>
Date: 2023-05-25 14:54:50
Also in: linux-sctp, lkml, mptcp

On Thu, May 25, 2023 at 04:19:32PM +0200, Eric Dumazet wrote:
On Thu, May 25, 2023 at 2:55 PM Breno Leitao [off-list ref] wrote:
quoted
Most of the ioctls to net protocols operates directly on userspace
argument (arg). Usually doing get_user()/put_user() directly in the
ioctl callback.  This is not flexible, because it is hard to reuse these
functions without passing userspace buffers.

Change the "struct proto" ioctls to avoid touching userspace memory and
operate on kernel buffers, i.e., all protocol's ioctl callbacks is
adapted to operate on a kernel memory other than on userspace (so, no
more {put,get}_user() and friends being called in the ioctl callback).
 diff --git a/include/net/phonet/phonet.h b/include/net/phonet/phonet.h
quoted
index 862f1719b523..93705d99f862 100644
--- a/include/net/phonet/phonet.h
+++ b/include/net/phonet/phonet.h
@@ -109,4 +109,23 @@ void phonet_sysctl_exit(void);
 int isi_register(void);
 void isi_unregister(void);

+#ifdef CONFIG_PHONET
+int phonet_sk_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
+
+static inline bool phonet_is_sk(struct sock *sk)
+{
+       return sk->sk_family == PF_PHONET && sk->sk_protocol == PN_PROTO_PHONET;
+}
+#else
+static inline bool phonet_is_sk(struct sock *sk)
+{
+       return 0;
+}
+
+static inline int phonet_sk_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
+{
+       return 1;
+}
+#endif
+
PHONET can be built as a module, so I guess the compiler would
complain if "CONFIG_PHONET=m" ???
Yes, indeed it does.

-- 
pw-bot: cr
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help