All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] ahci: qoriq: fixed using uninitialized variable warnings
@ 2015-09-10  7:13 ` Yuantian.Tang
  0 siblings, 0 replies; 4+ messages in thread
From: Yuantian.Tang @ 2015-09-10  7:13 UTC (permalink / raw)
  To: hdegoede; +Cc: tj, linux-ide, linux-kernel, Tang Yuantian

From: Tang Yuantian <Yuantian.Tang@freescale.com>

kbuild test robot reports the warnings:
drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
>> include/asm-generic/io.h:163:2: warning: 'px_is' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:14: note: 'px_is' was declared here
>> include/asm-generic/io.h:163:2: warning: 'px_cmd' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:6: note: 'px_cmd' was declared here

This patch fixed it by making type as a local variable.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
---
v2:
	- try another way to fix the warnings
	- remove clean up code

 drivers/ata/ahci_qoriq.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
index e5e4988..0d06e76 100644
--- a/drivers/ata/ahci_qoriq.c
+++ b/drivers/ata/ahci_qoriq.c
@@ -48,9 +48,9 @@ enum ahci_qoriq_type {
 	AHCI_LS2085A,
 };
 
+enum ahci_qoriq_type type;
 struct ahci_qoriq_priv {
 	struct ccsr_ahci *reg_base;
-	enum ahci_qoriq_type type;
 	void __iomem *ecc_addr;
 };
 
@@ -71,7 +71,6 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 	struct ata_port *ap = link->ap;
 	struct ahci_port_priv *pp = ap->private_data;
 	struct ahci_host_priv *hpriv = ap->host->private_data;
-	struct ahci_qoriq_priv *qoriq_priv = hpriv->plat_data;
 	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
 	struct ata_taskfile tf;
 	bool online;
@@ -92,7 +91,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 	 * After the sequence is complete, software should restore the
 	 * PxCMD and PxIS with the stored values.
 	 */
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		px_cmd = readl(port_mmio + PORT_CMD);
 		px_is = readl(port_mmio + PORT_IRQ_STAT);
 	}
@@ -106,7 +105,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 				 ahci_check_ready);
 
 	/* restore the PxCMD and PxIS on ls1021 */
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		px_val = readl(port_mmio + PORT_CMD);
 		if (px_val != px_cmd)
 			writel(px_cmd, port_mmio + PORT_CMD);
@@ -146,7 +145,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
 	struct ahci_qoriq_priv *qpriv = hpriv->plat_data;
 	void __iomem *reg_base = hpriv->mmio;
 
-	switch (qpriv->type) {
+	switch (type) {
 	case AHCI_LS1021A:
 		writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
 		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
@@ -188,9 +187,9 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
 	if (!qoriq_priv)
 		return -ENOMEM;
 
-	qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;
+	type = (enum ahci_qoriq_type)of_id->data;
 
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 				"sata-ecc");
 		qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res);
-- 
2.1.0.27.g96db324


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2] ahci: qoriq: fixed using uninitialized variable warnings
@ 2015-09-10  7:13 ` Yuantian.Tang
  0 siblings, 0 replies; 4+ messages in thread
From: Yuantian.Tang @ 2015-09-10  7:13 UTC (permalink / raw)
  To: hdegoede; +Cc: tj, linux-ide, linux-kernel, Tang Yuantian

From: Tang Yuantian <Yuantian.Tang@freescale.com>

kbuild test robot reports the warnings:
drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
>> include/asm-generic/io.h:163:2: warning: 'px_is' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:14: note: 'px_is' was declared here
>> include/asm-generic/io.h:163:2: warning: 'px_cmd' may be used
>> uninitialized in this function [-Wuninitialized]
drivers/ata/ahci_qoriq.c:70:6: note: 'px_cmd' was declared here

This patch fixed it by making type as a local variable.

Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
---
v2:
	- try another way to fix the warnings
	- remove clean up code

 drivers/ata/ahci_qoriq.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
index e5e4988..0d06e76 100644
--- a/drivers/ata/ahci_qoriq.c
+++ b/drivers/ata/ahci_qoriq.c
@@ -48,9 +48,9 @@ enum ahci_qoriq_type {
 	AHCI_LS2085A,
 };
 
+enum ahci_qoriq_type type;
 struct ahci_qoriq_priv {
 	struct ccsr_ahci *reg_base;
-	enum ahci_qoriq_type type;
 	void __iomem *ecc_addr;
 };
 
