All of lore.kernel.org
 help / color / mirror / Atom feed
From: Breno Leitao <leitao@debian.org>
To: dccp@vger.kernel.org
Subject: Re: [PATCH net-next v5] net: ioctl: Use kernel memory on protocol ioctl callbacks
Date: Sun, 04 Jun 2023 07:59:27 +0000	[thread overview]
Message-ID: <ZHxEX0TlXX7VV9kX@gmail.com> (raw)
In-Reply-To: <20230602163044.1820619-1-leitao@debian.org>

Hello Willem 

On Sat, Jun 03, 2023 at 10:21:50AM +0200, Willem de Bruijn wrote:
> On Fri, Jun 2, 2023 at 6:31 PM Breno Leitao <leitao@debian.org> wrote:
> > Signed-off-by: Breno Leitao <leitao@debian.org>
> 
> Please check the checkpatch output
> 
> https://patchwork.hopto.org/static/nipa/753609/13265673/checkpatch/stdout

I am checking my current checkpatch before sending the patch, but I am
not seeing the problems above.

My tree is at 44c026a73be8038 ("Linux 6.4-rc3"), and I am not able to
reproduce the problems above.

	$ scripts/checkpatch.pl v5/v5-0001-net-ioctl-Use-kernel-memory-on-protocol-ioctl-cal.patch
	total: 0 errors, 0 warnings, 0 checks, 806 lines checked
	v5/v5-0001-net-ioctl-Use-kernel-memory-on-protocol-ioctl-cal.patch has no obvious style problems and is ready for submission.

Let me investigate what options I am missing when running checkpatch.

