linux-ppp.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] drivers/net/ppp: use standard array-copy-function
@ 2023-11-06  9:16 Philipp Stanner
  2023-11-08  9:50 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 2+ messages in thread
From: Philipp Stanner @ 2023-11-06  9:16 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Stanislav Fomichev, Greg Kroah-Hartman, Benjamin Tissoires,
	Al Viro
  Cc: linux-ppp, netdev, linux-kernel, Philipp Stanner, Dave Airlie

In ppp_generic.c, memdup_user() is utilized to copy a userspace array.
This is done without an overflow-check, which is, however, not critical
because the multiplicands are an unsigned short and struct sock_filter,
which is currently of size 8.

Regardless, string.h now provides memdup_array_user(), a wrapper for
copying userspace arrays in a standardized manner, which has the
advantage of making it more obvious to the reader that an array is being
copied.
The wrapper additionally performs an obligatory overflow check, saving
the reader the effort of analyzing the potential for overflow, and
making the code a bit more robust in case of future changes to the
multiplicands len * size.

Replace memdup_user() with memdup_array_user().

Suggested-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
Changes in v2:
- Rename the commit and rephrase its message completely so that it
  becomes a) obvious that we're not fixing an actual overflow here and
  b) emphasize that the goal is increasing readability. (Al Viro)
---
 drivers/net/ppp/ppp_generic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
index a9beacd552cf..0193af2d31c9 100644
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -570,8 +570,8 @@ static struct bpf_prog *get_filter(struct sock_fprog *uprog)
 
 	/* uprog->len is unsigned short, so no overflow here */
 	fprog.len = uprog->len;
-	fprog.filter = memdup_user(uprog->filter,
-				   uprog->len * sizeof(struct sock_filter));
+	fprog.filter = memdup_array_user(uprog->filter,
+					 uprog->len, sizeof(struct sock_filter));
 	if (IS_ERR(fprog.filter))
 		return ERR_CAST(fprog.filter);
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] drivers/net/ppp: use standard array-copy-function
  2023-11-06  9:16 [PATCH v2] drivers/net/ppp: use standard array-copy-function Philipp Stanner
@ 2023-11-08  9:50 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-11-08  9:50 UTC (permalink / raw)
  To: Philipp Stanner
  Cc: davem, edumazet, kuba, pabeni, sdf, gregkh, benjamin.tissoires,
	viro, linux-ppp, netdev, linux-kernel, airlied

Hello:

This patch was applied to netdev/net.git (main)
by David S. Miller <davem@davemloft.net>:

On Mon,  6 Nov 2023 10:16:00 +0100 you wrote:
> In ppp_generic.c, memdup_user() is utilized to copy a userspace array.
> This is done without an overflow-check, which is, however, not critical
> because the multiplicands are an unsigned short and struct sock_filter,
> which is currently of size 8.
> 
> Regardless, string.h now provides memdup_array_user(), a wrapper for
> copying userspace arrays in a standardized manner, which has the
> advantage of making it more obvious to the reader that an array is being
> copied.
> The wrapper additionally performs an obligatory overflow check, saving
> the reader the effort of analyzing the potential for overflow, and
> making the code a bit more robust in case of future changes to the
> multiplicands len * size.
> 
> [...]

Here is the summary with links:
  - [v2] drivers/net/ppp: use standard array-copy-function
    https://git.kernel.org/netdev/net/c/caf3100810f4

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-11-08  9:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-06  9:16 [PATCH v2] drivers/net/ppp: use standard array-copy-function Philipp Stanner
2023-11-08  9:50 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).