@@ -71,7 +71,6 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 	struct ata_port *ap = link->ap;
 	struct ahci_port_priv *pp = ap->private_data;
 	struct ahci_host_priv *hpriv = ap->host->private_data;
-	struct ahci_qoriq_priv *qoriq_priv = hpriv->plat_data;
 	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
 	struct ata_taskfile tf;
 	bool online;
@@ -92,7 +91,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 	 * After the sequence is complete, software should restore the
 	 * PxCMD and PxIS with the stored values.
 	 */
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		px_cmd = readl(port_mmio + PORT_CMD);
 		px_is = readl(port_mmio + PORT_IRQ_STAT);
 	}
@@ -106,7 +105,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
 				 ahci_check_ready);
 
 	/* restore the PxCMD and PxIS on ls1021 */
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		px_val = readl(port_mmio + PORT_CMD);
 		if (px_val != px_cmd)
 			writel(px_cmd, port_mmio + PORT_CMD);
@@ -146,7 +145,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
 	struct ahci_qoriq_priv *qpriv = hpriv->plat_data;
 	void __iomem *reg_base = hpriv->mmio;
 
-	switch (qpriv->type) {
+	switch (type) {
 	case AHCI_LS1021A:
 		writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
 		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
@@ -188,9 +187,9 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
 	if (!qoriq_priv)
 		return -ENOMEM;
 
-	qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;
+	type = (enum ahci_qoriq_type)of_id->data;
 
-	if (qoriq_priv->type == AHCI_LS1021A) {
+	if (type == AHCI_LS1021A) {
 		res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 				"sata-ecc");
 		qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res);
-- 
2.1.0.27.g96db324


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] ahci: qoriq: fixed using uninitialized variable warnings
  2015-09-10  7:13 ` Yuantian.Tang
  (?)
@ 2015-09-10 14:22 ` Tejun Heo
  2015-09-11  3:31   ` Fengguang Wu
  -1 siblings, 1 reply; 4+ messages in thread
From: Tejun Heo @ 2015-09-10 14:22 UTC (permalink / raw)
  To: Yuantian.Tang; +Cc: hdegoede, linux-ide, linux-kernel, fengguang.wu

(cc'ing Fengguang, hi!)

Fengguang, this is about kbuild test robot warning titled
"drivers/ata/ahci_qoriq.c:70:6: warning: 'px_cmd' may be used
uninitialized in this function".  Yuantian can't reproduce the warning
and I'm wondering whether the below patch would make the warning go
away.  Which gcc was the build bot using?  Would it be possible to
verify that the following patch makes the warning go away?

Thanks.

On Thu, Sep 10, 2015 at 03:13:32PM +0800, Yuantian.Tang@freescale.com wrote:
> From: Tang Yuantian <Yuantian.Tang@freescale.com>
> 
> kbuild test robot reports the warnings:
> drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
> >> include/asm-generic/io.h:163:2: warning: 'px_is' may be used
> >> uninitialized in this function [-Wuninitialized]
> drivers/ata/ahci_qoriq.c:70:14: note: 'px_is' was declared here
> >> include/asm-generic/io.h:163:2: warning: 'px_cmd' may be used
> >> uninitialized in this function [-Wuninitialized]
> drivers/ata/ahci_qoriq.c:70:6: note: 'px_cmd' was declared here
> 
> This patch fixed it by making type as a local variable.
> 
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> ---
> v2:
> 	- try another way to fix the warnings
> 	- remove clean up code
> 
>  drivers/ata/ahci_qoriq.c | 13 ++++++-------
>  1 file changed, 6 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
> index e5e4988..0d06e76 100644
> --- a/drivers/ata/ahci_qoriq.c
> +++ b/drivers/ata/ahci_qoriq.c
> @@ -48,9 +48,9 @@ enum ahci_qoriq_type {
>  	AHCI_LS2085A,
>  };
>  
> +enum ahci_qoriq_type type;
>  struct ahci_qoriq_priv {
>  	struct ccsr_ahci *reg_base;
> -	enum ahci_qoriq_type type;
>  	void __iomem *ecc_addr;
>  };
>  
> @@ -71,7 +71,6 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
>  	struct ata_port *ap = link->ap;
>  	struct ahci_port_priv *pp = ap->private_data;
>  	struct ahci_host_priv *hpriv = ap->host->private_data;
> -	struct ahci_qoriq_priv *qoriq_priv = hpriv->plat_data;
>  	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
>  	struct ata_taskfile tf;
>  	bool online;
> @@ -92,7 +91,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
>  	 * After the sequence is complete, software should restore the
>  	 * PxCMD and PxIS with the stored values.
>  	 */
> -	if (qoriq_priv->type == AHCI_LS1021A) {
> +	if (type == AHCI_LS1021A) {
>  		px_cmd = readl(port_mmio + PORT_CMD);
>  		px_is = readl(port_mmio + PORT_IRQ_STAT);
>  	}
> @@ -106,7 +105,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
>  				 ahci_check_ready);
>  
>  	/* restore the PxCMD and PxIS on ls1021 */
> -	if (qoriq_priv->type == AHCI_LS1021A) {
> +	if (type == AHCI_LS1021A) {
>  		px_val = readl(port_mmio + PORT_CMD);
>  		if (px_val != px_cmd)
>  			writel(px_cmd, port_mmio + PORT_CMD);
> @@ -146,7 +145,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
>  	struct ahci_qoriq_priv *qpriv = hpriv->plat_data;
>  	void __iomem *reg_base = hpriv->mmio;
>  
> -	switch (qpriv->type) {
> +	switch (type) {
>  	case AHCI_LS1021A:
>  		writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
>  		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
> @@ -188,9 +187,9 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
>  	if (!qoriq_priv)
>  		return -ENOMEM;
>  
> -	qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;
> +	type = (enum ahci_qoriq_type)of_id->data;
>  
> -	if (qoriq_priv->type == AHCI_LS1021A) {
> +	if (type == AHCI_LS1021A) {
>  		res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
>  				"sata-ecc");
>  		qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res);
> -- 
> 2.1.0.27.g96db324
> 

-- 
tejun

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] ahci: qoriq: fixed using uninitialized variable warnings
  2015-09-10 14:22 ` Tejun Heo
@ 2015-09-11  3:31   ` Fengguang Wu
  0 siblings, 0 replies; 4+ messages in thread
From: Fengguang Wu @ 2015-09-11  3:31 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Yuantian.Tang, hdegoede, linux-ide, linux-kernel

Hi Tejun, Yuantian,

On Thu, Sep 10, 2015 at 10:22:14AM -0400, Tejun Heo wrote:
> (cc'ing Fengguang, hi!)
> 
> Fengguang, this is about kbuild test robot warning titled
> "drivers/ata/ahci_qoriq.c:70:6: warning: 'px_cmd' may be used
> uninitialized in this function".  Yuantian can't reproduce the warning
> and I'm wondering whether the below patch would make the warning go
> away.  Which gcc was the build bot using?

It's gcc-4.5.1-or32-1.0rc1. The reproduce steps are:

  wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
  chmod +x ~/bin/make.cross
  git checkout ecfb4598512a7c3e21df2941db58c10461583bb9

# this command will auto download/install openrisc cross compiler

  make.cross ARCH=openrisc allyesconfig
  make.cross ARCH=openrisc drivers/ata/ahci_qoriq.o

> Would it be possible to
> verify that the following patch makes the warning go away?

With the patch applied, the warnings are still there:

wfg@inn ~/linux/obj-compiletest% make ARCH=openrisc drivers/ata/ahci_qoriq.o
/usr/bin/make -C source O=/home/wfg/linux/obj-compiletest ARCH=openrisc CROSS_COMPILE=/usr/local/gcc-4.5.1-nolibc/or32-linux/bin/or32-linux- -j32 ARCH=openrisc drivers/
ata/ahci_qoriq.o                                                                                                                                                        make: Entering directory '/c/wfg/linux'
make[1]: Entering directory '/c/wfg/linux/obj-compiletest'
  CHK     include/config/kernel.release
  GEN     ./Makefile
  CHK     include/generated/uapi/linux/version.h
  UPD     include/config/kernel.release
  Using .. as source for kernel
  CHK     include/generated/utsrelease.h
  UPD     include/generated/utsrelease.h
  CHK     include/generated/timeconst.h
  CHK     include/generated/bounds.h
  CHK     include/generated/asm-offsets.h
  CALL    ../scripts/checksyscalls.sh
<stdin>:1298:2: warning: #warning syscall userfaultfd not implemented
  CC      drivers/ata/ahci_qoriq.o
../drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
../drivers/ata/ahci_qoriq.c:70:6: warning: 'px_cmd' may be used uninitialized in this function
../drivers/ata/ahci_qoriq.c:70:14: warning: 'px_is' may be used uninitialized in this function
make[1]: Leaving directory '/c/wfg/linux/obj-compiletest'
make: Leaving directory '/c/wfg/linux'

Thanks,
Fengguang

> On Thu, Sep 10, 2015 at 03:13:32PM +0800, Yuantian.Tang@freescale.com wrote:
> > From: Tang Yuantian <Yuantian.Tang@freescale.com>
> > 
> > kbuild test robot reports the warnings:
> > drivers/ata/ahci_qoriq.c: In function 'ahci_qoriq_hardreset':
> > >> include/asm-generic/io.h:163:2: warning: 'px_is' may be used
> > >> uninitialized in this function [-Wuninitialized]
> > drivers/ata/ahci_qoriq.c:70:14: note: 'px_is' was declared here
> > >> include/asm-generic/io.h:163:2: warning: 'px_cmd' may be used
> > >> uninitialized in this function [-Wuninitialized]
> > drivers/ata/ahci_qoriq.c:70:6: note: 'px_cmd' was declared here
> > 
> > This patch fixed it by making type as a local variable.
> > 
> > Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> > ---
> > v2:
> > 	- try another way to fix the warnings
> > 	- remove clean up code
> > 
> >  drivers/ata/ahci_qoriq.c | 13 ++++++-------
> >  1 file changed, 6 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
> > index e5e4988..0d06e76 100644
> > --- a/drivers/ata/ahci_qoriq.c
> > +++ b/drivers/ata/ahci_qoriq.c
> > @@ -48,9 +48,9 @@ enum ahci_qoriq_type {
> >  	AHCI_LS2085A,
> >  };
> >  
> > +enum ahci_qoriq_type type;
> >  struct ahci_qoriq_priv {
> >  	struct ccsr_ahci *reg_base;
> > -	enum ahci_qoriq_type type;
> >  	void __iomem *ecc_addr;
> >  };
> >  
> > @@ -71,7 +71,6 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
> >  	struct ata_port *ap = link->ap;
> >  	struct ahci_port_priv *pp = ap->private_data;
> >  	struct ahci_host_priv *hpriv = ap->host->private_data;
> > -	struct ahci_qoriq_priv *qoriq_priv = hpriv->plat_data;
> >  	u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG;
> >  	struct ata_taskfile tf;
> >  	bool online;
> > @@ -92,7 +91,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
> >  	 * After the sequence is complete, software should restore the
> >  	 * PxCMD and PxIS with the stored values.
> >  	 */
> > -	if (qoriq_priv->type == AHCI_LS1021A) {
> > +	if (type == AHCI_LS1021A) {
> >  		px_cmd = readl(port_mmio + PORT_CMD);
> >  		px_is = readl(port_mmio + PORT_IRQ_STAT);
> >  	}
> > @@ -106,7 +105,7 @@ static int ahci_qoriq_hardreset(struct ata_link *link, unsigned int *class,
> >  				 ahci_check_ready);
> >  
> >  	/* restore the PxCMD and PxIS on ls1021 */
> > -	if (qoriq_priv->type == AHCI_LS1021A) {
> > +	if (type == AHCI_LS1021A) {
> >  		px_val = readl(port_mmio + PORT_CMD);
> >  		if (px_val != px_cmd)
> >  			writel(px_cmd, port_mmio + PORT_CMD);
> > @@ -146,7 +145,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
> >  	struct ahci_qoriq_priv *qpriv = hpriv->plat_data;
> >  	void __iomem *reg_base = hpriv->mmio;
> >  
> > -	switch (qpriv->type) {
> > +	switch (type) {
> >  	case AHCI_LS1021A:
> >  		writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
> >  		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
> > @@ -188,9 +187,9 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
> >  	if (!qoriq_priv)
> >  		return -ENOMEM;
> >  
> > -	qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;
> > +	type = (enum ahci_qoriq_type)of_id->data;
> >  
> > -	if (qoriq_priv->type == AHCI_LS1021A) {
> > +	if (type == AHCI_LS1021A) {
> >  		res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
> >  				"sata-ecc");
> >  		qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res);
> > -- 
> > 2.1.0.27.g96db324
> > 
> 
> -- 
> tejun
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-09-11  3:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-10  7:13 [PATCH v2] ahci: qoriq: fixed using uninitialized variable warnings Yuantian.Tang
2015-09-10  7:13 ` Yuantian.Tang
2015-09-10 14:22 ` Tejun Heo
2015-09-11  3:31   ` Fengguang Wu

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.