On Fri, 22 May 2026 13:09:05 -0400
Steven Rostedt <[email protected]> wrote:

> @@ -7187,6 +7190,8 @@ int ring_buffer_read_page(struct trace_buffer *buffer,
>               local_set(&reader->entries, 0);
>               reader->read = 0;
>               data_page->data = dpage;
> +             if (!missed_events && rb_data_page_commit(dpage) & 
> RB_MISSED_EVENTS)
> +                     missed_events = -1;
>  
>               /*
>                * Use the real_end for the data size,
> @@ -7204,10 +7209,12 @@ int ring_buffer_read_page(struct trace_buffer *buffer,
>        * Set a flag in the commit field if we lost events
>        */
>       if (missed_events) {
> -             /* If there is room at the end of the page to save the
> +             /*
> +              * If there is room at the end of the page to save the
>                * missed events, then record it there.
>                */
> -             if (buffer->subbuf_size - commit >= sizeof(missed_events)) {
> +             if (missed_events > 0 &&
> +                 buffer->subbuf_size - commit >= sizeof(missed_events)) {
>                       memcpy(&dpage->data[commit], &missed_events,
>                              sizeof(missed_events));
>                       local_add(RB_MISSED_STORED, &dpage->commit);

After this line, we "add" RB_MISSED_EVENTS instead of set.
In this case, does it clear the RB_MISSED_EVENTS bit because
it already sets RB_MISSED_EVENTS.

                        commit += sizeof(missed_events);
                }
                local_add(RB_MISSED_EVENTS, &bpage->commit);
                      ^^^ here.


Thanks,


-- 
Masami Hiramatsu (Google) <[email protected]>

Reply via email to