Re: [PATCH 1/1] i2c: imc: Add support for Intel iMC SMBus host controller. (fwd)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Devm-allocated data should not be kfreed.  The label probe_out_free does
not look necessary.

julia

---------- Forwarded message ----------
Date: Mon, 24 Feb 2020 11:49:07 +0800
From: kbuild test robot <lkp@xxxxxxxxx>
To: kbuild@xxxxxxxxxxxx
Cc: Julia Lawall <julia.lawall@xxxxxxx>
Subject: Re: [PATCH 1/1] i2c: imc: Add support for Intel iMC SMBus host
    controller.

CC: kbuild-all@xxxxxxxxxxxx
In-Reply-To: <1582498270-50674-2-git-send-email-schaecsn@xxxxxxx>
References: <1582498270-50674-2-git-send-email-schaecsn@xxxxxxx>
TO: Stefan Schaeckeler <schaecsn@xxxxxxx>
CC: linux-i2c@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, Andy Lutomirski <luto@xxxxxxxxxx>

Hi Stefan,

I love your patch! Perhaps something to improve:

[auto build test WARNING on wsa/i2c/for-next]
[also build test WARNING on linux/master linus/master v5.6-rc2 next-20200221]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Stefan-Schaeckeler/i2c-imc-Add-support-for-Intel-iMC-SMBus-host-controller/20200224-065435
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
:::::: branch date: 5 hours ago
:::::: commit date: 5 hours ago

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
Reported-by: Julia Lawall <julia.lawall@xxxxxxx>

>> drivers/i2c/busses/i2c-imc.c:447:1-6: WARNING: invalid free of devm_ allocated data

# https://github.com/0day-ci/linux/commit/d7855ea60367262eb4f8252da00de63a0b546234
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout d7855ea60367262eb4f8252da00de63a0b546234
vim +447 drivers/i2c/busses/i2c-imc.c

