Skip to contentSkip to conversation

kernel/trace/ring_buffer.c:1817 rb_meta_validate_events() error: uninitialized symbol 'head_page'.

PATCH kernel test robot 1 participant 1 message Jun 12, 2024

lore
Share & tools
lore

kernel test robot

author build bot
#0 lore raw

BCC: [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