On 10/22/24 11:09, Dan Carpenter wrote: > Hello Petr Pavlu, > > Commit 1f1c2bc9d075 ("ring-buffer: Limit time with disabled > interrupts in rb_check_pages()") from Jul 15, 2024 (linux-next), > leads to the following Smatch static checker warning: > > kernel/trace/ring_buffer.c:1540 rb_check_pages() > warn: ignoring unreachable code. > > kernel/trace/ring_buffer.c > 1501 static void rb_check_pages(struct ring_buffer_per_cpu *cpu_buffer) > 1502 { > 1503 struct list_head *head, *tmp; > 1504 unsigned long buffer_cnt; > 1505 unsigned long flags; > 1506 int nr_loops = 0; > 1507 > 1508 /* > 1509 * Walk the linked list underpinning the ring buffer and > validate all > 1510 * its next and prev links. > 1511 * > 1512 * The check acquires the reader_lock to avoid concurrent > processing > 1513 * with code that could be modifying the list. However, the > lock cannot > 1514 * be held for the entire duration of the walk, as this > would make the > 1515 * time when interrupts are disabled non-deterministic, > dependent on the > 1516 * ring buffer size. Therefore, the code releases and > re-acquires the > 1517 * lock after checking each page. The > ring_buffer_per_cpu.cnt variable > 1518 * is then used to detect if the list was modified while the > lock was > 1519 * not held, in which case the check needs to be restarted. > 1520 * > 1521 * The code attempts to perform the check at most three > times before > 1522 * giving up. This is acceptable because this is only a > self-validation > 1523 * to detect problems early on. In practice, the list > modification > 1524 * operations are fairly spaced, and so this check typically > succeeds at > 1525 * most on the second try. > 1526 */ > 1527 again: > 1528 if (++nr_loops > 3) > 1529 return; > 1530 > 1531 raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags); > 1532 head = rb_list_head(cpu_buffer->pages); > 1533 if (!rb_check_links(cpu_buffer, head)) > 1534 goto out_locked; > 1535 buffer_cnt = cpu_buffer->cnt; > 1536 tmp = head; > 1537 raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); > 1538 return; > ^^^^^^ > You probably intended to delete this return?
There was a problem with rebasing the patch, see https://lore.kernel.org/oe-kbuild-all/20241019110743.72fa5...@gandalf.local.home/ It has been fixed in ftrace/for-next. -- Thanks, Petr