kernel/trace/ring_buffer.c:1817 rb_meta_validate_events() error: uninitialized symbol 'head_page'.
kernel test robot
build botBCC: [email protected]
CC: [email protected]
TO: "Steven Rostedt (Google)" <[email protected]>
tree: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace ring-buffer/core head: 640e052ba42d577a7f57052dbee714cf470dd145 commit: ab776f502cfd06bb217d62cb6f4408349246a233 [7/13] ring-buffer: Validate boot range memory events
:::::: branch date: 20 hours ago
:::::: commit date: 20 hours ago
config: i386-randconfig-141-20240612 (https://download.01.org/0day-ci/archive/20240613/[email protected]/config)
compiler: gcc-12 (Ubuntu 12.3.0-9ubuntu2) 12.3.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 <[email protected]> | Reported-by: Dan Carpenter <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/
smatch warnings:kernel/trace/ring_buffer.c:1817 rb_meta_validate_events() error: uninitialized symbol 'head_page'.
vim +/head_page +1817 kernel/trace/ring_buffer.c
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1742)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1743) /* If the meta data has been validated, now validate the events */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1744) static void rb_meta_validate_events(struct ring_buffer_per_cpu *cpu_buffer)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1745) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1746) struct ring_buffer_meta *meta = cpu_buffer->ring_meta;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1747) struct buffer_page *head_page;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1748) unsigned long entry_bytes = 0;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1749) unsigned long entries = 0;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1750) int ret;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1751) int i;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1752)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1753) if (!meta || !meta->head_buffer)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1754) return;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1755)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1756) /* Do the reader page first */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1757) ret = rb_validate_buffer(cpu_buffer->reader_page->page, cpu_buffer->cpu);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1758) if (ret < 0) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1759) pr_info("Ring buffer reader page is invalid\n");
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1760) goto invalid;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1761) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1762) entries += ret;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1763) entry_bytes += local_read(&cpu_buffer->reader_page->page->commit);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1764) local_set(&cpu_buffer->reader_page->entries, ret);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1765)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1766) head_page = cpu_buffer->head_page;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1767)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1768) /* If both the head and commit are on the reader_page then we are done. */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1769) if (head_page == cpu_buffer->reader_page &&
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1770) head_page == cpu_buffer->commit_page)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1771) goto done;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1772)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1773) /* Iterate until finding the commit page */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1774) for (i = 0; i < meta->nr_subbufs + 1; i++, rb_inc_page(&head_page)) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1775)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1776) /* Reader page has already been done */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1777) if (head_page == cpu_buffer->reader_page)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1778) continue;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1779)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1780) ret = rb_validate_buffer(head_page->page, cpu_buffer->cpu);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1781) if (ret < 0) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1782) pr_info("Ring buffer meta [%d] invalid buffer page\n",
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1783) cpu_buffer->cpu);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1784) goto invalid;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1785) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1786) entries += ret;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1787) entry_bytes += local_read(&head_page->page->commit);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1788) local_set(&cpu_buffer->head_page->entries, ret);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1789)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1790) if (head_page == cpu_buffer->commit_page)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1791) break;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1792) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1793)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1794) if (head_page != cpu_buffer->commit_page) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1795) pr_info("Ring buffer meta [%d] commit page not found\n",
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1796) cpu_buffer->cpu);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1797) goto invalid;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1798) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1799) done:
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1800) local_set(&cpu_buffer->entries, entries);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1801) local_set(&cpu_buffer->entries_bytes, entry_bytes);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1802)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1803) pr_info("Ring buffer meta [%d] is from previous boot!\n", cpu_buffer->cpu);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1804) return;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1805)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1806) invalid:
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1807) /* The content of the buffers are invalid, reset the meta data */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1808) meta->head_buffer = 0;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1809) meta->commit_buffer = 0;
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1810)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1811) /* Reset the reader page */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1812) local_set(&cpu_buffer->reader_page->entries, 0);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1813) local_set(&cpu_buffer->reader_page->page->commit, 0);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1814)
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1815) /* Reset all the subbuffers */
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1816) for (i = 0; i < meta->nr_subbufs - 1; i++, rb_inc_page(&head_page)) {
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 @1817) local_set(&head_page->entries, 0);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1818) local_set(&head_page->page->commit, 0);
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1819) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1820) }
ab776f502cfd06 Steven Rostedt (Google 2024-06-11 1821) Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki