Hi Justin,

url:    
https://github.com/0day-ci/linux/commits/Justin-Iurman/Data-plane-support-for-IOAM-Pre-allocated-Trace-with-IPv6/20200625-033536
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 
0558c396040734bc1d361919566a581fd41aa539
config: microblaze-randconfig-m031-20200624 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.0

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

New smatch warnings:
net/ipv6/ioam6.c:164 ioam6_genl_delns() error: we previously assumed 
'ns->schema' could be null (see line 158)
net/ipv6/ioam6.c:358 ioam6_genl_delsc() error: we previously assumed 'sc->ns' 
could be null (see line 352)

# 
https://github.com/0day-ci/linux/commit/ce303f2d7c40f84739505f1daa7dac53daa6c4c5
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout ce303f2d7c40f84739505f1daa7dac53daa6c4c5
vim +164 net/ipv6/ioam6.c

ce303f2d7c40f8 Justin Iurman 2020-06-24  135  
ce303f2d7c40f8 Justin Iurman 2020-06-24  136  static int 
ioam6_genl_delns(struct sk_buff *skb, struct genl_info *info)
ce303f2d7c40f8 Justin Iurman 2020-06-24  137  {
ce303f2d7c40f8 Justin Iurman 2020-06-24  138    struct net *net = 
genl_info_net(info);
ce303f2d7c40f8 Justin Iurman 2020-06-24  139    struct ioam6_pernet_data 
*nsdata;
ce303f2d7c40f8 Justin Iurman 2020-06-24  140    struct ioam6_namespace *ns;
ce303f2d7c40f8 Justin Iurman 2020-06-24  141    __be16 ns_id;
ce303f2d7c40f8 Justin Iurman 2020-06-24  142    int err;
ce303f2d7c40f8 Justin Iurman 2020-06-24  143  
ce303f2d7c40f8 Justin Iurman 2020-06-24  144    if 
(!info->attrs[IOAM6_ATTR_NS_ID])
ce303f2d7c40f8 Justin Iurman 2020-06-24  145            return -EINVAL;
ce303f2d7c40f8 Justin Iurman 2020-06-24  146  
ce303f2d7c40f8 Justin Iurman 2020-06-24  147    ns_id = 
cpu_to_be16(nla_get_u16(info->attrs[IOAM6_ATTR_NS_ID]));
ce303f2d7c40f8 Justin Iurman 2020-06-24  148    nsdata = ioam6_pernet(net);
ce303f2d7c40f8 Justin Iurman 2020-06-24  149  
ce303f2d7c40f8 Justin Iurman 2020-06-24  150    mutex_lock(&nsdata->lock);
ce303f2d7c40f8 Justin Iurman 2020-06-24  151  
ce303f2d7c40f8 Justin Iurman 2020-06-24  152    ns = 
rhashtable_lookup_fast(&nsdata->namespaces, &ns_id, rht_ns_params);
ce303f2d7c40f8 Justin Iurman 2020-06-24  153    if (!ns) {
ce303f2d7c40f8 Justin Iurman 2020-06-24  154            err = -ENOENT;
ce303f2d7c40f8 Justin Iurman 2020-06-24  155            goto out_unlock;
ce303f2d7c40f8 Justin Iurman 2020-06-24  156    }
ce303f2d7c40f8 Justin Iurman 2020-06-24  157  
ce303f2d7c40f8 Justin Iurman 2020-06-24 @158    if (ns->schema)
                                                    ^^^^^^^^^^
Check for NULL

ce303f2d7c40f8 Justin Iurman 2020-06-24  159            ns->schema->ns = NULL;
ce303f2d7c40f8 Justin Iurman 2020-06-24  160  
ce303f2d7c40f8 Justin Iurman 2020-06-24  161    err = 
rhashtable_remove_fast(&nsdata->namespaces, &ns->head,
ce303f2d7c40f8 Justin Iurman 2020-06-24  162                                 
rht_ns_params);
ce303f2d7c40f8 Justin Iurman 2020-06-24  163    if (err) {
ce303f2d7c40f8 Justin Iurman 2020-06-24 @164            ns->schema->ns = ns;
                                                        ^^^^^^^^^^^^^^
Unchecked dereference.

ce303f2d7c40f8 Justin Iurman 2020-06-24  165            goto out_unlock;
ce303f2d7c40f8 Justin Iurman 2020-06-24  166    }
ce303f2d7c40f8 Justin Iurman 2020-06-24  167  
ce303f2d7c40f8 Justin Iurman 2020-06-24  168    ioam6_ns_release(ns);
ce303f2d7c40f8 Justin Iurman 2020-06-24  169  
ce303f2d7c40f8 Justin Iurman 2020-06-24  170  out_unlock:
ce303f2d7c40f8 Justin Iurman 2020-06-24  171    mutex_unlock(&nsdata->lock);
ce303f2d7c40f8 Justin Iurman 2020-06-24  172    return err;
ce303f2d7c40f8 Justin Iurman 2020-06-24  173  }

