Re: [PATCH 02/13] ring-buffer: Introducing ring-buffer writer

From: kernel test robot
Date: Thu Sep 12 2024 - 08:56:12 EST


Hi Vincent,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 8d8d276ba2fb5f9ac4984f5c10ae60858090babc]

url: https://github.com/intel-lab-lkp/linux/commits/Vincent-Donnefort/ring-buffer-Check-for-empty-ring-buffer-with-rb_num_of_entries/20240911-173526
base: 8d8d276ba2fb5f9ac4984f5c10ae60858090babc
patch link: https://lore.kernel.org/r/20240911093029.3279154-3-vdonnefort%40google.com
patch subject: [PATCH 02/13] ring-buffer: Introducing ring-buffer writer
config: x86_64-buildonly-randconfig-005-20240912 (https://download.01.org/0day-ci/archive/20240912/202409122021.A3dHcn9b-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240912/202409122021.A3dHcn9b-lkp@xxxxxxxxx/reproduce)

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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409122021.A3dHcn9b-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> kernel/trace/ring_buffer.c:1755: warning: Function parameter or struct member 'writer' not described in '__ring_buffer_alloc'


vim +1755 kernel/trace/ring_buffer.c

7a8e76a3829f10 Steven Rostedt 2008-09-29 1740
7a8e76a3829f10 Steven Rostedt 2008-09-29 1741 /**
d611851b421731 zhangwei(Jovi 2013-07-15 1742) * __ring_buffer_alloc - allocate a new ring_buffer
68814b58c52077 Robert Richter 2008-11-24 1743 * @size: the size in bytes per cpu that is needed.
7a8e76a3829f10 Steven Rostedt 2008-09-29 1744 * @flags: attributes to set for the ring buffer.
59e7cffe5cca6f Fabian Frederick 2014-06-05 1745 * @key: ring buffer reader_lock_key.
7a8e76a3829f10 Steven Rostedt 2008-09-29 1746 *
7a8e76a3829f10 Steven Rostedt 2008-09-29 1747 * Currently the only flag that is available is the RB_FL_OVERWRITE
7a8e76a3829f10 Steven Rostedt 2008-09-29 1748 * flag. This flag means that the buffer will overwrite old data
7a8e76a3829f10 Steven Rostedt 2008-09-29 1749 * when the buffer wraps. If this flag is not set, the buffer will
7a8e76a3829f10 Steven Rostedt 2008-09-29 1750 * drop data when the tail hits the head.
7a8e76a3829f10 Steven Rostedt 2008-09-29 1751 */
13292494379f92 Steven Rostedt (VMware 2019-12-13 1752) struct trace_buffer *__ring_buffer_alloc(unsigned long size, unsigned flags,
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1753 struct lock_class_key *key,
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1754 struct ring_buffer_writer *writer)
7a8e76a3829f10 Steven Rostedt 2008-09-29 @1755 {
13292494379f92 Steven Rostedt (VMware 2019-12-13 1756) struct trace_buffer *buffer;
9b94a8fba501f3 Steven Rostedt (Red Hat 2016-05-12 1757) long nr_pages;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1758 int bsize;
9b94a8fba501f3 Steven Rostedt (Red Hat 2016-05-12 1759) int cpu;
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1760 int ret;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1761
7a8e76a3829f10 Steven Rostedt 2008-09-29 1762 /* keep it in its own cache line */
7a8e76a3829f10 Steven Rostedt 2008-09-29 1763 buffer = kzalloc(ALIGN(sizeof(*buffer), cache_line_size()),
7a8e76a3829f10 Steven Rostedt 2008-09-29 1764 GFP_KERNEL);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1765 if (!buffer)
7a8e76a3829f10 Steven Rostedt 2008-09-29 1766 return NULL;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1767
b18cc3de00ec34 Sebastian Andrzej Siewior 2016-12-07 1768 if (!zalloc_cpumask_var(&buffer->cpumask, GFP_KERNEL))
9e01c1b74c9531 Rusty Russell 2009-01-01 1769 goto fail_free_buffer;
9e01c1b74c9531 Rusty Russell 2009-01-01 1770
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1771) /* Default buffer page size - one system page */
f9b94daa542a8d Tzvetomir Stoyanov (VMware 2023-12-19 1772) buffer->subbuf_order = 0;
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1773) buffer->subbuf_size = PAGE_SIZE - BUF_PAGE_HDR_SIZE;
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1774)
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1775) /* Max payload is buffer page size - header (8bytes) */
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1776) buffer->max_data_size = buffer->subbuf_size - (sizeof(u32) * 2);
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1777)
139f84002145d8 Tzvetomir Stoyanov (VMware 2023-12-19 1778) nr_pages = DIV_ROUND_UP(size, buffer->subbuf_size);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1779 buffer->flags = flags;
37886f6a9f62d2 Steven Rostedt 2009-03-17 1780 buffer->clock = trace_clock_local;
1f8a6a10fb9437 Peter Zijlstra 2009-06-08 1781 buffer->reader_lock_key = key;
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1782 if (writer) {
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1783 buffer->writer = writer;
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1784 /* The writer is external and never done by the kernel */
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1785 atomic_inc(&buffer->record_disabled);
5f3fc4f452e3d3 Vincent Donnefort 2024-09-11 1786 }
7a8e76a3829f10 Steven Rostedt 2008-09-29 1787
15693458c4bc06 Steven Rostedt (Red Hat 2013-02-28 1788) init_irq_work(&buffer->irq_work.work, rb_wake_up_waiters);
f1dc6725882b5c Steven Rostedt (Red Hat 2013-03-04 1789) init_waitqueue_head(&buffer->irq_work.waiters);
15693458c4bc06 Steven Rostedt (Red Hat 2013-02-28 1790)
7a8e76a3829f10 Steven Rostedt 2008-09-29 1791 /* need at least two pages */
438ced1720b584 Vaibhav Nagarnaik 2012-02-02 1792 if (nr_pages < 2)
438ced1720b584 Vaibhav Nagarnaik 2012-02-02 1793 nr_pages = 2;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1794
7a8e76a3829f10 Steven Rostedt 2008-09-29 1795 buffer->cpus = nr_cpu_ids;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1796
7a8e76a3829f10 Steven Rostedt 2008-09-29 1797 bsize = sizeof(void *) * nr_cpu_ids;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1798 buffer->buffers = kzalloc(ALIGN(bsize, cache_line_size()),
7a8e76a3829f10 Steven Rostedt 2008-09-29 1799 GFP_KERNEL);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1800 if (!buffer->buffers)
9e01c1b74c9531 Rusty Russell 2009-01-01 1801 goto fail_free_cpumask;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1802
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1803 cpu = raw_smp_processor_id();
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1804 cpumask_set_cpu(cpu, buffer->cpumask);
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1805 buffer->buffers[cpu] = rb_allocate_cpu_buffer(buffer, nr_pages, cpu);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1806 if (!buffer->buffers[cpu])
7a8e76a3829f10 Steven Rostedt 2008-09-29 1807 goto fail_free_buffers;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1808
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1809 ret = cpuhp_state_add_instance(CPUHP_TRACE_RB_PREPARE, &buffer->node);
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1810 if (ret < 0)
b32614c03413f8 Sebastian Andrzej Siewior 2016-11-27 1811 goto fail_free_buffers;
554f786e284a6c Steven Rostedt 2009-03-11 1812
7a8e76a3829f10 Steven Rostedt 2008-09-29 1813 mutex_init(&buffer->mutex);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1814
7a8e76a3829f10 Steven Rostedt 2008-09-29 1815 return buffer;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1816
7a8e76a3829f10 Steven Rostedt 2008-09-29 1817 fail_free_buffers:
7a8e76a3829f10 Steven Rostedt 2008-09-29 1818 for_each_buffer_cpu(buffer, cpu) {
7a8e76a3829f10 Steven Rostedt 2008-09-29 1819 if (buffer->buffers[cpu])
7a8e76a3829f10 Steven Rostedt 2008-09-29 1820 rb_free_cpu_buffer(buffer->buffers[cpu]);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1821 }
7a8e76a3829f10 Steven Rostedt 2008-09-29 1822 kfree(buffer->buffers);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1823
9e01c1b74c9531 Rusty Russell 2009-01-01 1824 fail_free_cpumask:
9e01c1b74c9531 Rusty Russell 2009-01-01 1825 free_cpumask_var(buffer->cpumask);
9e01c1b74c9531 Rusty Russell 2009-01-01 1826
7a8e76a3829f10 Steven Rostedt 2008-09-29 1827 fail_free_buffer:
7a8e76a3829f10 Steven Rostedt 2008-09-29 1828 kfree(buffer);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1829 return NULL;
7a8e76a3829f10 Steven Rostedt 2008-09-29 1830 }
1f8a6a10fb9437 Peter Zijlstra 2009-06-08 1831 EXPORT_SYMBOL_GPL(__ring_buffer_alloc);
7a8e76a3829f10 Steven Rostedt 2008-09-29 1832

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki