From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7092489109543172892==" MIME-Version: 1.0 From: kbuild test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH RFC v4 31/42] kmsan: hooks for copy_to_user() and friends Date: Tue, 24 Dec 2019 12:50:11 +0800 Message-ID: <201912241227.h2iNMa7T%lkp@intel.com> In-Reply-To: <20191220184955.223741-32-glider@google.com> List-Id: --===============7092489109543172892== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, [FYI, it's a private test report for your RFC patch.] [auto build test WARNING on linus/master] [also build test WARNING on v5.5-rc3] [cannot apply to tip/x86/core tip/x86/mm efi/next next-20191220] [if your patch is applied to the wrong git tree, please drop us a note to h= elp improve the system. BTW, we also suggest to use '--base' option to specify = the base tree in git format-patch, please see https://stackoverflow.com/a/37406= 982] url: https://github.com/0day-ci/linux/commits/glider-google-com/Add-Kern= elMemorySanitizer-infrastructure/20191224-024330 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = 46cf053efec6a3a5f343fead837777efe8252a46 config: openrisc-simple_smp_defconfig (attached as .config) compiler: or1k-linux-gcc (GCC) 9.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=3D9.2.0 make.cross ARCH=3Dopenrisc = If you fix the issue, kindly add following tag Reported-by: kbuild test robot Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): net/core/sysctl_net_core.c: In function 'flow_limit_cpu_sysctl': >> net/core/sysctl_net_core.c:183:6: warning: 'res' may be used uninitializ= ed in this function [-Wmaybe-uninitialized] 183 | if (copy_to_user(buffer, kbuf, len)) { | ^ vim +/res +183 net/core/sysctl_net_core.c 99bbc70741903c Willem de Bruijn 2013-05-20 116 = fe2c6338fd2c6f Joe Perches 2013-06-11 117 static int flow_limit_cpu_= sysctl(struct ctl_table *table, int write, 99bbc70741903c Willem de Bruijn 2013-05-20 118 void __user *buffer, = size_t *lenp, 99bbc70741903c Willem de Bruijn 2013-05-20 119 loff_t *ppos) 99bbc70741903c Willem de Bruijn 2013-05-20 120 { 99bbc70741903c Willem de Bruijn 2013-05-20 121 struct sd_flow_limit *cur; 99bbc70741903c Willem de Bruijn 2013-05-20 122 struct softnet_data *sd; 99bbc70741903c Willem de Bruijn 2013-05-20 123 cpumask_var_t mask; 99bbc70741903c Willem de Bruijn 2013-05-20 124 int i, len, ret =3D 0; 99bbc70741903c Willem de Bruijn 2013-05-20 125 = 99bbc70741903c Willem de Bruijn 2013-05-20 126 if (!alloc_cpumask_var(&m= ask, GFP_KERNEL)) 99bbc70741903c Willem de Bruijn 2013-05-20 127 return -ENOMEM; 99bbc70741903c Willem de Bruijn 2013-05-20 128 = 99bbc70741903c Willem de Bruijn 2013-05-20 129 if (write) { 99bbc70741903c Willem de Bruijn 2013-05-20 130 ret =3D cpumask_parse_us= er(buffer, *lenp, mask); 99bbc70741903c Willem de Bruijn 2013-05-20 131 if (ret) 99bbc70741903c Willem de Bruijn 2013-05-20 132 goto done; 99bbc70741903c Willem de Bruijn 2013-05-20 133 = 99bbc70741903c Willem de Bruijn 2013-05-20 134 mutex_lock(&flow_limit_u= pdate_mutex); 99bbc70741903c Willem de Bruijn 2013-05-20 135 len =3D sizeof(*cur) + n= etdev_flow_limit_table_len; 99bbc70741903c Willem de Bruijn 2013-05-20 136 for_each_possible_cpu(i)= { 99bbc70741903c Willem de Bruijn 2013-05-20 137 sd =3D &per_cpu(softnet= _data, i); 99bbc70741903c Willem de Bruijn 2013-05-20 138 cur =3D rcu_dereference= _protected(sd->flow_limit, 99bbc70741903c Willem de Bruijn 2013-05-20 139 lockdep_is_held(&= flow_limit_update_mutex)); 99bbc70741903c Willem de Bruijn 2013-05-20 140 if (cur && !cpumask_tes= t_cpu(i, mask)) { 99bbc70741903c Willem de Bruijn 2013-05-20 141 RCU_INIT_POINTER(sd->f= low_limit, NULL); 99bbc70741903c Willem de Bruijn 2013-05-20 142 synchronize_rcu(); 99bbc70741903c Willem de Bruijn 2013-05-20 143 kfree(cur); 99bbc70741903c Willem de Bruijn 2013-05-20 144 } else if (!cur && cpum= ask_test_cpu(i, mask)) { 5b59d467ad9ff9 Eric Dumazet 2013-12-18 145 cur =3D kzalloc_node(l= en, GFP_KERNEL, 5b59d467ad9ff9 Eric Dumazet 2013-12-18 146 cpu_to_node(i)); 99bbc70741903c Willem de Bruijn 2013-05-20 147 if (!cur) { 99bbc70741903c Willem de Bruijn 2013-05-20 148 /* not unwinding prev= ious changes */ 99bbc70741903c Willem de Bruijn 2013-05-20 149 ret =3D -ENOMEM; 99bbc70741903c Willem de Bruijn 2013-05-20 150 goto write_unlock; 99bbc70741903c Willem de Bruijn 2013-05-20 151 } 99bbc70741903c Willem de Bruijn 2013-05-20 152 cur->num_buckets =3D n= etdev_flow_limit_table_len; 99bbc70741903c Willem de Bruijn 2013-05-20 153 rcu_assign_pointer(sd-= >flow_limit, cur); 99bbc70741903c Willem de Bruijn 2013-05-20 154 } 99bbc70741903c Willem de Bruijn 2013-05-20 155 } 99bbc70741903c Willem de Bruijn 2013-05-20 156 write_unlock: 99bbc70741903c Willem de Bruijn 2013-05-20 157 mutex_unlock(&flow_limit= _update_mutex); 99bbc70741903c Willem de Bruijn 2013-05-20 158 } else { 5f121b9a83b499 Willem de Bruijn 2013-06-13 159 char kbuf[128]; 5f121b9a83b499 Willem de Bruijn 2013-06-13 160 = 99bbc70741903c Willem de Bruijn 2013-05-20 161 if (*ppos || !*lenp) { 99bbc70741903c Willem de Bruijn 2013-05-20 162 *lenp =3D 0; 99bbc70741903c Willem de Bruijn 2013-05-20 163 goto done; 99bbc70741903c Willem de Bruijn 2013-05-20 164 } 99bbc70741903c Willem de Bruijn 2013-05-20 165 = 99bbc70741903c Willem de Bruijn 2013-05-20 166 cpumask_clear(mask); 99bbc70741903c Willem de Bruijn 2013-05-20 167 rcu_read_lock(); 99bbc70741903c Willem de Bruijn 2013-05-20 168 for_each_possible_cpu(i)= { 99bbc70741903c Willem de Bruijn 2013-05-20 169 sd =3D &per_cpu(softnet= _data, i); 99bbc70741903c Willem de Bruijn 2013-05-20 170 if (rcu_dereference(sd-= >flow_limit)) 99bbc70741903c Willem de Bruijn 2013-05-20 171 cpumask_set_cpu(i, mas= k); 99bbc70741903c Willem de Bruijn 2013-05-20 172 } 99bbc70741903c Willem de Bruijn 2013-05-20 173 rcu_read_unlock(); 99bbc70741903c Willem de Bruijn 2013-05-20 174 = 5f121b9a83b499 Willem de Bruijn 2013-06-13 175 len =3D min(sizeof(kbuf)= - 1, *lenp); f09068276c5cbe Tejun Heo 2015-02-13 176 len =3D scnprintf(kbuf, = len, "%*pb", cpumask_pr_args(mask)); 5f121b9a83b499 Willem de Bruijn 2013-06-13 177 if (!len) { 5f121b9a83b499 Willem de Bruijn 2013-06-13 178 *lenp =3D 0; 5f121b9a83b499 Willem de Bruijn 2013-06-13 179 goto done; 5f121b9a83b499 Willem de Bruijn 2013-06-13 180 } 5f121b9a83b499 Willem de Bruijn 2013-06-13 181 if (len < *lenp) 5f121b9a83b499 Willem de Bruijn 2013-06-13 182 kbuf[len++] =3D '\n'; 5f121b9a83b499 Willem de Bruijn 2013-06-13 @183 if (copy_to_user(buffer,= kbuf, len)) { 5f121b9a83b499 Willem de Bruijn 2013-06-13 184 ret =3D -EFAULT; 5f121b9a83b499 Willem de Bruijn 2013-06-13 185 goto done; 5f121b9a83b499 Willem de Bruijn 2013-06-13 186 } 5f121b9a83b499 Willem de Bruijn 2013-06-13 187 *lenp =3D len; 5f121b9a83b499 Willem de Bruijn 2013-06-13 188 *ppos +=3D len; 99bbc70741903c Willem de Bruijn 2013-05-20 189 } 99bbc70741903c Willem de Bruijn 2013-05-20 190 = 99bbc70741903c Willem de Bruijn 2013-05-20 191 done: 99bbc70741903c Willem de Bruijn 2013-05-20 192 free_cpumask_var(mask); 99bbc70741903c Willem de Bruijn 2013-05-20 193 return ret; 99bbc70741903c Willem de Bruijn 2013-05-20 194 } 99bbc70741903c Willem de Bruijn 2013-05-20 195 = :::::: The code@line 183 was first introduced by commit :::::: 5f121b9a83b499a61ed44e5ba619c7de8f7271ad net-rps: fixes for rps flow= limit :::::: TO: Willem de Bruijn :::::: CC: David S. Miller --- 0-DAY kernel test infrastructure Open Source Technology Cen= ter https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corpor= ation --===============7092489109543172892== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 7z6FPYf/Adv2A77bdgAA --===============7092489109543172892==--