> > +/* A wrapper around sock ioctls, which copies the data from userspace
> > + * (depending on the protocol/ioctl), and copies back the result to userspace.
> > + * The main motivation for this function is to pass kernel memory to the
> > + * protocol ioctl callbacks, instead of userspace memory.
> > + */
> > +int sk_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
> > +{
> > +       int rc = 1;
> > +
> > +       if (sk_is_ipmr(sk))
> > +               rc = ipmr_sk_ioctl(sk, cmd, arg);
> > +       else if (sk_is_icmpv6(sk))
> > +               rc = ip6mr_sk_ioctl(sk, cmd, arg);
> > +       else if (sk_is_phonet(sk))
> > +               rc = phonet_sk_ioctl(sk, cmd, arg);
> 
> Does this handle all phonet ioctl cases correctly?
> 
> Notably pn_socket_ioctl has a SIOCPNGETOBJECT that reads and writes a u16.

We are not touching  "struct proto_ops" in this patch at all.  And
pn_socket_ioctl() is part of "struct proto_ops".

	const struct proto_ops phonet_stream_ops = {
		  ...
		  .ioctl          = pn_socket_ioctl,
	}

That said, all the "struct proto_ops" ioctl calls backs continue to use
"unsigned long arg" with userspace information, at least for now.

	struct proto_ops {
		...
		int             (*ioctl)     (struct socket *sock, unsigned int cmd,
					      unsigned long arg);
	}

This patch only changes the "struct proto".

WARNING: multiple messages have this Message-ID (diff)
From: Breno Leitao <leitao@debian.org>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: Remi Denis-Courmont <courmisch@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Alexander Aring <alex.aring@gmail.com>,
	Stefan Schmidt <stefan@datenfreihafen.org>,
	Miquel Raynal <miquel.raynal@bootlin.com>,
	David Ahern <dsahern@kernel.org>,
	Matthieu Baerts <matthieu.baerts@tessares.net>,
	Mat Martineau <martineau@kernel.org>,
	Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
	Xin Long <lucien.xin@gmail.com>,
	axboe@kernel.dk, asml.silence@gmail.com, leit@fb.com,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	dccp@vger.kernel.org, linux-wpan@vger.kernel.org,
	mptcp@lists.linux.dev, linux-sctp@vger.kernel.org
Subject: Re: [PATCH net-next v5] net: ioctl: Use kernel memory on protocol ioctl callbacks
Date: Sun, 4 Jun 2023 00:59:27 -0700	[thread overview]
Message-ID: <ZHxEX0TlXX7VV9kX@gmail.com> (raw)
In-Reply-To: <CAF=yD-Kk9mVWPZN50NUu8uGwEbySNS-WzvJ=1HTTcVsA6OOuvA@mail.gmail.com>

Hello Willem 

On Sat, Jun 03, 2023 at 10:21:50AM +0200, Willem de Bruijn wrote:
> On Fri, Jun 2, 2023 at 6:31 PM Breno Leitao <leitao@debian.org> wrote:
> > Signed-off-by: Breno Leitao <leitao@debian.org>
> 
> Please check the checkpatch output
> 
> https://patchwork.hopto.org/static/nipa/753609/13265673/checkpatch/stdout

I am checking my current checkpatch before sending the patch, but I am
not seeing the problems above.

My tree is at 44c026a73be8038 ("Linux 6.4-rc3"), and I am not able to
reproduce the problems above.

	$ scripts/checkpatch.pl v5/v5-0001-net-ioctl-Use-kernel-memory-on-protocol-ioctl-cal.patch
	total: 0 errors, 0 warnings, 0 checks, 806 lines checked
	v5/v5-0001-net-ioctl-Use-kernel-memory-on-protocol-ioctl-cal.patch has no obvious style problems and is ready for submission.

Let me investigate what options I am missing when running checkpatch.

> > +/* A wrapper around sock ioctls, which copies the data from userspace
> > + * (depending on the protocol/ioctl), and copies back the result to userspace.
> > + * The main motivation for this function is to pass kernel memory to the
> > + * protocol ioctl callbacks, instead of userspace memory.
> > + */
> > +int sk_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
> > +{
> > +       int rc = 1;
> > +
> > +       if (sk_is_ipmr(sk))
> > +               rc = ipmr_sk_ioctl(sk, cmd, arg);
> > +       else if (sk_is_icmpv6(sk))
> > +               rc = ip6mr_sk_ioctl(sk, cmd, arg);
> > +       else if (sk_is_phonet(sk))
> > +               rc = phonet_sk_ioctl(sk, cmd, arg);
> 
> Does this handle all phonet ioctl cases correctly?
> 
> Notably pn_socket_ioctl has a SIOCPNGETOBJECT that reads and writes a u16.

We are not touching  "struct proto_ops" in this patch at all.  And
pn_socket_ioctl() is part of "struct proto_ops".

	const struct proto_ops phonet_stream_ops = {
		  ...
		  .ioctl          = pn_socket_ioctl,
	}

That said, all the "struct proto_ops" ioctl calls backs continue to use
"unsigned long arg" with userspace information, at least for now.

	struct proto_ops {
		...
		int             (*ioctl)     (struct socket *sock, unsigned int cmd,
					      unsigned long arg);
	}

This patch only changes the "struct proto".

  parent reply	other threads:[~2023-06-04  7:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-02 16:30 [PATCH net-next v5] net: ioctl: Use kernel memory on protocol ioctl callbacks Breno Leitao
2023-06-02 16:30 ` Breno Leitao
2023-06-02 18:03 ` net: ioctl: Use kernel memory on protocol ioctl callbacks: Tests Results MPTCP CI
2023-06-03  8:21 ` [PATCH net-next v5] net: ioctl: Use kernel memory on protocol ioctl callbacks Willem de Bruijn
2023-06-03  8:21   ` Willem de Bruijn
2023-06-04  7:59 ` Breno Leitao [this message]
2023-06-04  7:59   ` Breno Leitao
2023-06-04  8:32 ` Breno Leitao
2023-06-04  8:32   ` Breno Leitao
2023-06-04  9:17 ` Willem de Bruijn
2023-06-04  9:17   ` Willem de Bruijn
2023-06-06 10:11 ` Breno Leitao
2023-06-06 10:11   ` Breno Leitao
2023-06-06 11:35 ` Matthieu Baerts
2023-06-06 11:35   ` Matthieu Baerts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZHxEX0TlXX7VV9kX@gmail.com \
    --to=leitao@debian.org \
    --cc=dccp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.