CC: kbuild-...@lists.01.org
TO: "Christoph, Hellwig," <h...@lst.de>
CC: Al Viro <v...@zeniv.linux.org.uk>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   e7b08814b16b80a0bf76eeca16317f8c2ed23b8c
commit: 32927393dc1ccd60fb2bdc05b9e8e88753761469 [3942/14131] sysctl: pass 
kernel pointers to ->proc_handler
:::::: branch date: 3 days ago
:::::: commit date: 5 weeks ago
config: ia64-randconfig-s032-20200601 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-243-gc100a7ab-dirty
        git checkout 32927393dc1ccd60fb2bdc05b9e8e88753761469
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=ia64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <l...@intel.com>


sparse warnings: (new ones prefixed by >>)

   net/core/sysctl_net_core.c:129:42: sparse: sparse: incorrect type in 
argument 1 (different address spaces) @@     expected char const [noderef] 
<asn:1> *buf @@     got void *buffer @@
>> net/core/sysctl_net_core.c:129:42: sparse:     expected char const [noderef] 
>> <asn:1> *buf
   net/core/sysctl_net_core.c:129:42: sparse:     got void *buffer

# 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=32927393dc1ccd60fb2bdc05b9e8e88753761469
git remote add linux-next 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 32927393dc1ccd60fb2bdc05b9e8e88753761469
vim +129 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,
32927393dc1ccd Christoph Hellwig 2020-04-24  118                                
 void *buffer, size_t *lenp, loff_t *ppos)
99bbc70741903c Willem de Bruijn  2013-05-20  119  {
99bbc70741903c Willem de Bruijn  2013-05-20  120        struct sd_flow_limit 
*cur;
99bbc70741903c Willem de Bruijn  2013-05-20  121        struct softnet_data *sd;
99bbc70741903c Willem de Bruijn  2013-05-20  122        cpumask_var_t mask;
99bbc70741903c Willem de Bruijn  2013-05-20  123        int i, len, ret = 0;
99bbc70741903c Willem de Bruijn  2013-05-20  124  
99bbc70741903c Willem de Bruijn  2013-05-20  125        if 
(!alloc_cpumask_var(&mask, GFP_KERNEL))
99bbc70741903c Willem de Bruijn  2013-05-20  126                return -ENOMEM;
99bbc70741903c Willem de Bruijn  2013-05-20  127  
99bbc70741903c Willem de Bruijn  2013-05-20  128        if (write) {
99bbc70741903c Willem de Bruijn  2013-05-20 @129                ret = 
cpumask_parse_user(buffer, *lenp, mask);
99bbc70741903c Willem de Bruijn  2013-05-20  130                if (ret)
99bbc70741903c Willem de Bruijn  2013-05-20  131                        goto 
done;
99bbc70741903c Willem de Bruijn  2013-05-20  132  
99bbc70741903c Willem de Bruijn  2013-05-20  133                
mutex_lock(&flow_limit_update_mutex);
99bbc70741903c Willem de Bruijn  2013-05-20  134                len = 
sizeof(*cur) + netdev_flow_limit_table_len;
99bbc70741903c Willem de Bruijn  2013-05-20  135                
for_each_possible_cpu(i) {
99bbc70741903c Willem de Bruijn  2013-05-20  136                        sd = 
&per_cpu(softnet_data, i);
99bbc70741903c Willem de Bruijn  2013-05-20  137                        cur = 
rcu_dereference_protected(sd->flow_limit,
99bbc70741903c Willem de Bruijn  2013-05-20  138                                
     lockdep_is_held(&flow_limit_update_mutex));
99bbc70741903c Willem de Bruijn  2013-05-20  139                        if (cur 
&& !cpumask_test_cpu(i, mask)) {
99bbc70741903c Willem de Bruijn  2013-05-20  140                                
RCU_INIT_POINTER(sd->flow_limit, NULL);
99bbc70741903c Willem de Bruijn  2013-05-20  141                                
synchronize_rcu();
99bbc70741903c Willem de Bruijn  2013-05-20  142                                
kfree(cur);
99bbc70741903c Willem de Bruijn  2013-05-20  143                        } else 
if (!cur && cpumask_test_cpu(i, mask)) {
5b59d467ad9ff9 Eric Dumazet      2013-12-18  144                                
cur = kzalloc_node(len, GFP_KERNEL,
5b59d467ad9ff9 Eric Dumazet      2013-12-18  145                                
                   cpu_to_node(i));
99bbc70741903c Willem de Bruijn  2013-05-20  146                                
if (!cur) {
99bbc70741903c Willem de Bruijn  2013-05-20  147                                
        /* not unwinding previous changes */
99bbc70741903c Willem de Bruijn  2013-05-20  148                                
        ret = -ENOMEM;
99bbc70741903c Willem de Bruijn  2013-05-20  149                                
        goto write_unlock;
99bbc70741903c Willem de Bruijn  2013-05-20  150                                
}
99bbc70741903c Willem de Bruijn  2013-05-20  151                                
cur->num_buckets = netdev_flow_limit_table_len;
99bbc70741903c Willem de Bruijn  2013-05-20  152                                
rcu_assign_pointer(sd->flow_limit, cur);
99bbc70741903c Willem de Bruijn  2013-05-20  153                        }
99bbc70741903c Willem de Bruijn  2013-05-20  154                }
99bbc70741903c Willem de Bruijn  2013-05-20  155  write_unlock:
99bbc70741903c Willem de Bruijn  2013-05-20  156                
mutex_unlock(&flow_limit_update_mutex);
99bbc70741903c Willem de Bruijn  2013-05-20  157        } else {
5f121b9a83b499 Willem de Bruijn  2013-06-13  158                char kbuf[128];
5f121b9a83b499 Willem de Bruijn  2013-06-13  159  
99bbc70741903c Willem de Bruijn  2013-05-20  160                if (*ppos || 
!*lenp) {
99bbc70741903c Willem de Bruijn  2013-05-20  161                        *lenp = 
0;
99bbc70741903c Willem de Bruijn  2013-05-20  162                        goto 
done;
99bbc70741903c Willem de Bruijn  2013-05-20  163                }
99bbc70741903c Willem de Bruijn  2013-05-20  164  
99bbc70741903c Willem de Bruijn  2013-05-20  165                
cpumask_clear(mask);
99bbc70741903c Willem de Bruijn  2013-05-20  166                rcu_read_lock();
99bbc70741903c Willem de Bruijn  2013-05-20  167                
for_each_possible_cpu(i) {
99bbc70741903c Willem de Bruijn  2013-05-20  168                        sd = 
&per_cpu(softnet_data, i);
99bbc70741903c Willem de Bruijn  2013-05-20  169                        if 
(rcu_dereference(sd->flow_limit))
99bbc70741903c Willem de Bruijn  2013-05-20  170                                
cpumask_set_cpu(i, mask);
99bbc70741903c Willem de Bruijn  2013-05-20  171                }
99bbc70741903c Willem de Bruijn  2013-05-20  172                
rcu_read_unlock();
99bbc70741903c Willem de Bruijn  2013-05-20  173  
5f121b9a83b499 Willem de Bruijn  2013-06-13  174                len = 
min(sizeof(kbuf) - 1, *lenp);
f09068276c5cbe Tejun Heo         2015-02-13  175                len = 
scnprintf(kbuf, len, "%*pb", cpumask_pr_args(mask));
5f121b9a83b499 Willem de Bruijn  2013-06-13  176                if (!len) {
5f121b9a83b499 Willem de Bruijn  2013-06-13  177                        *lenp = 
0;
5f121b9a83b499 Willem de Bruijn  2013-06-13  178                        goto 
done;
5f121b9a83b499 Willem de Bruijn  2013-06-13  179                }
5f121b9a83b499 Willem de Bruijn  2013-06-13  180                if (len < *lenp)
5f121b9a83b499 Willem de Bruijn  2013-06-13  181                        
kbuf[len++] = '\n';
32927393dc1ccd Christoph Hellwig 2020-04-24  182                memcpy(buffer, 
kbuf, len);
5f121b9a83b499 Willem de Bruijn  2013-06-13  183                *lenp = len;
5f121b9a83b499 Willem de Bruijn  2013-06-13  184                *ppos += len;
99bbc70741903c Willem de Bruijn  2013-05-20  185        }
99bbc70741903c Willem de Bruijn  2013-05-20  186  
99bbc70741903c Willem de Bruijn  2013-05-20  187  done:
99bbc70741903c Willem de Bruijn  2013-05-20  188        free_cpumask_var(mask);
99bbc70741903c Willem de Bruijn  2013-05-20  189        return ret;
99bbc70741903c Willem de Bruijn  2013-05-20  190  }
99bbc70741903c Willem de Bruijn  2013-05-20  191  

:::::: The code at line 129 was first introduced by commit
:::::: 99bbc70741903c063b3ccad90a3e06fc55df9245 rps: selective flow shedding 
during softnet overflow

:::::: TO: Willem de Bruijn <will...@google.com>
:::::: CC: David S. Miller <da...@davemloft.net>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to