Re: [PATCH] cobalt/posix/syscall: Account for changes in kernel 7.0

Florian Bezdeka <[email protected]>
Newsgroups dev.linux.lists.xenomai
Message-ID <[email protected]>
On Tue, 2026-04-14 at 17:35 +0200, Jan Kiszka wrote:
> From: Jan Kiszka <[email protected]>
> 
> With 7.0, we no longer have a access to trace print function that takes
> the string size directly. [__]trace_puts will now always invoke strlen
> on the passed string. We therefore need to terminate our string
> properly, even if a larger one was passed.
> 
> We could keep the micro-optimized variant for older kernels, but as that
> is phasing out and the gain is likely minimal (the string is still in L1
> cache after copy_from_user), simply switch all versions to the same
> pattern.
> 
> Signed-off-by: Jan Kiszka <[email protected]>
> ---
>  kernel/cobalt/posix/syscall.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
> index a26da154c4..bc1825676f 100644
> --- a/kernel/cobalt/posix/syscall.c
> +++ b/kernel/cobalt/posix/syscall.c
> @@ -46,6 +46,12 @@
>  #include "../debug.h"
>  #include <trace/events/cobalt-posix.h>
>  
> +#if LINUX_VERSION_CODE >= KERNEL_VERSION(7,0,0)
> +#include <linux/trace_printk.h>
> +#else
> +#include <linux/kernel.h>
> +#endif
> +
>  /* Syscall must run into the Linux domain. */
>  #define __xn_exec_lostage    0x1
>  /* Syscall must run into the Xenomai domain. */
> @@ -194,12 +200,13 @@ static COBALT_SYSCALL(ftrace_puts, current,
>  	char buf[256];
>  	unsigned len;
>  
> -	len = cobalt_strncpy_from_user(buf, str, sizeof(buf));
> +	len = cobalt_strncpy_from_user(buf, str, sizeof(buf) - 1);
>  	if (len < 0)
>  		return -EFAULT;
>  
>  #ifdef CONFIG_TRACING
> -	__trace_puts(_THIS_IP_, buf, len);
> +	buf[sizeof(buf) - 1] = 0;

Shouldn't we terminate at buf[len]?

buf[len+1] to buf[sizeof(buf)-1] might be garbage, no?

> +	trace_puts(buf);
>  #endif
>  
>  	return 0;
> -- 
> 2.47.3
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.