Re: [PATCH v1 2/2] ucounts: Move rlimit max values from ucounts max

Dan Carpenter
2021-12-03T13:33:58Z

Hi Alexey,

url: https://github.com/0day-ci/linux/commits/Alexey-Gladkov/ucounts-Fix-rlimit-max-values-check/20211126-224059
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 136057256686de39cc3a07c2e39ef6bc43003ff6
config: i386-randconfig-m021-20211126 (https://download.01.org/0day-ci/archive/20211128/202111280022.ugxpiKpA-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
kernel/ucount.c:109 setup_userns_sysctls() error: buffer overflow 'ns->ucount_max' 10 <= 13

vim +109 kernel/ucount.c

dbec28460a89aa Eric W. Biederman 2016-07-30 98 bool setup_userns_sysctls(struct user_namespace *ns)
dbec28460a89aa Eric W. Biederman 2016-07-30 99 {
dbec28460a89aa Eric W. Biederman 2016-07-30 100 #ifdef CONFIG_SYSCTL
dbec28460a89aa Eric W. Biederman 2016-07-30 101 struct ctl_table *tbl;
0f538e3e712a51 Jan Kara 2020-04-07 102
0f538e3e712a51 Jan Kara 2020-04-07 103 BUILD_BUG_ON(ARRAY_SIZE(user_table) != UCOUNT_COUNTS + 1);
dbec28460a89aa Eric W. Biederman 2016-07-30 104 setup_sysctl_set(&ns->set, &set_root, set_is_seen);
f6b2db1a3e8d14 Eric W. Biederman 2016-08-08 105 tbl = kmemdup(user_table, sizeof(user_table), GFP_KERNEL);
dbec28460a89aa Eric W. Biederman 2016-07-30 106 if (tbl) {
25f9c0817c535a Eric W. Biederman 2016-08-08 107 int i;
25f9c0817c535a Eric W. Biederman 2016-08-08 108 for (i = 0; i < UCOUNT_COUNTS; i++) {
25f9c0817c535a Eric W. Biederman 2016-08-08 @109 tbl[i].data = &ns->ucount_max[i];

The patch changes the size of ->ucount_max[] to MAX_PER_NAMESPACE_UCOUNTS
but this loop still goes up to UCOUNT_COUNTS.

25f9c0817c535a Eric W. Biederman 2016-08-08 110 }
f6b2db1a3e8d14 Eric W. Biederman 2016-08-08 111 ns->sysctls = __register_sysctl_table(&ns->set, "user", tbl);
dbec28460a89aa Eric W. Biederman 2016-07-30 112 }
dbec28460a89aa Eric W. Biederman 2016-07-30 113 if (!ns->sysctls) {
dbec28460a89aa Eric W. Biederman 2016-07-30 114 kfree(tbl);
dbec28460a89aa Eric W. Biederman 2016-07-30 115 retire_sysctl_set(&ns->set);
dbec28460a89aa Eric W. Biederman 2016-07-30 116 return false;
dbec28460a89aa Eric W. Biederman 2016-07-30 117 }
dbec28460a89aa Eric W. Biederman 2016-07-30 118 #endif
dbec28460a89aa Eric W. Biederman 2016-07-30 119 return true;
dbec28460a89aa Eric W. Biederman 2016-07-30 120 }

---
0-DAY CI Kernel Test Service, Intel Corporation