All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: drivers/nvdimm/namespace_devs.c:1991:10: warning: Local variable 'uuid' shadows outer variable [shadowVariable]
Date: Sat, 23 Apr 2022 16:59:06 +0800	[thread overview]
Message-ID: <202204231623.UPDSSd2R-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c00c5e1d157bec0ef0b0b59aa5482eb8dc7e8e49
commit: d1c6e08e7503649e4a4f3f9e700e2c05300b6379 libnvdimm/labels: Add uuid helpers
date:   7 months ago
compiler: arc-elf-gcc (GCC) 11.2.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout d1c6e08e7503649e4a4f3f9e700e2c05300b6379
        cppcheck --quiet --enable=style,performance,portability --template=gcc FILE

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


cppcheck warnings: (new ones prefixed by >>)
   drivers/nvdimm/namespace_devs.c:913:20: warning: Local variable 'res' shadows outer variable [shadowVariable]
     struct resource *res;
                      ^
   drivers/nvdimm/namespace_devs.c:901:19: note: Shadowed declaration
    struct resource *res = &nspm->nsio.res;
                     ^
   drivers/nvdimm/namespace_devs.c:913:20: note: Shadow variable
     struct resource *res;
                      ^
>> drivers/nvdimm/namespace_devs.c:1991:10: warning: Local variable 'uuid' shadows outer variable [shadowVariable]
     uuid_t uuid;
            ^
   drivers/nvdimm/namespace_devs.c:1959:9: note: Shadowed declaration
    uuid_t uuid;
           ^
   drivers/nvdimm/namespace_devs.c:1991:10: note: Shadow variable
     uuid_t uuid;
            ^
   drivers/nvdimm/namespace_devs.c:2031:26: warning: Local variable 'ndd' shadows outer variable [shadowVariable]
     struct nvdimm_drvdata *ndd;
                            ^
   drivers/nvdimm/namespace_devs.c:1949:25: note: Shadowed declaration
    struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
                           ^
   drivers/nvdimm/namespace_devs.c:2031:26: note: Shadow variable
     struct nvdimm_drvdata *ndd;
                            ^
   drivers/nvdimm/namespace_devs.c:2427:26: warning: Local variable 'e' shadows outer variable [shadowVariable]
      struct list_head *l, *e;
                            ^
   drivers/nvdimm/namespace_devs.c:2334:35: note: Shadowed declaration
    struct nd_label_ent *label_ent, *e;
                                     ^
   drivers/nvdimm/namespace_devs.c:2427:26: note: Shadow variable
      struct list_head *l, *e;
                            ^

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

   drivers/nvdimm/namespace_devs.c:1236:9: warning: Uninitialized variable: nd_label [uninitvar]
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:1232:51: note: Assignment 'nd_label=label_ent->label', assigned value is <Uninit>
      struct nd_namespace_label *nd_label = label_ent->label;
                                                     ^
   drivers/nvdimm/namespace_devs.c:1236:9: note: Uninitialized variable: nd_label
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:1853:9: warning: Uninitialized variable: nd_label [uninitvar]
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:1850:51: note: Assignment 'nd_label=label_ent->label', assigned value is <Uninit>
      struct nd_namespace_label *nd_label = label_ent->label;
                                                     ^
   drivers/nvdimm/namespace_devs.c:1853:9: note: Uninitialized variable: nd_label
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:1903:9: warning: Uninitialized variable: nd_label [uninitvar]
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:1902:24: note: Assignment 'nd_label=label_ent->label', assigned value is <Uninit>
      nd_label = label_ent->label;
                          ^
   drivers/nvdimm/namespace_devs.c:1903:9: note: Uninitialized variable: nd_label
      if (!nd_label)
           ^
   drivers/nvdimm/namespace_devs.c:2345:8: warning: Uninitialized variable: nd_label [uninitvar]
     if (!nd_label)
          ^
   drivers/nvdimm/namespace_devs.c:2341:50: note: Assignment 'nd_label=label_ent->label', assigned value is <Uninit>
     struct nd_namespace_label *nd_label = label_ent->label;
                                                    ^
   drivers/nvdimm/namespace_devs.c:2345:8: note: Uninitialized variable: nd_label
     if (!nd_label)
          ^

