2017-07-15 20:34:47

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 00/11] Drop unnecessary static

These patches fix cases where there is a static on a local variable, but
the variable is initialized before any possible use. Thus, the static has
no benefit.

---

drivers/ata/sata_gemini.c | 2 +-
drivers/clk/clk-moxart.c | 4 ++--
drivers/clk/mmp/clk.c | 2 +-
drivers/iio/orientation/hid-sensor-rotation.c | 2 +-
drivers/irqchip/irq-digicolor.c | 2 +-
drivers/irqchip/irq-gic-realview.c | 2 +-
drivers/irqchip/irq-mips-cpu.c | 2 +-
drivers/mfd/max8925-i2c.c | 2 +-
drivers/mfd/twl4030-irq.c | 2 +-
drivers/mtd/maps/physmap_of_versatile.c | 2 +-
drivers/video/fbdev/da8xx-fb.c | 2 +-
11 files changed, 12 insertions(+), 12 deletions(-)


2017-07-15 20:32:50

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 02/11] clk: moxart: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/clk/clk-moxart.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff -u -p a/drivers/clk/clk-moxart.c b/drivers/clk/clk-moxart.c
--- a/drivers/clk/clk-moxart.c
+++ b/drivers/clk/clk-moxart.c
@@ -18,7 +18,7 @@

