2024-04-23 10:35:00

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH] admin-guide/hw-vuln/core-scheduling: fix return type of PR_SCHED_CORE_GET

sched_core_share_pid() copies the cookie to userspace with
put_user(id, (u64 __user *)uaddr), expecting 64 bits of space.
The "unsigned long" datatype that is documented in core-scheduling.rst
however is only 32 bits large on 32 bit architectures.

Document "unsigned long long" as the correct data type that is always
64bits large.

This matches what the selftest cs_prctl_test.c has been doing all along.

Fixes: 0159bb020ca9 ("Documentation: Add usecases, design and interface for core scheduling")
Cc: [email protected]
Link: https://lore.kernel.org/util-linux/[email protected]/
Signed-off-by: Thomas Weißschuh <[email protected]>
---
Documentation/admin-guide/hw-vuln/core-scheduling.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/admin-guide/hw-vuln/core-scheduling.rst b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
index cf1eeefdfc32..a92e10ec402e 100644
--- a/Documentation/admin-guide/hw-vuln/core-scheduling.rst
+++ b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
@@ -67,8 +67,8 @@ arg4:
will be performed for all tasks in the task group of ``pid``.

arg5:
- userspace pointer to an unsigned long for storing the cookie returned by
- ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
+ userspace pointer to an unsigned long long for storing the cookie returned
+ by ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.

In order for a process to push a cookie to, or pull a cookie from a process, it
is required to have the ptrace access mode: `PTRACE_MODE_READ_REALCREDS` to the

---
base-commit: 71b1543c83d65af8215d7558d70fc2ecbee77dcf
change-id: 20240423-core-scheduling-cookie-b0551c40b086

Best regards,
--
Thomas Weißschuh <[email protected]>



2024-04-23 13:51:43

by Chris Hyser

[permalink] [raw]
Subject: Re: [PATCH] admin-guide/hw-vuln/core-scheduling: fix return type of PR_SCHED_CORE_GET

On 4/23/24 06:34, Thomas Weißschuh wrote:

> sched_core_share_pid() copies the cookie to userspace with
> put_user(id, (u64 __user *)uaddr), expecting 64 bits of space.
> The "unsigned long" datatype that is documented in core-scheduling.rst
> however is only 32 bits large on 32 bit architectures.
>
> Document "unsigned long long" as the correct data type that is always
> 64bits large.
>
> This matches what the selftest cs_prctl_test.c has been doing all along.
>
> Fixes: 0159bb020ca9 ("Documentation: Add usecases, design and interface for core scheduling")
> Cc: [email protected]
> Link: https://lore.kernel.org/util-linux/[email protected]/
> Signed-off-by: Thomas Weißschuh <[email protected]>
> ---
> Documentation/admin-guide/hw-vuln/core-scheduling.rst | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/admin-guide/hw-vuln/core-scheduling.rst b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> index cf1eeefdfc32..a92e10ec402e 100644
> --- a/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> +++ b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> @@ -67,8 +67,8 @@ arg4:
> will be performed for all tasks in the task group of ``pid``.
>
> arg5:
> - userspace pointer to an unsigned long for storing the cookie returned by
> - ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
> + userspace pointer to an unsigned long long for storing the cookie returned
> + by ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
>


Yes you're right, that is what the test code actually does.


Reviewed-by: Chris Hyser <[email protected]>


> In order for a process to push a cookie to, or pull a cookie from a process, it
> is required to have the ptrace access mode: `PTRACE_MODE_READ_REALCREDS` to the
>
> ---
> base-commit: 71b1543c83d65af8215d7558d70fc2ecbee77dcf
> change-id: 20240423-core-scheduling-cookie-b0551c40b086
>
> Best regards,

2024-04-24 19:04:55

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH] admin-guide/hw-vuln/core-scheduling: fix return type of PR_SCHED_CORE_GET

Thomas Weißschuh <[email protected]> writes:

> sched_core_share_pid() copies the cookie to userspace with
> put_user(id, (u64 __user *)uaddr), expecting 64 bits of space.
> The "unsigned long" datatype that is documented in core-scheduling.rst
> however is only 32 bits large on 32 bit architectures.
>
> Document "unsigned long long" as the correct data type that is always
> 64bits large.
>
> This matches what the selftest cs_prctl_test.c has been doing all along.
>
> Fixes: 0159bb020ca9 ("Documentation: Add usecases, design and interface for core scheduling")
> Cc: [email protected]
> Link: https://lore.kernel.org/util-linux/[email protected]/
> Signed-off-by: Thomas Weißschuh <[email protected]>
> ---
> Documentation/admin-guide/hw-vuln/core-scheduling.rst | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/admin-guide/hw-vuln/core-scheduling.rst b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> index cf1eeefdfc32..a92e10ec402e 100644
> --- a/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> +++ b/Documentation/admin-guide/hw-vuln/core-scheduling.rst
> @@ -67,8 +67,8 @@ arg4:
> will be performed for all tasks in the task group of ``pid``.
>
> arg5:
> - userspace pointer to an unsigned long for storing the cookie returned by
> - ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
> + userspace pointer to an unsigned long long for storing the cookie returned
> + by ``PR_SCHED_CORE_GET`` command. Should be 0 for all other commands.
>

Applied, thanks.

jon