diff mbox series

sched-ext: Use correct annotation for strings in kfuncs

Message ID 20241021201143.2010388-1-memxor@gmail.com (mailing list archive)
State Not Applicable
Delegated to: BPF
Headers show
Series sched-ext: Use correct annotation for strings in kfuncs | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Kumar Kartikeya Dwivedi Oct. 21, 2024, 8:11 p.m. UTC
The sched-ext kfuncs with bstr suffix need to take a string, but that
requires annotating the parameters with __str suffix, as right now the
verifier will treat this parameter as a one-byte memory region.

Fixes: f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
Fixes: 07814a9439a3 ("sched_ext: Print debug dump after an error exit")
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
---
 kernel/sched/ext.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--
2.43.5

Comments

Tejun Heo Oct. 21, 2024, 8:13 p.m. UTC | #1
On Mon, Oct 21, 2024 at 01:11:43PM -0700, Kumar Kartikeya Dwivedi wrote:
> The sched-ext kfuncs with bstr suffix need to take a string, but that
> requires annotating the parameters with __str suffix, as right now the
> verifier will treat this parameter as a one-byte memory region.
> 
> Fixes: f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
> Fixes: 07814a9439a3 ("sched_ext: Print debug dump after an error exit")
> Cc: Tejun Heo <tj@kernel.org>
> Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>

Applied to sched_ext/for-6.12-fixes.

Thanks.
Tejun Heo Oct. 23, 2024, 7:06 p.m. UTC | #2
On Mon, Oct 21, 2024 at 01:11:43PM -0700, Kumar Kartikeya Dwivedi wrote:
> The sched-ext kfuncs with bstr suffix need to take a string, but that
> requires annotating the parameters with __str suffix, as right now the
> verifier will treat this parameter as a one-byte memory region.
> 
> Fixes: f0e1a0643a59 ("sched_ext: Implement BPF extensible scheduler class")
> Fixes: 07814a9439a3 ("sched_ext: Print debug dump after an error exit")
> Cc: Tejun Heo <tj@kernel.org>
> Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>

I popped this patch from sched_ext/for-6.12-fixes along with the follow-up
fix. This breaks compatibility in a way which is difficult to work around.
If we want to do this, I think we should do it by introducing new set of
kfuncs and than phasing out the old ones. Also, it's unclear what the
practical benefits of the change are anyway.

Thanks.
diff mbox series

Patch

diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
index 3cd7c50a51c5..8b8e3c907340 100644
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -6708,7 +6708,7 @@  __bpf_kfunc_start_defs();
  * Indicate that the BPF scheduler wants to exit gracefully, and initiate ops
  * disabling.
  */
-__bpf_kfunc void scx_bpf_exit_bstr(s64 exit_code, char *fmt,
+__bpf_kfunc void scx_bpf_exit_bstr(s64 exit_code, char *fmt__str,
 				   unsigned long long *data, u32 data__sz)
 {
 	unsigned long flags;
@@ -6729,7 +6729,7 @@  __bpf_kfunc void scx_bpf_exit_bstr(s64 exit_code, char *fmt,
  * Indicate that the BPF scheduler encountered a fatal error and initiate ops
  * disabling.
  */
-__bpf_kfunc void scx_bpf_error_bstr(char *fmt, unsigned long long *data,
+__bpf_kfunc void scx_bpf_error_bstr(char *fmt__str, unsigned long long *data,
 				    u32 data__sz)
 {
 	unsigned long flags;
@@ -6753,7 +6753,7 @@  __bpf_kfunc void scx_bpf_error_bstr(char *fmt, unsigned long long *data,
  * The extra dump may be multiple lines. A single line may be split over
  * multiple calls. The last line is automatically terminated.
  */
-__bpf_kfunc void scx_bpf_dump_bstr(char *fmt, unsigned long long *data,
+__bpf_kfunc void scx_bpf_dump_bstr(char *fmt__str, unsigned long long *data,
 				   u32 data__sz)
 {
 	struct scx_dump_data *dd = &scx_dump_data;