All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [bcache:for-next 8/19] drivers/md/bcache/nvm-pages.c:159:4: warning: Either the condition '!extents' is redundant or there is possible null pointer dereference: extents.
Date: Wed, 10 Feb 2021 16:16:29 +0300	[thread overview]
Message-ID: <20210210131629.GX20820@kadam> (raw)

[-- Attachment #1: Type: text/plain, Size: 7763 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/colyli/linux-bcache.git  for-next
head:   78729af1b480ca5a3edb9547b97b59ed3dd72440
commit: 384227b99f413137d2b0548c364153690be8cbd1 [8/19] bcache: initialize the nvm pages allocator
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

   In file included from drivers/md/bcache/nvm-pages.c:
>> drivers/md/bcache/nvm-pages.c:159:4: warning: Either the condition '!extents' is redundant or there is possible null pointer dereference: extents. [nullPointerRedundantCheck]
      extents->ns = only_set->nss[j];
      ^
   drivers/md/bcache/nvm-pages.c:169:10: note: Assuming that condition '!extents' is not redundant
        if (!extents) {
            ^
   drivers/md/bcache/nvm-pages.c:159:4: note: Null pointer dereference
      extents->ns = only_set->nss[j];
      ^

vim +159 drivers/md/bcache/nvm-pages.c

384227b99f4131 Qiaowei Ren 2021-02-08  115  static int init_owner_info(struct bch_nvm_namespace *ns)
384227b99f4131 Qiaowei Ren 2021-02-08  116  {
384227b99f4131 Qiaowei Ren 2021-02-08  117  	struct bch_owner_list_head *owner_list_head;
384227b99f4131 Qiaowei Ren 2021-02-08  118  	struct bch_nvm_pages_owner_head *owner_head;
384227b99f4131 Qiaowei Ren 2021-02-08  119  	struct bch_nvm_pgalloc_recs *nvm_pgalloc_recs;
384227b99f4131 Qiaowei Ren 2021-02-08  120  	struct bch_owner_list *owner_list;
384227b99f4131 Qiaowei Ren 2021-02-08  121  	struct bch_nvm_alloced_recs *extents;
384227b99f4131 Qiaowei Ren 2021-02-08  122  	struct bch_extent *extent;
384227b99f4131 Qiaowei Ren 2021-02-08  123  	u32 i, j, k;
384227b99f4131 Qiaowei Ren 2021-02-08  124  
384227b99f4131 Qiaowei Ren 2021-02-08  125  	owner_list_head = (struct bch_owner_list_head *)
384227b99f4131 Qiaowei Ren 2021-02-08  126  			(ns->kaddr + BCH_NVM_PAGES_OWNER_LIST_HEAD_OFFSET);
384227b99f4131 Qiaowei Ren 2021-02-08  127  
384227b99f4131 Qiaowei Ren 2021-02-08  128  	mutex_lock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  129  	only_set->owner_list_size = owner_list_head->size;
384227b99f4131 Qiaowei Ren 2021-02-08  130  	only_set->owner_list_used = owner_list_head->used;
384227b99f4131 Qiaowei Ren 2021-02-08  131  
384227b99f4131 Qiaowei Ren 2021-02-08  132  	for (i = 0; i < owner_list_head->used; i++) {
384227b99f4131 Qiaowei Ren 2021-02-08  133  		owner_head = &owner_list_head->heads[i];
384227b99f4131 Qiaowei Ren 2021-02-08  134  		owner_list = alloc_owner_list(owner_head->uuid, owner_head->label,
384227b99f4131 Qiaowei Ren 2021-02-08  135  				only_set->total_namespaces_nr);
384227b99f4131 Qiaowei Ren 2021-02-08  136  		if (!owner_list) {
384227b99f4131 Qiaowei Ren 2021-02-08  137  			mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  138  			return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  139  		}
384227b99f4131 Qiaowei Ren 2021-02-08  140  
384227b99f4131 Qiaowei Ren 2021-02-08  141  		for (j = 0; j < only_set->total_namespaces_nr; j++) {
384227b99f4131 Qiaowei Ren 2021-02-08  142  			if (!only_set->nss[j] || !owner_head->recs[j])
384227b99f4131 Qiaowei Ren 2021-02-08  143  				continue;
384227b99f4131 Qiaowei Ren 2021-02-08  144  
384227b99f4131 Qiaowei Ren 2021-02-08  145  			nvm_pgalloc_recs = (struct bch_nvm_pgalloc_recs *)
384227b99f4131 Qiaowei Ren 2021-02-08  146  					((long)owner_head->recs[j] + ns->kaddr);
384227b99f4131 Qiaowei Ren 2021-02-08  147  			if (memcmp(nvm_pgalloc_recs->magic, bch_nvm_pages_pgalloc_magic, 16)) {
384227b99f4131 Qiaowei Ren 2021-02-08  148  				pr_info("invalid bch_nvmpages_pgalloc_magic\n");
384227b99f4131 Qiaowei Ren 2021-02-08  149  				mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  150  				return -EINVAL;
384227b99f4131 Qiaowei Ren 2021-02-08  151  			}
384227b99f4131 Qiaowei Ren 2021-02-08  152  
384227b99f4131 Qiaowei Ren 2021-02-08  153  			extents = kzalloc(sizeof(*extents), GFP_KERNEL);
384227b99f4131 Qiaowei Ren 2021-02-08  154  			if (!extents) {
384227b99f4131 Qiaowei Ren 2021-02-08  155  				mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  156  				return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  157  			}
384227b99f4131 Qiaowei Ren 2021-02-08  158  
384227b99f4131 Qiaowei Ren 2021-02-08 @159  			extents->ns = only_set->nss[j];
384227b99f4131 Qiaowei Ren 2021-02-08  160  			INIT_LIST_HEAD(&extents->extent_head);
384227b99f4131 Qiaowei Ren 2021-02-08  161  			owner_list->alloced_recs[j] = extents;
384227b99f4131 Qiaowei Ren 2021-02-08  162  
384227b99f4131 Qiaowei Ren 2021-02-08  163  			do {
384227b99f4131 Qiaowei Ren 2021-02-08  164  				struct bch_pgalloc_rec *rec;
384227b99f4131 Qiaowei Ren 2021-02-08  165  
384227b99f4131 Qiaowei Ren 2021-02-08  166  				for (k = 0; k < nvm_pgalloc_recs->used; k++) {
384227b99f4131 Qiaowei Ren 2021-02-08  167  					rec = &nvm_pgalloc_recs->recs[k];
384227b99f4131 Qiaowei Ren 2021-02-08  168  					extent = kzalloc(sizeof(*extent), GFP_KERNEL);
384227b99f4131 Qiaowei Ren 2021-02-08  169  					if (!extents) {
                                                                                     ^^^^^^^
This should be "extent" singular.

384227b99f4131 Qiaowei Ren 2021-02-08  170  						mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  171  						return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  172  					}
384227b99f4131 Qiaowei Ren 2021-02-08  173  					extent->kaddr = nvm_pgoff_to_vaddr(extents->ns, rec->pgoff);
384227b99f4131 Qiaowei Ren 2021-02-08  174  					extent->nr = rec->nr;
384227b99f4131 Qiaowei Ren 2021-02-08  175  					list_add_tail(&extent->list, &extents->extent_head);
384227b99f4131 Qiaowei Ren 2021-02-08  176  				}
384227b99f4131 Qiaowei Ren 2021-02-08  177  				extents->nr += nvm_pgalloc_recs->used;
384227b99f4131 Qiaowei Ren 2021-02-08  178  
384227b99f4131 Qiaowei Ren 2021-02-08  179  				if (nvm_pgalloc_recs->next) {
384227b99f4131 Qiaowei Ren 2021-02-08  180  					nvm_pgalloc_recs = (struct bch_nvm_pgalloc_recs *)
384227b99f4131 Qiaowei Ren 2021-02-08  181  						((long)nvm_pgalloc_recs->next + ns->kaddr);
384227b99f4131 Qiaowei Ren 2021-02-08  182  					if (memcmp(nvm_pgalloc_recs->magic,
384227b99f4131 Qiaowei Ren 2021-02-08  183  						bch_nvm_pages_pgalloc_magic, 16)) {
384227b99f4131 Qiaowei Ren 2021-02-08  184  						pr_info("invalid bch_nvmpages_pgalloc_magic\n");
384227b99f4131 Qiaowei Ren 2021-02-08  185  						mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  186  						return -EINVAL;
384227b99f4131 Qiaowei Ren 2021-02-08  187  					}
384227b99f4131 Qiaowei Ren 2021-02-08  188  				} else
384227b99f4131 Qiaowei Ren 2021-02-08  189  					nvm_pgalloc_recs = NULL;
384227b99f4131 Qiaowei Ren 2021-02-08  190  			} while (nvm_pgalloc_recs);
384227b99f4131 Qiaowei Ren 2021-02-08  191  		}
384227b99f4131 Qiaowei Ren 2021-02-08  192  		only_set->owner_lists[i] = owner_list;
384227b99f4131 Qiaowei Ren 2021-02-08  193  		owner_list->nvm_set = only_set;
384227b99f4131 Qiaowei Ren 2021-02-08  194  	}
384227b99f4131 Qiaowei Ren 2021-02-08  195  	mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  196  
384227b99f4131 Qiaowei Ren 2021-02-08  197  	return 0;
384227b99f4131 Qiaowei Ren 2021-02-08  198  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org 
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [kbuild] [bcache:for-next 8/19] drivers/md/bcache/nvm-pages.c:159:4: warning: Either the condition '!extents' is redundant or there is possible null pointer dereference: extents.
Date: Wed, 10 Feb 2021 16:16:29 +0300	[thread overview]
Message-ID: <20210210131629.GX20820@kadam> (raw)

[-- Attachment #1: Type: text/plain, Size: 7763 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/colyli/linux-bcache.git  for-next
head:   78729af1b480ca5a3edb9547b97b59ed3dd72440
commit: 384227b99f413137d2b0548c364153690be8cbd1 [8/19] bcache: initialize the nvm pages allocator
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

   In file included from drivers/md/bcache/nvm-pages.c:
>> drivers/md/bcache/nvm-pages.c:159:4: warning: Either the condition '!extents' is redundant or there is possible null pointer dereference: extents. [nullPointerRedundantCheck]
      extents->ns = only_set->nss[j];
      ^
   drivers/md/bcache/nvm-pages.c:169:10: note: Assuming that condition '!extents' is not redundant
        if (!extents) {
            ^
   drivers/md/bcache/nvm-pages.c:159:4: note: Null pointer dereference
      extents->ns = only_set->nss[j];
      ^

vim +159 drivers/md/bcache/nvm-pages.c

384227b99f4131 Qiaowei Ren 2021-02-08  115  static int init_owner_info(struct bch_nvm_namespace *ns)
384227b99f4131 Qiaowei Ren 2021-02-08  116  {
384227b99f4131 Qiaowei Ren 2021-02-08  117  	struct bch_owner_list_head *owner_list_head;
384227b99f4131 Qiaowei Ren 2021-02-08  118  	struct bch_nvm_pages_owner_head *owner_head;
384227b99f4131 Qiaowei Ren 2021-02-08  119  	struct bch_nvm_pgalloc_recs *nvm_pgalloc_recs;
384227b99f4131 Qiaowei Ren 2021-02-08  120  	struct bch_owner_list *owner_list;
384227b99f4131 Qiaowei Ren 2021-02-08  121  	struct bch_nvm_alloced_recs *extents;
384227b99f4131 Qiaowei Ren 2021-02-08  122  	struct bch_extent *extent;
384227b99f4131 Qiaowei Ren 2021-02-08  123  	u32 i, j, k;
384227b99f4131 Qiaowei Ren 2021-02-08  124  
384227b99f4131 Qiaowei Ren 2021-02-08  125  	owner_list_head = (struct bch_owner_list_head *)
384227b99f4131 Qiaowei Ren 2021-02-08  126  			(ns->kaddr + BCH_NVM_PAGES_OWNER_LIST_HEAD_OFFSET);
384227b99f4131 Qiaowei Ren 2021-02-08  127  
384227b99f4131 Qiaowei Ren 2021-02-08  128  	mutex_lock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  129  	only_set->owner_list_size = owner_list_head->size;
384227b99f4131 Qiaowei Ren 2021-02-08  130  	only_set->owner_list_used = owner_list_head->used;
384227b99f4131 Qiaowei Ren 2021-02-08  131  
384227b99f4131 Qiaowei Ren 2021-02-08  132  	for (i = 0; i < owner_list_head->used; i++) {
384227b99f4131 Qiaowei Ren 2021-02-08  133  		owner_head = &owner_list_head->heads[i];
384227b99f4131 Qiaowei Ren 2021-02-08  134  		owner_list = alloc_owner_list(owner_head->uuid, owner_head->label,
384227b99f4131 Qiaowei Ren 2021-02-08  135  				only_set->total_namespaces_nr);
384227b99f4131 Qiaowei Ren 2021-02-08  136  		if (!owner_list) {
384227b99f4131 Qiaowei Ren 2021-02-08  137  			mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  138  			return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  139  		}
384227b99f4131 Qiaowei Ren 2021-02-08  140  
384227b99f4131 Qiaowei Ren 2021-02-08  141  		for (j = 0; j < only_set->total_namespaces_nr; j++) {
384227b99f4131 Qiaowei Ren 2021-02-08  142  			if (!only_set->nss[j] || !owner_head->recs[j])
384227b99f4131 Qiaowei Ren 2021-02-08  143  				continue;
384227b99f4131 Qiaowei Ren 2021-02-08  144  
384227b99f4131 Qiaowei Ren 2021-02-08  145  			nvm_pgalloc_recs = (struct bch_nvm_pgalloc_recs *)
384227b99f4131 Qiaowei Ren 2021-02-08  146  					((long)owner_head->recs[j] + ns->kaddr);
384227b99f4131 Qiaowei Ren 2021-02-08  147  			if (memcmp(nvm_pgalloc_recs->magic, bch_nvm_pages_pgalloc_magic, 16)) {
384227b99f4131 Qiaowei Ren 2021-02-08  148  				pr_info("invalid bch_nvmpages_pgalloc_magic\n");
384227b99f4131 Qiaowei Ren 2021-02-08  149  				mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  150  				return -EINVAL;
384227b99f4131 Qiaowei Ren 2021-02-08  151  			}
384227b99f4131 Qiaowei Ren 2021-02-08  152  
384227b99f4131 Qiaowei Ren 2021-02-08  153  			extents = kzalloc(sizeof(*extents), GFP_KERNEL);
384227b99f4131 Qiaowei Ren 2021-02-08  154  			if (!extents) {
384227b99f4131 Qiaowei Ren 2021-02-08  155  				mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  156  				return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  157  			}
384227b99f4131 Qiaowei Ren 2021-02-08  158  
384227b99f4131 Qiaowei Ren 2021-02-08 @159  			extents->ns = only_set->nss[j];
384227b99f4131 Qiaowei Ren 2021-02-08  160  			INIT_LIST_HEAD(&extents->extent_head);
384227b99f4131 Qiaowei Ren 2021-02-08  161  			owner_list->alloced_recs[j] = extents;
384227b99f4131 Qiaowei Ren 2021-02-08  162  
384227b99f4131 Qiaowei Ren 2021-02-08  163  			do {
384227b99f4131 Qiaowei Ren 2021-02-08  164  				struct bch_pgalloc_rec *rec;
384227b99f4131 Qiaowei Ren 2021-02-08  165  
384227b99f4131 Qiaowei Ren 2021-02-08  166  				for (k = 0; k < nvm_pgalloc_recs->used; k++) {
384227b99f4131 Qiaowei Ren 2021-02-08  167  					rec = &nvm_pgalloc_recs->recs[k];
384227b99f4131 Qiaowei Ren 2021-02-08  168  					extent = kzalloc(sizeof(*extent), GFP_KERNEL);
384227b99f4131 Qiaowei Ren 2021-02-08  169  					if (!extents) {
                                                                                     ^^^^^^^
This should be "extent" singular.

384227b99f4131 Qiaowei Ren 2021-02-08  170  						mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  171  						return -ENOMEM;
384227b99f4131 Qiaowei Ren 2021-02-08  172  					}
384227b99f4131 Qiaowei Ren 2021-02-08  173  					extent->kaddr = nvm_pgoff_to_vaddr(extents->ns, rec->pgoff);
384227b99f4131 Qiaowei Ren 2021-02-08  174  					extent->nr = rec->nr;
384227b99f4131 Qiaowei Ren 2021-02-08  175  					list_add_tail(&extent->list, &extents->extent_head);
384227b99f4131 Qiaowei Ren 2021-02-08  176  				}
384227b99f4131 Qiaowei Ren 2021-02-08  177  				extents->nr += nvm_pgalloc_recs->used;
384227b99f4131 Qiaowei Ren 2021-02-08  178  
384227b99f4131 Qiaowei Ren 2021-02-08  179  				if (nvm_pgalloc_recs->next) {
384227b99f4131 Qiaowei Ren 2021-02-08  180  					nvm_pgalloc_recs = (struct bch_nvm_pgalloc_recs *)
384227b99f4131 Qiaowei Ren 2021-02-08  181  						((long)nvm_pgalloc_recs->next + ns->kaddr);
384227b99f4131 Qiaowei Ren 2021-02-08  182  					if (memcmp(nvm_pgalloc_recs->magic,
384227b99f4131 Qiaowei Ren 2021-02-08  183  						bch_nvm_pages_pgalloc_magic, 16)) {
384227b99f4131 Qiaowei Ren 2021-02-08  184  						pr_info("invalid bch_nvmpages_pgalloc_magic\n");
384227b99f4131 Qiaowei Ren 2021-02-08  185  						mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  186  						return -EINVAL;
384227b99f4131 Qiaowei Ren 2021-02-08  187  					}
384227b99f4131 Qiaowei Ren 2021-02-08  188  				} else
384227b99f4131 Qiaowei Ren 2021-02-08  189  					nvm_pgalloc_recs = NULL;
384227b99f4131 Qiaowei Ren 2021-02-08  190  			} while (nvm_pgalloc_recs);
384227b99f4131 Qiaowei Ren 2021-02-08  191  		}
384227b99f4131 Qiaowei Ren 2021-02-08  192  		only_set->owner_lists[i] = owner_list;
384227b99f4131 Qiaowei Ren 2021-02-08  193  		owner_list->nvm_set = only_set;
384227b99f4131 Qiaowei Ren 2021-02-08  194  	}
384227b99f4131 Qiaowei Ren 2021-02-08  195  	mutex_unlock(&only_set->lock);
384227b99f4131 Qiaowei Ren 2021-02-08  196  
384227b99f4131 Qiaowei Ren 2021-02-08  197  	return 0;
384227b99f4131 Qiaowei Ren 2021-02-08  198  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org 
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org

             reply	other threads:[~2021-02-10 13:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10 13:16 Dan Carpenter [this message]
2021-02-10 13:16 ` [kbuild] [bcache:for-next 8/19] drivers/md/bcache/nvm-pages.c:159:4: warning: Either the condition '!extents' is redundant or there is possible null pointer dereference: extents Dan Carpenter
2021-02-10 13:43 ` Coly Li
  -- strict thread matches above, loose matches on Subject: below --
2021-02-10 13:11 kernel test robot

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=20210210131629.GX20820@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild@lists.01.org \
    /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.