Re: [PATCH] tracing/timerlat: Move hrtimer_init to timerlat_fd open()

From: Daniel Bristot de Oliveira
Date: Thu Feb 01 2024 - 10:29:57 EST


On 2/1/24 16:25, Steven Rostedt wrote:
> On Thu, 1 Feb 2024 16:13:39 +0100
> Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> wrote:
>
>> Currently, the timerlat's hrtimer is initialized at the first read of
>> timerlat_fd, and destroyed at close(). It works, but it causes an error
>> if the user program open() and close() the file without reading.
>>
>> Move hrtimer_init to timerlat_fd open() to avoid this problem.
>>
>> No functional changes.
>
> It can't be fixing something and not have any functional changes.
>
> No functional changes means the code is restructured but the resulting
> assembly would be the same.
>
> Like moving functions around in a file so that you don't need extra
> prototype declarations.
>
> Please only add "No functional changes" if the function's assembly would be
> the same.

ok

>>
>> Fixes: e88ed227f639 ("tracing/timerlat: Add user-space interface")
>
> With a fixes tag, I'm assuming his should go into v6.8 with a Cc stable?

right, I added it on Cc, but did not include the Cc:.. tag. It seems that I should have.

-- Daniel

> -- Steve
>
>
>> Signed-off-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>
>> ---
>> kernel/trace/trace_osnoise.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c
>> index bd0d01d00fb9..a8e28f9b9271 100644
>> --- a/kernel/trace/trace_osnoise.c
>> +++ b/kernel/trace/trace_osnoise.c
>> @@ -2444,6 +2444,9 @@ static int timerlat_fd_open(struct inode *inode, struct file *file)
>> tlat = this_cpu_tmr_var();
>> tlat->count = 0;
>>
>> + hrtimer_init(&tlat->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD);
>> + tlat->timer.function = timerlat_irq;
>> +
>> migrate_enable();
>> return 0;
>> };
>> @@ -2526,9 +2529,6 @@ timerlat_fd_read(struct file *file, char __user *ubuf, size_t count,
>> tlat->tracing_thread = false;
>> tlat->kthread = current;
>>
>> - hrtimer_init(&tlat->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_PINNED_HARD);
>> - tlat->timer.function = timerlat_irq;
>> -
>> /* Annotate now to drift new period */
>> tlat->abs_period = hrtimer_cb_get_time(&tlat->timer);
>>
>