All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/mtd/parsers/qcomsmempart.c:109 parse_qcomsmem_part() warn: passing zero to 'PTR_ERR'
Date: Wed, 03 Mar 2021 02:27:14 +0800	[thread overview]
Message-ID: <202103030211.ZHMDbu16-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
CC: Miquel Raynal <miquel.raynal@bootlin.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   7a7fd0de4a9804299793e564a555a49c1fc924cb
commit: 803eb124e1a64e42888542c3444bfe6dac412c7f mtd: parsers: Add Qcom SMEM parser
date:   8 weeks ago
:::::: branch date: 23 hours ago
:::::: commit date: 8 weeks ago
config: nds32-randconfig-m031-20210302 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0

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

smatch warnings:
drivers/mtd/parsers/qcomsmempart.c:109 parse_qcomsmem_part() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +109 drivers/mtd/parsers/qcomsmempart.c

803eb124e1a64e Manivannan Sadhasivam 2021-01-04   56  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   57  static int parse_qcomsmem_part(struct mtd_info *mtd,
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   58  			       const struct mtd_partition **pparts,
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   59  			       struct mtd_part_parser_data *data)
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   60  {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   61  	struct smem_flash_pentry *pentry;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   62  	struct smem_flash_ptable *ptable;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   63  	size_t len = SMEM_FLASH_PTABLE_HDR_LEN;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   64  	struct mtd_partition *parts;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   65  	int ret, i, numparts;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   66  	char *name, *c;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   67  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   68  	pr_debug("Parsing partition table info from SMEM\n");
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   69  	ptable = qcom_smem_get(SMEM_APPS, SMEM_AARM_PARTITION_TABLE, &len);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   70  	if (IS_ERR(ptable)) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   71  		pr_err("Error reading partition table header\n");
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   72  		return PTR_ERR(ptable);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   73  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   74  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   75  	/* Verify ptable magic */
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   76  	if (le32_to_cpu(ptable->magic1) != SMEM_FLASH_PART_MAGIC1 ||
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   77  	    le32_to_cpu(ptable->magic2) != SMEM_FLASH_PART_MAGIC2) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   78  		pr_err("Partition table magic verification failed\n");
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   79  		return -EINVAL;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   80  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   81  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   82  	/* Ensure that # of partitions is less than the max we have allocated */
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   83  	numparts = le32_to_cpu(ptable->numparts);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   84  	if (numparts > SMEM_FLASH_PTABLE_MAX_PARTS_V4) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   85  		pr_err("Partition numbers exceed the max limit\n");
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   86  		return -EINVAL;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   87  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   88  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   89  	/* Find out length of partition data based on table version */
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   90  	if (le32_to_cpu(ptable->version) <= SMEM_FLASH_PTABLE_V3) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   91  		len = SMEM_FLASH_PTABLE_HDR_LEN + SMEM_FLASH_PTABLE_MAX_PARTS_V3 *
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   92  			sizeof(struct smem_flash_pentry);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   93  	} else if (le32_to_cpu(ptable->version) == SMEM_FLASH_PTABLE_V4) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   94  		len = SMEM_FLASH_PTABLE_HDR_LEN + SMEM_FLASH_PTABLE_MAX_PARTS_V4 *
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   95  			sizeof(struct smem_flash_pentry);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   96  	} else {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   97  		pr_err("Unknown ptable version (%d)", le32_to_cpu(ptable->version));
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   98  		return -EINVAL;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04   99  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  100  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  101  	/*
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  102  	 * Now that the partition table header has been parsed, verified
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  103  	 * and the length of the partition table calculated, read the
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  104  	 * complete partition table
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  105  	 */
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  106  	ptable = qcom_smem_get(SMEM_APPS, SMEM_AARM_PARTITION_TABLE, &len);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  107  	if (IS_ERR_OR_NULL(ptable)) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  108  		pr_err("Error reading partition table\n");
803eb124e1a64e Manivannan Sadhasivam 2021-01-04 @109  		return PTR_ERR(ptable);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  110  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  111  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  112  	parts = kcalloc(numparts, sizeof(*parts), GFP_KERNEL);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  113  	if (!parts)
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  114  		return -ENOMEM;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  115  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  116  	for (i = 0; i < numparts; i++) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  117  		pentry = &ptable->pentry[i];
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  118  		if (pentry->name[0] == '\0')
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  119  			continue;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  120  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  121  		name = kstrdup(pentry->name, GFP_KERNEL);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  122  		if (!name) {
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  123  			ret = -ENOMEM;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  124  			goto out_free_parts;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  125  		}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  126  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  127  		/* Convert name to lower case */
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  128  		for (c = name; *c != '\0'; c++)
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  129  			*c = tolower(*c);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  130  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  131  		parts[i].name = name;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  132  		parts[i].offset = le32_to_cpu(pentry->offset) * mtd->erasesize;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  133  		parts[i].mask_flags = pentry->attr;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  134  		parts[i].size = le32_to_cpu(pentry->length) * mtd->erasesize;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  135  		pr_debug("%d: %s offs=0x%08x size=0x%08x attr:0x%08x\n",
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  136  			 i, pentry->name, le32_to_cpu(pentry->offset),
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  137  			 le32_to_cpu(pentry->length), pentry->attr);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  138  	}
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  139  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  140  	pr_debug("SMEM partition table found: ver: %d len: %d\n",
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  141  		 le32_to_cpu(ptable->version), numparts);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  142  	*pparts = parts;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  143  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  144  	return numparts;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  145  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  146  out_free_parts:
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  147  	while (--i >= 0)
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  148  		kfree(parts[i].name);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  149  	kfree(parts);
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  150  	*pparts = NULL;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  151  
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  152  	return ret;
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  153  }
803eb124e1a64e Manivannan Sadhasivam 2021-01-04  154  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28262 bytes --]

             reply	other threads:[~2021-03-02 18:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-02 18:27 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-03-03  5:49 drivers/mtd/parsers/qcomsmempart.c:109 parse_qcomsmem_part() warn: passing zero to 'PTR_ERR' Dan Carpenter
2021-03-03  5:49 ` Dan Carpenter
2021-03-03  5:49 ` Dan Carpenter
2021-03-03  8:48 ` Miquel Raynal
2021-03-03 11:08   ` Dan Carpenter
2021-03-03 11:08     ` Dan Carpenter
2021-03-03 11:08     ` Dan Carpenter
2021-03-03 16:27   ` Manivannan Sadhasivam
2021-03-03 16:27     ` Manivannan Sadhasivam

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=202103030211.ZHMDbu16-lkp@intel.com \
    --to=lkp@intel.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.