vim +/uuid +1991 drivers/nvdimm/namespace_devs.c

  1938	
  1939	/**
  1940	 * create_namespace_pmem - validate interleave set labelling, retrieve label0
  1941	 * @nd_region: region with mappings to validate
  1942	 * @nspm: target namespace to create
  1943	 * @nd_label: target pmem namespace label to evaluate
  1944	 */
  1945	static struct device *create_namespace_pmem(struct nd_region *nd_region,
  1946						    struct nd_mapping *nd_mapping,
  1947						    struct nd_namespace_label *nd_label)
  1948	{
  1949		struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
  1950		struct nd_namespace_index *nsindex =
  1951			to_namespace_index(ndd, ndd->ns_current);
  1952		u64 cookie = nd_region_interleave_set_cookie(nd_region, nsindex);
  1953		u64 altcookie = nd_region_interleave_set_altcookie(nd_region);
  1954		struct nd_label_ent *label_ent;
  1955		struct nd_namespace_pmem *nspm;
  1956		resource_size_t size = 0;
  1957		struct resource *res;
  1958		struct device *dev;
  1959		uuid_t uuid;
  1960		int rc = 0;
  1961		u16 i;
  1962	
  1963		if (cookie == 0) {
  1964			dev_dbg(&nd_region->dev, "invalid interleave-set-cookie\n");
  1965			return ERR_PTR(-ENXIO);
  1966		}
  1967	
  1968		if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) {
  1969			dev_dbg(&nd_region->dev, "invalid cookie in label: %pUb\n",
  1970				nsl_uuid_raw(ndd, nd_label));
  1971			if (!nsl_validate_isetcookie(ndd, nd_label, altcookie))
  1972				return ERR_PTR(-EAGAIN);
  1973	
  1974			dev_dbg(&nd_region->dev, "valid altcookie in label: %pUb\n",
  1975				nsl_uuid_raw(ndd, nd_label));
  1976		}
  1977	
  1978		nspm = kzalloc(sizeof(*nspm), GFP_KERNEL);
  1979		if (!nspm)
  1980			return ERR_PTR(-ENOMEM);
  1981	
  1982		nspm->id = -1;
  1983		dev = &nspm->nsio.common.dev;
  1984		dev->type = &namespace_pmem_device_type;
  1985		dev->parent = &nd_region->dev;
  1986		res = &nspm->nsio.res;
  1987		res->name = dev_name(&nd_region->dev);
  1988		res->flags = IORESOURCE_MEM;
  1989	
  1990		for (i = 0; i < nd_region->ndr_mappings; i++) {
> 1991			uuid_t uuid;
  1992	
  1993			nsl_get_uuid(ndd, nd_label, &uuid);
  1994			if (has_uuid_at_pos(nd_region, &uuid, cookie, i))
  1995				continue;
  1996			if (has_uuid_at_pos(nd_region, &uuid, altcookie, i))
  1997				continue;
  1998			break;
  1999		}
  2000	
  2001		if (i < nd_region->ndr_mappings) {
  2002			struct nvdimm *nvdimm = nd_region->mapping[i].nvdimm;
  2003	
  2004			/*
  2005			 * Give up if we don't find an instance of a uuid at each
  2006			 * position (from 0 to nd_region->ndr_mappings - 1), or if we
  2007			 * find a dimm with two instances of the same uuid.
  2008			 */
  2009			dev_err(&nd_region->dev, "%s missing label for %pUb\n",
  2010				nvdimm_name(nvdimm), nsl_uuid_raw(ndd, nd_label));
  2011			rc = -EINVAL;
  2012			goto err;
  2013		}
  2014	
  2015		/*
  2016		 * Fix up each mapping's 'labels' to have the validated pmem label for
  2017		 * that position at labels[0], and NULL at labels[1].  In the process,
  2018		 * check that the namespace aligns with interleave-set.  We know
  2019		 * that it does not overlap with any blk namespaces by virtue of
  2020		 * the dimm being enabled (i.e. nd_label_reserve_dpa()
  2021		 * succeeded).
  2022		 */
  2023		nsl_get_uuid(ndd, nd_label, &uuid);
  2024		rc = select_pmem_id(nd_region, &uuid);
  2025		if (rc)
  2026			goto err;
  2027	
  2028		/* Calculate total size and populate namespace properties from label0 */
  2029		for (i = 0; i < nd_region->ndr_mappings; i++) {
  2030			struct nd_namespace_label *label0;
  2031			struct nvdimm_drvdata *ndd;
  2032	
  2033			nd_mapping = &nd_region->mapping[i];
  2034			label_ent = list_first_entry_or_null(&nd_mapping->labels,
  2035					typeof(*label_ent), list);
  2036			label0 = label_ent ? label_ent->label : NULL;
  2037	
  2038			if (!label0) {
  2039				WARN_ON(1);
  2040				continue;
  2041			}
  2042	
  2043			ndd = to_ndd(nd_mapping);
  2044			size += nsl_get_rawsize(ndd, label0);
  2045			if (nsl_get_position(ndd, label0) != 0)
  2046				continue;
  2047			WARN_ON(nspm->alt_name || nspm->uuid);
  2048			nspm->alt_name = kmemdup(nsl_ref_name(ndd, label0),
  2049						 NSLABEL_NAME_LEN, GFP_KERNEL);
  2050			nsl_get_uuid(ndd, label0, &uuid);
  2051			nspm->uuid = kmemdup(&uuid, sizeof(uuid_t), GFP_KERNEL);
  2052			nspm->lbasize = nsl_get_lbasize(ndd, label0);
  2053			nspm->nsio.common.claim_class =
  2054				nsl_get_claim_class(ndd, label0);
  2055		}
  2056	
  2057		if (!nspm->alt_name || !nspm->uuid) {
  2058			rc = -ENOMEM;
  2059			goto err;
  2060		}
  2061	
  2062		nd_namespace_pmem_set_resource(nd_region, nspm, size);
  2063	
  2064		return dev;
  2065	 err:
  2066		namespace_pmem_release(dev);
  2067		switch (rc) {
  2068		case -EINVAL:
  2069			dev_dbg(&nd_region->dev, "invalid label(s)\n");
  2070			break;
  2071		case -ENODEV:
  2072			dev_dbg(&nd_region->dev, "label not found\n");
  2073			break;
  2074		default:
  2075			dev_dbg(&nd_region->dev, "unexpected err: %d\n", rc);
  2076			break;
  2077		}
  2078		return ERR_PTR(rc);
  2079	}
  2080	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

                 reply	other threads:[~2022-04-23  8:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202204231623.UPDSSd2R-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.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.