d7855ea6036726 Stefan Schaeckeler 2020-02-23  382
d7855ea6036726 Stefan Schaeckeler 2020-02-23  383  static int imc_probe(struct pci_dev *dev, const struct pci_device_id *id)
d7855ea6036726 Stefan Schaeckeler 2020-02-23  384  {
d7855ea6036726 Stefan Schaeckeler 2020-02-23  385  	int i, j, err;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  386  	struct imc_priv *priv;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  387  	struct pci_dev *sad;  /* System Address Decoder */
d7855ea6036726 Stefan Schaeckeler 2020-02-23  388  	u32 sadcntl;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  389
d7855ea6036726 Stefan Schaeckeler 2020-02-23  390  	/* Sanity check. This device is always at 0x13.0 */
d7855ea6036726 Stefan Schaeckeler 2020-02-23  391  	if (dev->devfn != PCI_DEVFN(0x13, 0))
d7855ea6036726 Stefan Schaeckeler 2020-02-23  392  		return -ENODEV;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  393
d7855ea6036726 Stefan Schaeckeler 2020-02-23  394  	priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  395  	if (!priv)
d7855ea6036726 Stefan Schaeckeler 2020-02-23  396  		return -ENOMEM;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  397  	priv->pci_dev = dev;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  398  	pci_set_drvdata(dev, priv);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  399
d7855ea6036726 Stefan Schaeckeler 2020-02-23  400  	/*
d7855ea6036726 Stefan Schaeckeler 2020-02-23  401  	 * From sad, we learn the local node id of the socket.
d7855ea6036726 Stefan Schaeckeler 2020-02-23  402  	 *
d7855ea6036726 Stefan Schaeckeler 2020-02-23  403  	 * The socket will not change at runtime and so we throw away sad.
d7855ea6036726 Stefan Schaeckeler 2020-02-23  404  	 */
d7855ea6036726 Stefan Schaeckeler 2020-02-23  405  	sad = imc_get_related_device(dev->bus, PCI_DEVFN(0x0f, 5),
d7855ea6036726 Stefan Schaeckeler 2020-02-23  406  				     PCI_DEVICE_ID_INTEL_BROADWELL_IMC_SAD);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  407  	if (!sad) {
d7855ea6036726 Stefan Schaeckeler 2020-02-23  408  		err = -ENODEV;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  409  		goto probe_out_free;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  410  	}
d7855ea6036726 Stefan Schaeckeler 2020-02-23  411  	pci_read_config_dword(sad, SADCNTL, &sadcntl);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  412  	pci_dev_put(sad);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  413
d7855ea6036726 Stefan Schaeckeler 2020-02-23  414  	/*
d7855ea6036726 Stefan Schaeckeler 2020-02-23  415  	 * From pcu, we access the CLTT polling interval.
d7855ea6036726 Stefan Schaeckeler 2020-02-23  416  	 *
d7855ea6036726 Stefan Schaeckeler 2020-02-23  417  	 * The polling interval is set by BIOS. We assume it will not change at
d7855ea6036726 Stefan Schaeckeler 2020-02-23  418  	 * runtime and cache the initial value.
d7855ea6036726 Stefan Schaeckeler 2020-02-23  419  	 */
d7855ea6036726 Stefan Schaeckeler 2020-02-23  420  	priv->pcu.pci_dev = imc_get_related_device(dev->bus, PCI_DEVFN(0x1e, 1),
d7855ea6036726 Stefan Schaeckeler 2020-02-23  421  					 PCI_DEVICE_ID_INTEL_BROADWELL_IMC_PCU);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  422  	if (!priv->pcu.pci_dev) {
d7855ea6036726 Stefan Schaeckeler 2020-02-23  423  		err = -ENODEV;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  424  		goto probe_out_free;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  425  	}
d7855ea6036726 Stefan Schaeckeler 2020-02-23  426  	pci_read_config_dword(priv->pcu.pci_dev, TSODCNTL,
d7855ea6036726 Stefan Schaeckeler 2020-02-23  427  			      &priv->pcu.tsod_polling_interval);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  428
d7855ea6036726 Stefan Schaeckeler 2020-02-23  429  	mutex_init(&priv->pcu.mutex);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  430
d7855ea6036726 Stefan Schaeckeler 2020-02-23  431  	for (i = 0; i < 2; i++) {
d7855ea6036726 Stefan Schaeckeler 2020-02-23  432  		err = imc_init_channelpair(priv, i,
d7855ea6036726 Stefan Schaeckeler 2020-02-23  433  					   sadcntl & SADCNTL_LOCAL_NODEID_MASK);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  434  		if (err)
d7855ea6036726 Stefan Schaeckeler 2020-02-23  435  			goto probe_out_free_channelpair;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  436  	}
d7855ea6036726 Stefan Schaeckeler 2020-02-23  437
d7855ea6036726 Stefan Schaeckeler 2020-02-23  438  	return 0;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  439
d7855ea6036726 Stefan Schaeckeler 2020-02-23  440  probe_out_free_channelpair:
d7855ea6036726 Stefan Schaeckeler 2020-02-23  441  	for (j = 0; j < i; j++)
d7855ea6036726 Stefan Schaeckeler 2020-02-23  442  		imc_free_channelpair(priv, j);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  443
d7855ea6036726 Stefan Schaeckeler 2020-02-23  444  	mutex_destroy(&priv->pcu.mutex);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  445
d7855ea6036726 Stefan Schaeckeler 2020-02-23  446  probe_out_free:
d7855ea6036726 Stefan Schaeckeler 2020-02-23 @447  	kfree(priv);
d7855ea6036726 Stefan Schaeckeler 2020-02-23  448  	return err;
d7855ea6036726 Stefan Schaeckeler 2020-02-23  449  }
d7855ea6036726 Stefan Schaeckeler 2020-02-23  450

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



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux