public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>,
	kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	Li Yang <leoyang.li@nxp.com>, Timur Tabi <timur@kernel.org>
Subject: drivers/net/ethernet/freescale/gianfar.c:580 gfar_parse_group() warn: 'grp->regs' not released on lines: 517.
Date: Mon, 16 Nov 2020 12:25:06 +0300	[thread overview]
Message-ID: <20201116092505.GU29398@kadam> (raw)

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

Hi Rasmus,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f01c30de86f1047e9bae1b1b1417b0ce8dcd15b1
commit: 5a35435ef4e6e4bd2aabd6706b146b298a9cffe5 soc: fsl: qe: remove PPC32 dependency from CONFIG_QUICC_ENGINE
config: powerpc64-randconfig-m031-20201113 (attached as .config)
compiler: powerpc64-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/net/ethernet/freescale/gianfar.c:580 gfar_parse_group() warn: 'grp->regs' not released on lines: 517.

vim +580 drivers/net/ethernet/freescale/gianfar.c

46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  491  static int gfar_parse_group(struct device_node *np,
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  492  			    struct gfar_private *priv, const char *model)
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  493  {
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  494  	struct gfar_priv_grp *grp = &priv->gfargrp[priv->num_grps];
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  495  	int i;
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  496  
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  497  	for (i = 0; i < GFAR_NUM_IRQS; i++) {
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  498  		grp->irqinfo[i] = kzalloc(sizeof(struct gfar_irqinfo),
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  499  					  GFP_KERNEL);
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  500  		if (!grp->irqinfo[i])
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  501  			return -ENOMEM;
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  502  	}
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  503  
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  504  	grp->regs = of_iomap(np, 0);
                                                                                                            ^^^^^^^^^^^^^^^

5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  505  	if (!grp->regs)
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  506  		return -ENOMEM;
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  507  
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  508  	gfar_irq(grp, TX)->irq = irq_of_parse_and_map(np, 0);
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  509  
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  510  	/* If we aren't the FEC we have multiple interrupts */
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  511  	if (model && strcasecmp(model, "FEC")) {
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  512  		gfar_irq(grp, RX)->irq = irq_of_parse_and_map(np, 1);
ee873fda3bec7c6 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  513  		gfar_irq(grp, ER)->irq = irq_of_parse_and_map(np, 2);
fea0f6650979a4f drivers/net/ethernet/freescale/gianfar.c Mark Brown       2015-11-26  514  		if (!gfar_irq(grp, TX)->irq ||
fea0f6650979a4f drivers/net/ethernet/freescale/gianfar.c Mark Brown       2015-11-26  515  		    !gfar_irq(grp, RX)->irq ||
fea0f6650979a4f drivers/net/ethernet/freescale/gianfar.c Mark Brown       2015-11-26  516  		    !gfar_irq(grp, ER)->irq)
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  517  			return -EINVAL;

This should unmap "grp->regs".

46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  518  	}
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  519  
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  520  	grp->priv = priv;
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  521  	spin_lock_init(&grp->grplock);
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  522  	if (priv->mode == MQ_MG_MODE) {
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  523  		u32 rxq_mask, txq_mask;
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  524  		int ret;
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  525  
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  526  		grp->rx_bit_map = (DEFAULT_MAPPING >> priv->num_grps);
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  527  		grp->tx_bit_map = (DEFAULT_MAPPING >> priv->num_grps);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  528  
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  529  		ret = of_property_read_u32(np, "fsl,rx-bit-map", &rxq_mask);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  530  		if (!ret) {
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  531  			grp->rx_bit_map = rxq_mask ?
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  532  			rxq_mask : (DEFAULT_MAPPING >> priv->num_grps);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  533  		}
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  534  
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  535  		ret = of_property_read_u32(np, "fsl,tx-bit-map", &txq_mask);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  536  		if (!ret) {
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  537  			grp->tx_bit_map = txq_mask ?
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  538  			txq_mask : (DEFAULT_MAPPING >> priv->num_grps);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  539  		}
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  540  
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  541  		if (priv->poll_mode == GFAR_SQ_POLLING) {
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  542  			/* One Q per interrupt group: Q0 to G0, Q1 to G1 */
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  543  			grp->rx_bit_map = (DEFAULT_MAPPING >> priv->num_grps);
559176415cc663f drivers/net/ethernet/freescale/gianfar.c Jingchang Lu     2015-03-13  544  			grp->tx_bit_map = (DEFAULT_MAPPING >> priv->num_grps);
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  545  		}
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  546  	} else {
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  547  		grp->rx_bit_map = 0xFF;
5fedcc14d40e355 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2013-01-29  548  		grp->tx_bit_map = 0xFF;
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  549  	}
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  550  
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  551  	/* bit_map's MSB is q0 (from q0 to q7) but, for_each_set_bit parses
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  552  	 * right to left, so we need to revert the 8 bits to get the q index
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  553  	 */
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  554  	grp->rx_bit_map = bitrev8(grp->rx_bit_map);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  555  	grp->tx_bit_map = bitrev8(grp->tx_bit_map);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  556  
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  557  	/* Calculate RSTAT, TSTAT, RQUEUE and TQUEUE values,
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  558  	 * also assign queues to groups
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  559  	 */
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  560  	for_each_set_bit(i, &grp->rx_bit_map, priv->num_rx_queues) {
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  561  		if (!grp->rx_queue)
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  562  			grp->rx_queue = priv->rx_queue[i];
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  563  		grp->num_rx_queues++;
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  564  		grp->rstat |= (RSTAT_CLEAR_RHALT >> i);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  565  		priv->rqueue |= ((RQUEUE_EN0 | RQUEUE_EX0) >> i);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  566  		priv->rx_queue[i]->grp = grp;
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  567  	}
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  568  
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  569  	for_each_set_bit(i, &grp->tx_bit_map, priv->num_tx_queues) {
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  570  		if (!grp->tx_queue)
71ff9e3df7e1c5d drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-03-07  571  			grp->tx_queue = priv->tx_queue[i];
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  572  		grp->num_tx_queues++;
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  573  		grp->tstat |= (TSTAT_CLEAR_THALT >> i);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  574  		priv->tqueue |= (TQUEUE_EN0 >> i);
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  575  		priv->tx_queue[i]->grp = grp;
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  576  	}
208627883ecfaa1 drivers/net/ethernet/freescale/gianfar.c Claudiu Manoil   2014-02-17  577  
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  578  	priv->num_grps++;
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  579  
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02 @580  	return 0;
46ceb60ca80fa07 drivers/net/gianfar.c                    Sandeep Gopalpet 2009-11-02  581  }

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

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

             reply	other threads:[~2020-11-16 10:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-16  9:25 Dan Carpenter [this message]
2020-11-17  1:41 ` drivers/net/ethernet/freescale/gianfar.c:580 gfar_parse_group() warn: 'grp->regs' not released on lines: 517 Leo Li
2020-11-17  7:14   ` Dan Carpenter

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=20201116092505.GU29398@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=error27@gmail.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kbuild@lists.01.org \
    --cc=leoyang.li@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=lkp@intel.com \
    --cc=timur@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox