diff mbox

[v1,1/1] PCI / PM: enforce type casting for pci_power_t

Message ID 1465321713-146178-1-git-send-email-andriy.shevchenko@linux.intel.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Andy Shevchenko June 7, 2016, 5:48 p.m. UTC
When cast pci_power_t type of variables a static analizer tool complains on
that.

	include/linux/pci.h:119:37: warning: cast from restricted pci_power_t

Enforce type casting to make static analizer happy.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/linux/pci.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Rafael J. Wysocki June 8, 2016, 12:16 a.m. UTC | #1
On Tuesday, June 07, 2016 08:48:33 PM Andy Shevchenko wrote:
> When cast pci_power_t type of variables a static analizer tool complains on
> that.
> 
> 	include/linux/pci.h:119:37: warning: cast from restricted pci_power_t
> 
> Enforce type casting to make static analizer happy.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

ACK

> ---
>  include/linux/pci.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index b67e4df..8d74834 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -116,7 +116,7 @@ extern const char *pci_power_names[];
>  
>  static inline const char *pci_power_name(pci_power_t state)
>  {
> -	return pci_power_names[1 + (int) state];
> +	return pci_power_names[1 + (__force int) state];
>  }
>  
>  #define PCI_PM_D2_DELAY		200
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Helgaas June 11, 2016, 12:19 a.m. UTC | #2
On Tue, Jun 07, 2016 at 08:48:33PM +0300, Andy Shevchenko wrote:
> When cast pci_power_t type of variables a static analizer tool complains on
> that.
> 
> 	include/linux/pci.h:119:37: warning: cast from restricted pci_power_t
> 
> Enforce type casting to make static analizer happy.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Applied to pci/pm for v4.8, thanks, Andy.

> ---
>  include/linux/pci.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index b67e4df..8d74834 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -116,7 +116,7 @@ extern const char *pci_power_names[];
>  
>  static inline const char *pci_power_name(pci_power_t state)
>  {
> -	return pci_power_names[1 + (int) state];
> +	return pci_power_names[1 + (__force int) state];
>  }
>  
>  #define PCI_PM_D2_DELAY		200
> -- 
> 2.8.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andy Shevchenko June 13, 2016, 11:40 a.m. UTC | #3
On Fri, 2016-06-10 at 19:19 -0500, Bjorn Helgaas wrote:
> On Tue, Jun 07, 2016 at 08:48:33PM +0300, Andy Shevchenko wrote:
> > When cast pci_power_t type of variables a static analizer tool
> > complains on
> > that.
> > 
> > 	include/linux/pci.h:119:37: warning: cast from restricted
> > pci_power_t
> > 
> > Enforce type casting to make static analizer happy.
> > 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> Applied to pci/pm for v4.8, thanks, Andy.

Thanks.

By the way, what was the main point to use __bitwise annotation to this
type in the first place?

> 
> > ---
> >  include/linux/pci.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > index b67e4df..8d74834 100644
> > --- a/include/linux/pci.h
> > +++ b/include/linux/pci.h
> > @@ -116,7 +116,7 @@ extern const char *pci_power_names[];
> >  
> >  static inline const char *pci_power_name(pci_power_t state)
> >  {
> > -	return pci_power_names[1 + (int) state];
> > +	return pci_power_names[1 + (__force int) state];
> >  }
> >  
> >  #define PCI_PM_D2_DELAY		200
> > -- 
> > 2.8.1
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-pci" 
> > in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Helgaas June 13, 2016, 1:13 p.m. UTC | #4
On Mon, Jun 13, 2016 at 02:40:54PM +0300, Andy Shevchenko wrote:
> On Fri, 2016-06-10 at 19:19 -0500, Bjorn Helgaas wrote:
> > On Tue, Jun 07, 2016 at 08:48:33PM +0300, Andy Shevchenko wrote:
> > > When cast pci_power_t type of variables a static analizer tool
> > > complains on
> > > that.
> > > 
> > > 	include/linux/pci.h:119:37: warning: cast from restricted
> > > pci_power_t
> > > 
> > > Enforce type casting to make static analizer happy.
> > > 
> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > 
> > Applied to pci/pm for v4.8, thanks, Andy.
> 
> Thanks.
> 
> By the way, what was the main point to use __bitwise annotation to this
> type in the first place?

I don't know.  It looks like pci_power_t was the first use of __bitwise in
pci.h, added by e8191db240d2 ("[PATCH] PCI: Cleanup PCI power states").
That changelog mentions type-safety, but I must admit that doesn't make it
obvious to me.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andy Shevchenko June 13, 2016, 1:19 p.m. UTC | #5
On Mon, 2016-06-13 at 08:13 -0500, Bjorn Helgaas wrote:
> On Mon, Jun 13, 2016 at 02:40:54PM +0300, Andy Shevchenko wrote:
> > On Fri, 2016-06-10 at 19:19 -0500, Bjorn Helgaas wrote:
> > > On Tue, Jun 07, 2016 at 08:48:33PM +0300, Andy Shevchenko wrote:
> > > > When cast pci_power_t type of variables a static analizer tool
> > > > complains on
> > > > that.
> > > > 
> > > > 	include/linux/pci.h:119:37: warning: cast from
> > > > restricted
> > > > pci_power_t
> > > > 
> > > > Enforce type casting to make static analizer happy.
> > > > 
> > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.co
> > > > m>
> > > 
> > > Applied to pci/pm for v4.8, thanks, Andy.
> > 
> > Thanks.
> > 
> > By the way, what was the main point to use __bitwise annotation to
> > this
> > type in the first place?
> 
> I don't know.  It looks like pci_power_t was the first use of
> __bitwise in
> pci.h, added by e8191db240d2 ("[PATCH] PCI: Cleanup PCI power
> states").
> That changelog mentions type-safety, but I must admit that doesn't
> make it
> obvious to me.

I'm asking since any code which is using this type (all direct
assignments or comparisons) brings a static analyzer complain.
You may check by yourself with (my usual command to build kernel)

% make C=1 CF=-D__CHECK_ENDIAN__ W=1 -j64

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/linux/pci.h b/include/linux/pci.h
index b67e4df..8d74834 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -116,7 +116,7 @@  extern const char *pci_power_names[];
 
 static inline const char *pci_power_name(pci_power_t state)
 {
-	return pci_power_names[1 + (int) state];
+	return pci_power_names[1 + (__force int) state];
 }
 
 #define PCI_PM_D2_DELAY		200