From: kernel test robot <lkp@intel.com>
To: Petr Pavlu <petr.pavlu@suse.com>
Cc: oe-kbuild-all@lists.linux.dev,
"Steven Rostedt (Google)" <rostedt@goodmis.org>
Subject: [trace:ring-buffer/for-next 2/4] kernel/trace/ring_buffer.c:1540 rb_check_pages() warn: inconsistent indenting
Date: Sat, 19 Oct 2024 22:43:44 +0800 [thread overview]
Message-ID: <202410192201.oCwXfxZf-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace ring-buffer/for-next
head: 70c765743423ea51af71865aeb4530bcdf892300
commit: 1f1c2bc9d0753afb466ad6f0c2cd9dc08ed637fa [2/4] ring-buffer: Limit time with disabled interrupts in rb_check_pages()
config: i386-randconfig-141-20241019 (https://download.01.org/0day-ci/archive/20241019/202410192201.oCwXfxZf-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410192201.oCwXfxZf-lkp@intel.com/
smatch warnings:
kernel/trace/ring_buffer.c:1540 rb_check_pages() warn: inconsistent indenting
vim +1540 kernel/trace/ring_buffer.c
1493
1494 /**
1495 * rb_check_pages - integrity check of buffer pages
1496 * @cpu_buffer: CPU buffer with pages to test
1497 *
1498 * As a safety measure we check to make sure the data pages have not
1499 * been corrupted.
1500 */
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;
1539
> 1540 while (true) {
1541 raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
1542
1543 if (buffer_cnt != cpu_buffer->cnt) {
1544 /* The list was updated, try again. */
1545 raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
1546 goto again;
1547 }
1548
1549 tmp = rb_list_head(tmp->next);
1550 if (tmp == head)
1551 /* The iteration circled back, all is done. */
1552 goto out_locked;
1553
1554 if (!rb_check_links(cpu_buffer, tmp))
1555 goto out_locked;
1556
1557 raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
1558 }
1559
1560 out_locked:
1561 raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
1562 }
1563
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-10-19 14:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-19 14:43 kernel test robot [this message]
2024-10-19 15:07 ` [trace:ring-buffer/for-next 2/4] kernel/trace/ring_buffer.c:1540 rb_check_pages() warn: inconsistent indenting Steven Rostedt
2024-10-19 15:14 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202410192201.oCwXfxZf-lkp@intel.com \
--to=lkp@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=petr.pavlu@suse.com \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.