All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [RFC PATCH 3/4] sysctl: support encoding values directly in the table entry
Date: Fri, 16 Jan 2026 08:57:57 +0800	[thread overview]
Message-ID: <202601160850.i6bVRfFi-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <907e4f14cedb2bfb2810dec255b930d59b821dc2.1768324215.git.wen.yang@linux.dev>
References: <907e4f14cedb2bfb2810dec255b930d59b821dc2.1768324215.git.wen.yang@linux.dev>
TO: wen.yang@linux.dev

Hi,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on sysctl/sysctl-next]
[also build test WARNING on next-20260115]
[cannot apply to linus/master mcgrof/sysctl-next v6.19-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/wen-yang-linux-dev/sysctl-add-SYSCTL_ENTRY-SYSCTL_RANGE_ENTRY-helpers-for-ctl_table-init/20260114-014339
base:   https://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl.git sysctl-next
patch link:    https://lore.kernel.org/r/907e4f14cedb2bfb2810dec255b930d59b821dc2.1768324215.git.wen.yang%40linux.dev
patch subject: [RFC PATCH 3/4] sysctl: support encoding values directly in the table entry
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: m68k-randconfig-r071-20260116 (https://download.01.org/0day-ci/archive/20260116/202601160850.i6bVRfFi-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.2.0
smatch version: v0.5.0-8985-g2614ff1a

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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202601160850.i6bVRfFi-lkp@intel.com/

smatch warnings:
kernel/sysctl-test.c:320 sysctl_test_api_dointvec_write_range_check() warn: (struct ctl_table)->procname cannot be NULL. Expression : test_cases[0]->procname
kernel/sysctl-test.c:320 sysctl_test_api_dointvec_write_range_check() warn: (struct ctl_table)->proc_handler cannot be NULL. Expression : test_cases[0]->proc_handler

vim +320 kernel/sysctl-test.c

2cb80dbbbaba4f Iurii Zaikin 2019-09-23  302  
ca5cba219ba481 Wen Yang     2026-01-14  303  /*
ca5cba219ba481 Wen Yang     2026-01-14  304   * Test that writing values within the specified range succeeds,
ca5cba219ba481 Wen Yang     2026-01-14  305   * and ensures out-of-range writes are correctly rejected.
ca5cba219ba481 Wen Yang     2026-01-14  306   */
ca5cba219ba481 Wen Yang     2026-01-14  307  static void sysctl_test_api_dointvec_write_range_check(struct kunit *test)
ca5cba219ba481 Wen Yang     2026-01-14  308  {
ca5cba219ba481 Wen Yang     2026-01-14  309  	int data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  310  	size_t len;
ca5cba219ba481 Wen Yang     2026-01-14  311  	loff_t pos;
ca5cba219ba481 Wen Yang     2026-01-14  312  	char *buffer;
ca5cba219ba481 Wen Yang     2026-01-14  313  	char __user *user_buffer;
ca5cba219ba481 Wen Yang     2026-01-14  314  
ca5cba219ba481 Wen Yang     2026-01-14  315  	/* Prepare bound variables for pointer modes */
ca5cba219ba481 Wen Yang     2026-01-14  316  	int min_bounds[] = {10, 0, 15, 0};
ca5cba219ba481 Wen Yang     2026-01-14  317  	int max_bounds[] = {90, 75, 0, 0};
ca5cba219ba481 Wen Yang     2026-01-14  318  
ca5cba219ba481 Wen Yang     2026-01-14  319  	/* Initialize test tables using macro */
ca5cba219ba481 Wen Yang     2026-01-14 @320  	struct ctl_table test_cases[] = {
ca5cba219ba481 Wen Yang     2026-01-14  321  		/* PTR_PTR: both pointers */
ca5cba219ba481 Wen Yang     2026-01-14  322  		SYSCTL_RANGE_ENTRY("ptr_ptr", &data, int, 0644,
ca5cba219ba481 Wen Yang     2026-01-14  323  				&min_bounds[0], &max_bounds[0]),
ca5cba219ba481 Wen Yang     2026-01-14  324  		/* VAL_PTR: min is value, max is pointer */
ca5cba219ba481 Wen Yang     2026-01-14  325  		SYSCTL_RANGE_ENTRY("val_ptr", &data, int, 0644,
ca5cba219ba481 Wen Yang     2026-01-14  326  				25, &max_bounds[1]),
ca5cba219ba481 Wen Yang     2026-01-14  327  		/* PTR_VAL: min is pointer, max is value */
ca5cba219ba481 Wen Yang     2026-01-14  328  		SYSCTL_RANGE_ENTRY("ptr_val", &data, int, 0644,
ca5cba219ba481 Wen Yang     2026-01-14  329  				&min_bounds[2], 85),
ca5cba219ba481 Wen Yang     2026-01-14  330  		/* VAL_VAL: both values */
ca5cba219ba481 Wen Yang     2026-01-14  331  		SYSCTL_RANGE_ENTRY("val_val", &data, int, 0644,
ca5cba219ba481 Wen Yang     2026-01-14  332  				20, 80),
ca5cba219ba481 Wen Yang     2026-01-14  333  	};
ca5cba219ba481 Wen Yang     2026-01-14  334  
ca5cba219ba481 Wen Yang     2026-01-14  335  	/* Test parameters for each mode */
ca5cba219ba481 Wen Yang     2026-01-14  336  	const struct {
ca5cba219ba481 Wen Yang     2026-01-14  337  		int min, max;
ca5cba219ba481 Wen Yang     2026-01-14  338  		const char *valid;
ca5cba219ba481 Wen Yang     2026-01-14  339  		const char *below_min;
ca5cba219ba481 Wen Yang     2026-01-14  340  		const char *above_max;
ca5cba219ba481 Wen Yang     2026-01-14  341  	} test_params[] = {
ca5cba219ba481 Wen Yang     2026-01-14  342  		{10, 90, "50", "5",  "95"},  /* PTR_PTR */
ca5cba219ba481 Wen Yang     2026-01-14  343  		{25, 75, "50", "20", "80"},  /* VAL_PTR */
ca5cba219ba481 Wen Yang     2026-01-14  344  		{15, 85, "50", "10", "90"},  /* PTR_VAL */
ca5cba219ba481 Wen Yang     2026-01-14  345  		{20, 80, "50", "15", "85"},  /* VAL_VAL */
ca5cba219ba481 Wen Yang     2026-01-14  346  	};
ca5cba219ba481 Wen Yang     2026-01-14  347  
ca5cba219ba481 Wen Yang     2026-01-14  348  	for (int i = 0; i < 4; i++) {
ca5cba219ba481 Wen Yang     2026-01-14  349  		struct ctl_table *table = &test_cases[i];
ca5cba219ba481 Wen Yang     2026-01-14  350  		const typeof(test_params[0]) *param = &test_params[i];
ca5cba219ba481 Wen Yang     2026-01-14  351  
ca5cba219ba481 Wen Yang     2026-01-14  352  		/* Verify flags auto-detection */
ca5cba219ba481 Wen Yang     2026-01-14  353  		KUNIT_EXPECT_EQ(test, table->flags, i);
ca5cba219ba481 Wen Yang     2026-01-14  354  		KUNIT_EXPECT_EQ(test, (int)table->min_is_value, (i & 1) != 0);
ca5cba219ba481 Wen Yang     2026-01-14  355  		KUNIT_EXPECT_EQ(test, (int)table->max_is_value, (i & 2) != 0);
ca5cba219ba481 Wen Yang     2026-01-14  356  
ca5cba219ba481 Wen Yang     2026-01-14  357  		/* Verify union access */
ca5cba219ba481 Wen Yang     2026-01-14  358  		if (table->min_is_value) {
ca5cba219ba481 Wen Yang     2026-01-14  359  			KUNIT_EXPECT_EQ(test, table->min, (unsigned long)param->min);
ca5cba219ba481 Wen Yang     2026-01-14  360  		} else {
ca5cba219ba481 Wen Yang     2026-01-14  361  			KUNIT_EXPECT_PTR_EQ(test, table->extra1, &min_bounds[i]);
ca5cba219ba481 Wen Yang     2026-01-14  362  			KUNIT_EXPECT_EQ(test, *(int *)table->extra1, param->min);
ca5cba219ba481 Wen Yang     2026-01-14  363  		}
ca5cba219ba481 Wen Yang     2026-01-14  364  
ca5cba219ba481 Wen Yang     2026-01-14  365  		if (table->max_is_value) {
ca5cba219ba481 Wen Yang     2026-01-14  366  			KUNIT_EXPECT_EQ(test, table->max, (unsigned long)param->max);
ca5cba219ba481 Wen Yang     2026-01-14  367  		} else {
ca5cba219ba481 Wen Yang     2026-01-14  368  			KUNIT_EXPECT_PTR_EQ(test, table->extra2, &max_bounds[i]);
ca5cba219ba481 Wen Yang     2026-01-14  369  			KUNIT_EXPECT_EQ(test, *(int *)table->extra2, param->max);
ca5cba219ba481 Wen Yang     2026-01-14  370  		}
ca5cba219ba481 Wen Yang     2026-01-14  371  
ca5cba219ba481 Wen Yang     2026-01-14  372  		/* Test valid value in range */
ca5cba219ba481 Wen Yang     2026-01-14  373  		data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  374  		len = strlen(param->valid);
ca5cba219ba481 Wen Yang     2026-01-14  375  		pos = 0;
ca5cba219ba481 Wen Yang     2026-01-14  376  		buffer = kunit_kzalloc(test, len, GFP_USER);
ca5cba219ba481 Wen Yang     2026-01-14  377  		user_buffer = (char __user *)buffer;
ca5cba219ba481 Wen Yang     2026-01-14  378  		memcpy(buffer, param->valid, len);
ca5cba219ba481 Wen Yang     2026-01-14  379  
ca5cba219ba481 Wen Yang     2026-01-14  380  		KUNIT_EXPECT_EQ(test, 0, proc_dointvec_minmax(table, KUNIT_PROC_WRITE,
ca5cba219ba481 Wen Yang     2026-01-14  381  					user_buffer, &len, &pos));
ca5cba219ba481 Wen Yang     2026-01-14  382  		KUNIT_EXPECT_EQ(test, strlen(param->valid), len);
ca5cba219ba481 Wen Yang     2026-01-14  383  		KUNIT_EXPECT_EQ(test, strlen(param->valid), pos);
ca5cba219ba481 Wen Yang     2026-01-14  384  		KUNIT_EXPECT_EQ(test, 50, data);
ca5cba219ba481 Wen Yang     2026-01-14  385  
ca5cba219ba481 Wen Yang     2026-01-14  386  		/* Test min boundary */
ca5cba219ba481 Wen Yang     2026-01-14  387  		data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  388  		char min_str[16];
ca5cba219ba481 Wen Yang     2026-01-14  389  		snprintf(min_str, sizeof(min_str), "%d", param->min);
ca5cba219ba481 Wen Yang     2026-01-14  390  		len = strlen(min_str);
ca5cba219ba481 Wen Yang     2026-01-14  391  		pos = 0;
ca5cba219ba481 Wen Yang     2026-01-14  392  		buffer = kunit_kzalloc(test, len, GFP_USER);
ca5cba219ba481 Wen Yang     2026-01-14  393  		user_buffer = (char __user *)buffer;
ca5cba219ba481 Wen Yang     2026-01-14  394  		memcpy(buffer, min_str, len);
ca5cba219ba481 Wen Yang     2026-01-14  395  
ca5cba219ba481 Wen Yang     2026-01-14  396  		KUNIT_EXPECT_EQ(test, 0, proc_dointvec_minmax(table, KUNIT_PROC_WRITE,
ca5cba219ba481 Wen Yang     2026-01-14  397  					user_buffer, &len, &pos));
ca5cba219ba481 Wen Yang     2026-01-14  398  		KUNIT_EXPECT_EQ(test, strlen(min_str), len);
ca5cba219ba481 Wen Yang     2026-01-14  399  		KUNIT_EXPECT_EQ(test, strlen(min_str), pos);
ca5cba219ba481 Wen Yang     2026-01-14  400  		KUNIT_EXPECT_EQ(test, param->min, data);
ca5cba219ba481 Wen Yang     2026-01-14  401  
ca5cba219ba481 Wen Yang     2026-01-14  402  		/* Test max boundary */
ca5cba219ba481 Wen Yang     2026-01-14  403  		data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  404  		char max_str[16];
ca5cba219ba481 Wen Yang     2026-01-14  405  		snprintf(max_str, sizeof(max_str), "%d", param->max);
ca5cba219ba481 Wen Yang     2026-01-14  406  		len = strlen(max_str);
ca5cba219ba481 Wen Yang     2026-01-14  407  		pos = 0;
ca5cba219ba481 Wen Yang     2026-01-14  408  		buffer = kunit_kzalloc(test, len, GFP_USER);
ca5cba219ba481 Wen Yang     2026-01-14  409  		user_buffer = (char __user *)buffer;
ca5cba219ba481 Wen Yang     2026-01-14  410  		memcpy(buffer, max_str, len);
ca5cba219ba481 Wen Yang     2026-01-14  411  
ca5cba219ba481 Wen Yang     2026-01-14  412  		KUNIT_EXPECT_EQ(test, 0, proc_dointvec_minmax(table, KUNIT_PROC_WRITE,
ca5cba219ba481 Wen Yang     2026-01-14  413  					user_buffer, &len, &pos));
ca5cba219ba481 Wen Yang     2026-01-14  414  		KUNIT_EXPECT_EQ(test, strlen(max_str), len);
ca5cba219ba481 Wen Yang     2026-01-14  415  		KUNIT_EXPECT_EQ(test, strlen(max_str), pos);
ca5cba219ba481 Wen Yang     2026-01-14  416  		KUNIT_EXPECT_EQ(test, param->max, data);
ca5cba219ba481 Wen Yang     2026-01-14  417  
ca5cba219ba481 Wen Yang     2026-01-14  418  		/* Test below min - should fail */
ca5cba219ba481 Wen Yang     2026-01-14  419  		data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  420  		len = strlen(param->below_min);
ca5cba219ba481 Wen Yang     2026-01-14  421  		pos = 0;
ca5cba219ba481 Wen Yang     2026-01-14  422  		buffer = kunit_kzalloc(test, len, GFP_USER);
ca5cba219ba481 Wen Yang     2026-01-14  423  		user_buffer = (char __user *)buffer;
ca5cba219ba481 Wen Yang     2026-01-14  424  		memcpy(buffer, param->below_min, len);
ca5cba219ba481 Wen Yang     2026-01-14  425  
ca5cba219ba481 Wen Yang     2026-01-14  426  		KUNIT_EXPECT_EQ(test, -EINVAL, proc_dointvec_minmax(table, KUNIT_PROC_WRITE,
ca5cba219ba481 Wen Yang     2026-01-14  427  					user_buffer, &len, &pos));
ca5cba219ba481 Wen Yang     2026-01-14  428  		KUNIT_EXPECT_EQ(test, 0, data);
ca5cba219ba481 Wen Yang     2026-01-14  429  
ca5cba219ba481 Wen Yang     2026-01-14  430  		/* Test above max - should fail */
ca5cba219ba481 Wen Yang     2026-01-14  431  		data = 0;
ca5cba219ba481 Wen Yang     2026-01-14  432  		len = strlen(param->above_max);
ca5cba219ba481 Wen Yang     2026-01-14  433  		pos = 0;
ca5cba219ba481 Wen Yang     2026-01-14  434  		buffer = kunit_kzalloc(test, len, GFP_USER);
ca5cba219ba481 Wen Yang     2026-01-14  435  		user_buffer = (char __user *)buffer;
ca5cba219ba481 Wen Yang     2026-01-14  436  		memcpy(buffer, param->above_max, len);
ca5cba219ba481 Wen Yang     2026-01-14  437  
ca5cba219ba481 Wen Yang     2026-01-14  438  		KUNIT_EXPECT_EQ(test, -EINVAL, proc_dointvec_minmax(table, KUNIT_PROC_WRITE,
ca5cba219ba481 Wen Yang     2026-01-14  439  					user_buffer, &len, &pos));
ca5cba219ba481 Wen Yang     2026-01-14  440  		KUNIT_EXPECT_EQ(test, 0, data);
ca5cba219ba481 Wen Yang     2026-01-14  441  	}
ca5cba219ba481 Wen Yang     2026-01-14  442  }
ca5cba219ba481 Wen Yang     2026-01-14  443  

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

             reply	other threads:[~2026-01-16  0:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-16  0:57 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-01-13 17:40 [RFC PATCH 0/4] sysctl: refactor ctl_table creation and change extra{1,2} type wen.yang
2026-01-13 17:40 ` [RFC PATCH 3/4] sysctl: support encoding values directly in the table entry wen.yang

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=202601160850.i6bVRfFi-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /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.