[ snip ]

ce303f2d7c40f8 Justin Iurman 2020-06-24  330  static int 
ioam6_genl_delsc(struct sk_buff *skb, struct genl_info *info)
ce303f2d7c40f8 Justin Iurman 2020-06-24  331  {
ce303f2d7c40f8 Justin Iurman 2020-06-24  332    struct net *net = 
genl_info_net(info);
ce303f2d7c40f8 Justin Iurman 2020-06-24  333    struct ioam6_pernet_data 
*nsdata;
ce303f2d7c40f8 Justin Iurman 2020-06-24  334    struct ioam6_schema *sc;
ce303f2d7c40f8 Justin Iurman 2020-06-24  335    u32 sc_id;
ce303f2d7c40f8 Justin Iurman 2020-06-24  336    int err;
ce303f2d7c40f8 Justin Iurman 2020-06-24  337  
ce303f2d7c40f8 Justin Iurman 2020-06-24  338    if 
(!info->attrs[IOAM6_ATTR_SC_ID])
ce303f2d7c40f8 Justin Iurman 2020-06-24  339            return -EINVAL;
ce303f2d7c40f8 Justin Iurman 2020-06-24  340  
ce303f2d7c40f8 Justin Iurman 2020-06-24  341    sc_id = 
nla_get_u32(info->attrs[IOAM6_ATTR_SC_ID]);
ce303f2d7c40f8 Justin Iurman 2020-06-24  342    nsdata = ioam6_pernet(net);
ce303f2d7c40f8 Justin Iurman 2020-06-24  343  
ce303f2d7c40f8 Justin Iurman 2020-06-24  344    mutex_lock(&nsdata->lock);
ce303f2d7c40f8 Justin Iurman 2020-06-24  345  
ce303f2d7c40f8 Justin Iurman 2020-06-24  346    sc = 
rhashtable_lookup_fast(&nsdata->schemas, &sc_id, rht_sc_params);
ce303f2d7c40f8 Justin Iurman 2020-06-24  347    if (!sc) {
ce303f2d7c40f8 Justin Iurman 2020-06-24  348            err = -ENOENT;
ce303f2d7c40f8 Justin Iurman 2020-06-24  349            goto out_unlock;
ce303f2d7c40f8 Justin Iurman 2020-06-24  350    }
ce303f2d7c40f8 Justin Iurman 2020-06-24  351  
ce303f2d7c40f8 Justin Iurman 2020-06-24 @352    if (sc->ns)
                                                    ^^^^^^
Check for NULL

ce303f2d7c40f8 Justin Iurman 2020-06-24  353            sc->ns->schema = NULL;
ce303f2d7c40f8 Justin Iurman 2020-06-24  354  
ce303f2d7c40f8 Justin Iurman 2020-06-24  355    err = 
rhashtable_remove_fast(&nsdata->schemas, &sc->head,
ce303f2d7c40f8 Justin Iurman 2020-06-24  356                                 
rht_sc_params);
ce303f2d7c40f8 Justin Iurman 2020-06-24  357    if (err) {
ce303f2d7c40f8 Justin Iurman 2020-06-24 @358            sc->ns->schema = sc;
                                                        ^^^^^^^^^^^^^^
Unchecked dereference

ce303f2d7c40f8 Justin Iurman 2020-06-24  359            goto out_unlock;
ce303f2d7c40f8 Justin Iurman 2020-06-24  360    }
ce303f2d7c40f8 Justin Iurman 2020-06-24  361  
ce303f2d7c40f8 Justin Iurman 2020-06-24  362    ioam6_sc_release(sc);
ce303f2d7c40f8 Justin Iurman 2020-06-24  363  
ce303f2d7c40f8 Justin Iurman 2020-06-24  364  out_unlock:
ce303f2d7c40f8 Justin Iurman 2020-06-24  365    mutex_unlock(&nsdata->lock);
ce303f2d7c40f8 Justin Iurman 2020-06-24  366    return err;
ce303f2d7c40f8 Justin Iurman 2020-06-24  367  }

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

Attachment: .config.gz
Description: application/gzip

Reply via email to