static void __init moxart_of_pll_clk_init(struct device_node *node)
{
- static void __iomem *base;
+ void __iomem *base;
struct clk_hw *hw;
struct clk *ref_clk;
unsigned int mul;
@@ -57,7 +57,7 @@ CLK_OF_DECLARE(moxart_pll_clock, "moxa,m

static void __init moxart_of_apb_clk_init(struct device_node *node)
{
- static void __iomem *base;
+ void __iomem *base;
struct clk_hw *hw;
struct clk *pll_clk;
unsigned int div, val;

2017-07-15 20:32:58

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 07/11] mfd: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/mfd/twl4030-irq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
--- a/drivers/mfd/twl4030-irq.c
+++ b/drivers/mfd/twl4030-irq.c
@@ -685,7 +685,7 @@ int twl4030_sih_setup(struct device *dev

int twl4030_init_irq(struct device *dev, int irq_num)
{
- static struct irq_chip twl4030_irq_chip;
+ struct irq_chip twl4030_irq_chip;
int status, i;
int irq_base, irq_end, nr_irqs;
struct device_node *node = dev->of_node;

2017-07-15 20:32:57

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 11/11] mfd: max8925-i2c: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/mfd/max8925-i2c.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c
--- a/drivers/mfd/max8925-i2c.c
+++ b/drivers/mfd/max8925-i2c.c
@@ -151,7 +151,7 @@ static int max8925_probe(struct i2c_clie
const struct i2c_device_id *id)
{
struct max8925_platform_data *pdata = dev_get_platdata(&client->dev);
- static struct max8925_chip *chip;
+ struct max8925_chip *chip;
struct device_node *node = client->dev.of_node;

if (node && !pdata) {

2017-07-15 20:32:56

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 09/11] iio: orientation: hid-sensor-rotation: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/iio/orientation/hid-sensor-rotation.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c
--- a/drivers/iio/orientation/hid-sensor-rotation.c
+++ b/drivers/iio/orientation/hid-sensor-rotation.c
@@ -238,7 +238,7 @@ static int dev_rot_parse_report(struct p
static int hid_dev_rot_probe(struct platform_device *pdev)
{
int ret;
- static char *name;
+ char *name;
struct iio_dev *indio_dev;
struct dev_rot_state *rot_state;
struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;

2017-07-15 20:32:55

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 10/11] irqchip: digicolor: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/irqchip/irq-digicolor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/irqchip/irq-digicolor.c b/drivers/irqchip/irq-digicolor.c
--- a/drivers/irqchip/irq-digicolor.c
+++ b/drivers/irqchip/irq-digicolor.c
@@ -71,7 +71,7 @@ static void __init digicolor_set_gc(void
static int __init digicolor_of_init(struct device_node *node,
struct device_node *parent)
{
- static void __iomem *reg_base;
+ void __iomem *reg_base;
unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
struct regmap *ucregs;
int ret;

2017-07-15 20:32:54

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 08/11] ata: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/ata/sata_gemini.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/ata/sata_gemini.c b/drivers/ata/sata_gemini.c
--- a/drivers/ata/sata_gemini.c
+++ b/drivers/ata/sata_gemini.c
@@ -305,7 +305,7 @@ static int gemini_sata_probe(struct plat
struct device *dev = &pdev->dev;
struct device_node *np = dev->of_node;
struct sata_gemini *sg;
- static struct regmap *map;
+ struct regmap *map;
struct resource *res;
enum gemini_muxmode muxmode;
u32 gmode;

2017-07-15 20:34:12

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 06/11] irqchip: mips-cpu: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/irqchip/irq-mips-cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
--- a/drivers/irqchip/irq-mips-cpu.c
+++ b/drivers/irqchip/irq-mips-cpu.c
@@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch
static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hw)
{
- static struct irq_chip *chip;
+ struct irq_chip *chip;

if (hw < 2 && cpu_has_mipsmt) {
/* Software interrupts are used for MT/CMT IPI */

2017-07-15 20:34:29

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 05/11] irqchip/gic/realview: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/irqchip/irq-gic-realview.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/irqchip/irq-gic-realview.c b/drivers/irqchip/irq-gic-realview.c
--- a/drivers/irqchip/irq-gic-realview.c
+++ b/drivers/irqchip/irq-gic-realview.c
@@ -43,7 +43,7 @@ static const struct of_device_id syscon_
static int __init
realview_gic_of_init(struct device_node *node, struct device_node *parent)
{
- static struct regmap *map;
+ struct regmap *map;
struct device_node *np;
const struct of_device_id *gic_id;
u32 pld1_ctrl;

2017-07-15 20:32:49

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 01/11] clk: mmp: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/clk/mmp/clk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/clk/mmp/clk.c b/drivers/clk/mmp/clk.c
--- a/drivers/clk/mmp/clk.c
+++ b/drivers/clk/mmp/clk.c
@@ -9,7 +9,7 @@
void mmp_clk_init(struct device_node *np, struct mmp_clk_unit *unit,
int nr_clks)
{
- static struct clk **clk_table;
+ struct clk **clk_table;

clk_table = kcalloc(nr_clks, sizeof(struct clk *), GFP_KERNEL);
if (!clk_table)

2017-07-15 20:35:12

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 04/11] fbdev: da8xx-fb: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/video/fbdev/da8xx-fb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/video/fbdev/da8xx-fb.c b/drivers/video/fbdev/da8xx-fb.c
--- a/drivers/video/fbdev/da8xx-fb.c
+++ b/drivers/video/fbdev/da8xx-fb.c
@@ -1341,7 +1341,7 @@ static int fb_probe(struct platform_devi
{
struct da8xx_lcdc_platform_data *fb_pdata =
dev_get_platdata(&device->dev);
- static struct resource *lcdc_regs;
+ struct resource *lcdc_regs;
struct lcd_ctrl_config *lcd_cfg;
struct fb_videomode *lcdc_info;
struct fb_info *da8xx_fb_info;

2017-07-15 20:35:30

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 03/11] mtd: physmap_of: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
These patches are all independent of each other.

drivers/mtd/maps/physmap_of_versatile.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff -u -p a/drivers/mtd/maps/physmap_of_versatile.c b/drivers/mtd/maps/physmap_of_versatile.c
--- a/drivers/mtd/maps/physmap_of_versatile.c
+++ b/drivers/mtd/maps/physmap_of_versatile.c
@@ -97,7 +97,7 @@ static const struct of_device_id ebi_mat
static int ap_flash_init(struct platform_device *pdev)
{
struct device_node *ebi;
- static void __iomem *ebi_base;
+ void __iomem *ebi_base;
u32 val;
int ret;


2017-07-15 20:38:06

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH 00/11] Drop unnecessary static

On Sat, 2017-07-15 at 22:07 +0200, Julia Lawall wrote:
> These patches fix cases where there is a static on a local variable, but
> the variable is initialized before any possible use. Thus, the static has
> no benefit.

Nice one.

2017-07-15 20:50:00

by Mark D Rustad

[permalink] [raw]
Subject: Re: [PATCH 07/11] mfd: Drop unnecessary static

> On Jul 15, 2017, at 1:07 PM, Julia Lawall <[email protected]> wrote:
>
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.

I think in this case the use relies on the structure continuing to exist, so a stack object is not an acceptable substitute. Just because it is initialized doesn't mean that it doesn't need a persistent lifetime.

> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.
>
> drivers/mfd/twl4030-irq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
> --- a/drivers/mfd/twl4030-irq.c
> +++ b/drivers/mfd/twl4030-irq.c
> @@ -685,7 +685,7 @@ int twl4030_sih_setup(struct device *dev
>
> int twl4030_init_irq(struct device *dev, int irq_num)
> {
> - static struct irq_chip twl4030_irq_chip;
> + struct irq_chip twl4030_irq_chip;
> int status, i;
> int irq_base, irq_end, nr_irqs;
> struct device_node *node = dev->of_node;

--
Mark Rustad, [email protected]


Attachments:
signature.asc (841.00 B)
Message signed with OpenPGP

2017-07-15 20:52:53

by Mark D Rustad

[permalink] [raw]
Subject: Re: [PATCH 06/11] irqchip: mips-cpu: Drop unnecessary static


> On Jul 15, 2017, at 1:07 PM, Julia Lawall <[email protected]> wrote:
>
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.

I think this is in error like the other one. I believe that the irq_chip structure needs a persistent lifetime.

> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.
>
> drivers/irqchip/irq-mips-cpu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
> --- a/drivers/irqchip/irq-mips-cpu.c
> +++ b/drivers/irqchip/irq-mips-cpu.c
> @@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch
> static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
> irq_hw_number_t hw)
> {
> - static struct irq_chip *chip;
> + struct irq_chip *chip;
>
> if (hw < 2 && cpu_has_mipsmt) {
> /* Software interrupts are used for MT/CMT IPI */
>

--
Mark Rustad, [email protected]


Attachments:
signature.asc (841.00 B)
Message signed with OpenPGP

2017-07-15 20:56:05

by Julia Lawall

[permalink] [raw]
Subject: Re: [PATCH 07/11] mfd: Drop unnecessary static



On Sat, 15 Jul 2017, Mark D Rustad wrote:

> > On Jul 15, 2017, at 1:07 PM, Julia Lawall <[email protected]> wrote:
> >
> > Drop static on a local variable, when the variable is initialized before
> > any possible use. Thus, the static has no benefit.
>
> I think in this case the use relies on the structure continuing to exist, so a stack object is not an acceptable substitute. Just because it is initialized doesn't mean that it doesn't need a persistent lifetime.

OK, I see. Thanks for the feedback. I'll extend the rule to ensure that
the address of the variable is not taken. Ignore this patch in any case.

julia

>
> > The semantic patch that fixes this problem is as follows:
> > (http://coccinelle.lip6.fr/)
> >
> > // <smpl>
> > @bad exists@
> > position p;
> > identifier x;
> > type T;
> > @@
> > static T x@p;
> > ...
> > x = <+...x...+>
> >
> > @@
> > identifier x;
> > expression e;
> > type T;
> > position p != bad.p;
> > @@
> > -static
> > T x@p;
> > ... when != x
> > when strict
> > ?x = e;
> > // </smpl>
> >
> > Signed-off-by: Julia Lawall <[email protected]>
> >
> > ---
> > These patches are all independent of each other.
> >
> > drivers/mfd/twl4030-irq.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff -u -p a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
> > --- a/drivers/mfd/twl4030-irq.c
> > +++ b/drivers/mfd/twl4030-irq.c
> > @@ -685,7 +685,7 @@ int twl4030_sih_setup(struct device *dev
> >
> > int twl4030_init_irq(struct device *dev, int irq_num)
> > {
> > - static struct irq_chip twl4030_irq_chip;
> > + struct irq_chip twl4030_irq_chip;
> > int status, i;
> > int irq_base, irq_end, nr_irqs;
> > struct device_node *node = dev->of_node;
>
> --
> Mark Rustad, [email protected]
>
>

2017-07-15 20:59:39

by Julia Lawall

[permalink] [raw]
Subject: Re: [PATCH 06/11] irqchip: mips-cpu: Drop unnecessary static



On Sat, 15 Jul 2017, Mark D Rustad wrote:

>
> > On Jul 15, 2017, at 1:07 PM, Julia Lawall <[email protected]> wrote:
> >
> > Drop static on a local variable, when the variable is initialized before
> > any possible use. Thus, the static has no benefit.
>
> I think this is in error like the other one. I believe that the irq_chip structure needs a persistent lifetime.

I'm not following in this case. chip is a pointer to a structure, not a
structure. Its address is not taken. irq_set_chip_and_handler that uses
it below is a fnuction, so it just gets the value.

julia

>
> > The semantic patch that fixes this problem is as follows:
> > (http://coccinelle.lip6.fr/)
> >
> > // <smpl>
> > @bad exists@
> > position p;
> > identifier x;
> > type T;
> > @@
> > static T x@p;
> > ...
> > x = <+...x...+>
> >
> > @@
> > identifier x;
> > expression e;
> > type T;
> > position p != bad.p;
> > @@
> > -static
> > T x@p;
> > ... when != x
> > when strict
> > ?x = e;
> > // </smpl>
> >
> > Signed-off-by: Julia Lawall <[email protected]>
> >
> > ---
> > These patches are all independent of each other.
> >
> > drivers/irqchip/irq-mips-cpu.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff -u -p a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
> > --- a/drivers/irqchip/irq-mips-cpu.c
> > +++ b/drivers/irqchip/irq-mips-cpu.c
> > @@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch
> > static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
> > irq_hw_number_t hw)
> > {
> > - static struct irq_chip *chip;
> > + struct irq_chip *chip;
> >
> > if (hw < 2 && cpu_has_mipsmt) {
> > /* Software interrupts are used for MT/CMT IPI */
> >
>
> --
> Mark Rustad, [email protected]
>
>

2017-07-15 21:00:42

by Julia Lawall

[permalink] [raw]
Subject: Re: [PATCH 00/11] Drop unnecessary static



On Sat, 15 Jul 2017, Joe Perches wrote:

> On Sat, 2017-07-15 at 22:07 +0200, Julia Lawall wrote:
> > These patches fix cases where there is a static on a local variable, but
> > the variable is initialized before any possible use. Thus, the static has
> > no benefit.
>
> Nice one.

Thanks. It was suggested by Kees Cook a while ago. There seem to be many
opportunities.

julia

2017-07-16 04:49:32

by Baruch Siach

[permalink] [raw]
Subject: Re: [PATCH 10/11] irqchip: digicolor: Drop unnecessary static

Hi Julia,

On Sat, Jul 15, 2017 at 10:07:45PM +0200, Julia Lawall wrote:
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Acked-by: Baruch Siach <[email protected]>

Thanks,
baruch

> ---
> These patches are all independent of each other.
>
> drivers/irqchip/irq-digicolor.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/irqchip/irq-digicolor.c b/drivers/irqchip/irq-digicolor.c
> --- a/drivers/irqchip/irq-digicolor.c
> +++ b/drivers/irqchip/irq-digicolor.c
> @@ -71,7 +71,7 @@ static void __init digicolor_set_gc(void
> static int __init digicolor_of_init(struct device_node *node,
> struct device_node *parent)
> {
> - static void __iomem *reg_base;
> + void __iomem *reg_base;
> unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
> struct regmap *ucregs;
> int ret;
>

--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- [email protected] - tel: +972.52.368.4656, http://www.tkos.co.il -

2017-07-16 06:05:04

by Mark D Rustad

[permalink] [raw]
Subject: Re: [PATCH 06/11] irqchip: mips-cpu: Drop unnecessary static

> On Jul 15, 2017, at 1:59 PM, Julia Lawall <[email protected]> wrote:
>
> On Sat, 15 Jul 2017, Mark D Rustad wrote:
>
>>
>>> On Jul 15, 2017, at 1:07 PM, Julia Lawall <[email protected]> wrote:
>>>
>>> Drop static on a local variable, when the variable is initialized before
>>> any possible use. Thus, the static has no benefit.
>>
>> I think this is in error like the other one. I believe that the irq_chip structure needs a persistent lifetime.
>
> I'm not following in this case. chip is a pointer to a structure, not a
> structure. Its address is not taken. irq_set_chip_and_handler that uses
> it below is a fnuction, so it just gets the value.
>
> julia

Sorry. My mistake. I didn't look quite hard enough at this one.

>>
>>> The semantic patch that fixes this problem is as follows:
>>> (http://coccinelle.lip6.fr/)
>>>
>>> // <smpl>
>>> @bad exists@
>>> position p;
>>> identifier x;
>>> type T;
>>> @@
>>> static T x@p;
>>> ...
>>> x = <+...x...+>
>>>
>>> @@
>>> identifier x;
>>> expression e;
>>> type T;
>>> position p != bad.p;
>>> @@
>>> -static
>>> T x@p;
>>> ... when != x
>>> when strict
>>> ?x = e;
>>> // </smpl>
>>>
>>> Signed-off-by: Julia Lawall <[email protected]>
>>>
>>> ---
>>> These patches are all independent of each other.
>>>
>>> drivers/irqchip/irq-mips-cpu.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff -u -p a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
>>> --- a/drivers/irqchip/irq-mips-cpu.c
>>> +++ b/drivers/irqchip/irq-mips-cpu.c
>>> @@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch
>>> static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
>>> irq_hw_number_t hw)
>>> {
>>> - static struct irq_chip *chip;
>>> + struct irq_chip *chip;
>>>
>>> if (hw < 2 && cpu_has_mipsmt) {
>>> /* Software interrupts are used for MT/CMT IPI */
>>>
>>
>> --
>> Mark Rustad, [email protected]

--
Mark Rustad, [email protected]


Attachments:
signature.asc (841.00 B)
Message signed with OpenPGP

2017-07-17 19:58:27

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH 03/11] mtd: physmap_of: Drop unnecessary static

Le Sat, 15 Jul 2017 22:07:38 +0200,
Julia Lawall <[email protected]> a écrit :

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Acked-by: Boris Brezillon <[email protected]>

>
> ---
> These patches are all independent of each other.
>
> drivers/mtd/maps/physmap_of_versatile.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/mtd/maps/physmap_of_versatile.c b/drivers/mtd/maps/physmap_of_versatile.c
> --- a/drivers/mtd/maps/physmap_of_versatile.c
> +++ b/drivers/mtd/maps/physmap_of_versatile.c
> @@ -97,7 +97,7 @@ static const struct of_device_id ebi_mat
> static int ap_flash_init(struct platform_device *pdev)
> {
> struct device_node *ebi;
> - static void __iomem *ebi_base;
> + void __iomem *ebi_base;
> u32 val;
> int ret;
>
>

2017-07-17 20:45:40

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH 09/11] iio: orientation: hid-sensor-rotation: Drop unnecessary static

On Sat, 15 Jul 2017 22:07:44 +0200
Julia Lawall <[email protected]> wrote:

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
Applied to the togreg branch of iio.git and pushed out
as testing for the autobuilders to play with it.

Thanks,

Jonathan
>
> ---
> These patches are all independent of each other.
>
> drivers/iio/orientation/hid-sensor-rotation.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c
> --- a/drivers/iio/orientation/hid-sensor-rotation.c
> +++ b/drivers/iio/orientation/hid-sensor-rotation.c
> @@ -238,7 +238,7 @@ static int dev_rot_parse_report(struct p
> static int hid_dev_rot_probe(struct platform_device *pdev)
> {
> int ret;
> - static char *name;
> + char *name;
> struct iio_dev *indio_dev;
> struct dev_rot_state *rot_state;
> struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
>

2017-07-18 01:31:05

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 02/11] clk: moxart: Drop unnecessary static

On 07/15, Julia Lawall wrote:
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.

Already got this one a few days earlier.

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

2017-07-18 01:31:58

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 01/11] clk: mmp: Drop unnecessary static

On 07/15, Julia Lawall wrote:
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---

Applied to clk-next

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

2017-07-18 07:23:16

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH 11/11] mfd: max8925-i2c: Drop unnecessary static

On Sat, 15 Jul 2017, Julia Lawall wrote:

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.
>
> drivers/mfd/max8925-i2c.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Applied, thanks.

> diff -u -p a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c
> --- a/drivers/mfd/max8925-i2c.c
> +++ b/drivers/mfd/max8925-i2c.c
> @@ -151,7 +151,7 @@ static int max8925_probe(struct i2c_clie
> const struct i2c_device_id *id)
> {
> struct max8925_platform_data *pdata = dev_get_platdata(&client->dev);
> - static struct max8925_chip *chip;
> + struct max8925_chip *chip;
> struct device_node *node = client->dev.of_node;
>
> if (node && !pdata) {
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

Subject: [tip:irq/urgent] irqchip/gic/realview: Drop unnecessary static

Commit-ID: 512f9e790897e84d5b802436768508ee4628fc16
Gitweb: http://git.kernel.org/tip/512f9e790897e84d5b802436768508ee4628fc16
Author: Julia Lawall <[email protected]>
AuthorDate: Sat, 15 Jul 2017 22:07:40 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Tue, 18 Jul 2017 21:59:22 +0200

irqchip/gic/realview: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>


Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Marc Zyngier <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Jason Cooper <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]

---
drivers/irqchip/irq-gic-realview.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-gic-realview.c b/drivers/irqchip/irq-gic-realview.c
index 54c2964..18d58d2 100644
--- a/drivers/irqchip/irq-gic-realview.c
+++ b/drivers/irqchip/irq-gic-realview.c
@@ -43,7 +43,7 @@ static const struct of_device_id syscon_pldset_of_match[] = {
static int __init
realview_gic_of_init(struct device_node *node, struct device_node *parent)
{
- static struct regmap *map;
+ struct regmap *map;
struct device_node *np;
const struct of_device_id *gic_id;
u32 pld1_ctrl;

Subject: [tip:irq/urgent] irqchip/mips-cpu: Drop unnecessary static

Commit-ID: 82faeffa7e130e2ae43aa681a34c02d56dabd177
Gitweb: http://git.kernel.org/tip/82faeffa7e130e2ae43aa681a34c02d56dabd177
Author: Julia Lawall <[email protected]>
AuthorDate: Sat, 15 Jul 2017 22:07:41 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Tue, 18 Jul 2017 21:59:22 +0200

irqchip/mips-cpu: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>


Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: Marc Zyngier <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Jason Cooper <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]

---
drivers/irqchip/irq-mips-cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
index 0a8ed1c..14461cb 100644
--- a/drivers/irqchip/irq-mips-cpu.c
+++ b/drivers/irqchip/irq-mips-cpu.c
@@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch(void)
static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hw)
{
- static struct irq_chip *chip;
+ struct irq_chip *chip;

if (hw < 2 && cpu_has_mipsmt) {
/* Software interrupts are used for MT/CMT IPI */

Subject: [tip:irq/urgent] irqchip/digicolor: Drop unnecessary static

Commit-ID: acc80c39929b9f2ff8b45fcfe103385a3e45c1a7
Gitweb: http://git.kernel.org/tip/acc80c39929b9f2ff8b45fcfe103385a3e45c1a7
Author: Julia Lawall <[email protected]>
AuthorDate: Sat, 15 Jul 2017 22:07:45 +0200
Committer: Thomas Gleixner <[email protected]>
CommitDate: Tue, 18 Jul 2017 21:59:23 +0200

irqchip/digicolor: Drop unnecessary static

Drop static on a local variable, when the variable is initialized before
any possible use. Thus, the static has no benefit.

The semantic patch that fixes this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@bad exists@
position p;
identifier x;
type T;
@@
static T x@p;
...
x = <+...x...+>

@@
identifier x;
expression e;
type T;
position p != bad.p;
@@
-static
T x@p;
... when != x
when strict
?x = e;
// </smpl>


Signed-off-by: Julia Lawall <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Acked-by: Baruch Siach <[email protected]>
Cc: [email protected]
Cc: Marc Zyngier <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Jason Cooper <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]

---
drivers/irqchip/irq-digicolor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-digicolor.c b/drivers/irqchip/irq-digicolor.c
index dad85e7..3aae015 100644
--- a/drivers/irqchip/irq-digicolor.c
+++ b/drivers/irqchip/irq-digicolor.c
@@ -71,7 +71,7 @@ static void __init digicolor_set_gc(void __iomem *reg_base, unsigned irq_base,
static int __init digicolor_of_init(struct device_node *node,
struct device_node *parent)
{
- static void __iomem *reg_base;
+ void __iomem *reg_base;
unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
struct regmap *ucregs;
int ret;

2017-07-24 19:20:46

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH 07/11] mfd: Drop unnecessary static

Hi!

> > > Drop static on a local variable, when the variable is initialized before
> > > any possible use. Thus, the static has no benefit.

Actually... it has possible other benefit -- saving stack space. I've
used static for that purpose before. So ... careful with the
automation.

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


Attachments:
(No filename) (423.00 B)
signature.asc (181.00 B)
Digital signature
Download all attachments

2017-07-24 22:27:21

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH 07/11] mfd: Drop unnecessary static

On Mon, Jul 24, 2017 at 12:20 PM, Pavel Machek <[email protected]> wrote:
> Hi!
>
>> > > Drop static on a local variable, when the variable is initialized before
>> > > any possible use. Thus, the static has no benefit.
>
> Actually... it has possible other benefit -- saving stack space. I've
> used static for that purpose before. So ... careful with the
> automation.

This means any functions like this must not be thread safe, though...

-Kees

--
Kees Cook
Pixel Security

2017-07-25 08:00:16

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH 07/11] mfd: Drop unnecessary static

On Sat, 15 Jul 2017, Julia Lawall wrote:

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.
>
> drivers/mfd/twl4030-irq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Looks like I didn't reply to this patch.

Just to let you know, it has been applied.

> diff -u -p a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
> --- a/drivers/mfd/twl4030-irq.c
> +++ b/drivers/mfd/twl4030-irq.c
> @@ -685,7 +685,7 @@ int twl4030_sih_setup(struct device *dev
>
> int twl4030_init_irq(struct device *dev, int irq_num)
> {
> - static struct irq_chip twl4030_irq_chip;
> + struct irq_chip twl4030_irq_chip;
> int status, i;
> int irq_base, irq_end, nr_irqs;
> struct device_node *node = dev->of_node;
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

Subject: Re: [PATCH 04/11] fbdev: da8xx-fb: Drop unnecessary static

On Saturday, July 15, 2017 10:07:39 PM Julia Lawall wrote:
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Patch queued for 4.14, thanks.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

2017-08-02 08:23:04

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH 08/11] ata: Drop unnecessary static

On Sat, Jul 15, 2017 at 10:07 PM, Julia Lawall <[email protected]> wrote:

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Acked-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2017-08-02 15:13:07

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 08/11] ata: Drop unnecessary static

On Sat, Jul 15, 2017 at 10:07:43PM +0200, Julia Lawall wrote:
> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>

Applied to libata/for-4.14.

Thanks.

--
tejun

2017-08-17 12:59:13

by Boris Brezillon

[permalink] [raw]
Subject: Re: [PATCH 03/11] mtd: physmap_of: Drop unnecessary static

Le Sat, 15 Jul 2017 22:07:38 +0200,
Julia Lawall <[email protected]> a écrit :

> Drop static on a local variable, when the variable is initialized before
> any possible use. Thus, the static has no benefit.
>
> The semantic patch that fixes this problem is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @bad exists@
> position p;
> identifier x;
> type T;
> @@
> static T x@p;
> ...
> x = <+...x...+>
>
> @@
> identifier x;
> expression e;
> type T;
> position p != bad.p;
> @@
> -static
> T x@p;
> ... when != x
> when strict
> ?x = e;
> // </smpl>
>

Applied to l2-mtd/master.

Thanks,

Boris

> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> These patches are all independent of each other.
>
> drivers/mtd/maps/physmap_of_versatile.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -u -p a/drivers/mtd/maps/physmap_of_versatile.c b/drivers/mtd/maps/physmap_of_versatile.c
> --- a/drivers/mtd/maps/physmap_of_versatile.c
> +++ b/drivers/mtd/maps/physmap_of_versatile.c
> @@ -97,7 +97,7 @@ static const struct of_device_id ebi_mat
> static int ap_flash_init(struct platform_device *pdev)
> {
> struct device_node *ebi;
> - static void __iomem *ebi_base;
> + void __iomem *ebi_base;
> u32 val;
> int ret;
>
>