Message ID | 1351940317-14812-11-git-send-email-Julia.Lawall@lip6.fr |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Am 03.11.2012 11:58, schrieb Julia Lawall: > From: Julia Lawall <Julia.Lawall@lip6.fr> > > Use WARN rather than printk followed by WARN_ON(1), for conciseness. > > A simplified version of the semantic patch that makes this transformation > is as follows: (http://coccinelle.lip6.fr/) > > // <smpl> > @@ > expression list es; > @@ > > -printk( > +WARN(1, > es); > -WARN_ON(1); > // </smpl> > > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> > > --- > drivers/net/ethernet/ibm/emac/mal.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c > index 479e43e..84c6b6c 100644 > --- a/drivers/net/ethernet/ibm/emac/mal.c > +++ b/drivers/net/ethernet/ibm/emac/mal.c > @@ -738,13 +738,11 @@ static int __devexit mal_remove(struct platform_device *ofdev) > /* Synchronize with scheduled polling */ > napi_disable(&mal->napi); > > - if (!list_empty(&mal->list)) { > + if (!list_empty(&mal->list)) > /* This is *very* bad */ > - printk(KERN_EMERG > + WARN(1, KERN_EMERG > "mal%d: commac list is not empty on remove!\n", > mal->index); > - WARN_ON(1); > - } > > dev_set_drvdata(&ofdev->dev, NULL); > > Hi Julia, you are removing the {} behin the if. I prefer to be a bit conservative about {}. There is suggest to keep them because WARN may be expanded in future (with a second line) and that will cause subtle changes that do no break the code. (Yes i know it is possible to write macros that contain savely more than one line.) re, wh -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, 3 Nov 2012, walter harms wrote: > > > Am 03.11.2012 11:58, schrieb Julia Lawall: >> From: Julia Lawall <Julia.Lawall@lip6.fr> >> >> Use WARN rather than printk followed by WARN_ON(1), for conciseness. >> >> A simplified version of the semantic patch that makes this transformation >> is as follows: (http://coccinelle.lip6.fr/) >> >> // <smpl> >> @@ >> expression list es; >> @@ >> >> -printk( >> +WARN(1, >> es); >> -WARN_ON(1); >> // </smpl> >> >> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> >> >> --- >> drivers/net/ethernet/ibm/emac/mal.c | 6 ++---- >> 1 file changed, 2 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c >> index 479e43e..84c6b6c 100644 >> --- a/drivers/net/ethernet/ibm/emac/mal.c >> +++ b/drivers/net/ethernet/ibm/emac/mal.c >> @@ -738,13 +738,11 @@ static int __devexit mal_remove(struct platform_device *ofdev) >> /* Synchronize with scheduled polling */ >> napi_disable(&mal->napi); >> >> - if (!list_empty(&mal->list)) { >> + if (!list_empty(&mal->list)) >> /* This is *very* bad */ >> - printk(KERN_EMERG >> + WARN(1, KERN_EMERG >> "mal%d: commac list is not empty on remove!\n", >> mal->index); >> - WARN_ON(1); >> - } >> >> dev_set_drvdata(&ofdev->dev, NULL); >> >> > > Hi Julia, > you are removing the {} behin the if. I prefer to be a bit conservative > about {}. There is suggest to keep them because WARN may be expanded in > future (with a second line) and that will cause subtle changes that do > no break the code. (Yes i know it is possible to write macros that > contain savely more than one line.) WARN is already multi-line, surrounded by ({ }). It seems to be set up to be used as an expression. Is it necessary to assume that it might someday be changed from safe to unsafe? julia -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Am 03.11.2012 15:14, schrieb Julia Lawall: > On Sat, 3 Nov 2012, walter harms wrote: > >> >> >> Am 03.11.2012 11:58, schrieb Julia Lawall: >>> From: Julia Lawall <Julia.Lawall@lip6.fr> >>> >>> Use WARN rather than printk followed by WARN_ON(1), for conciseness. >>> >>> A simplified version of the semantic patch that makes this >>> transformation >>> is as follows: (http://coccinelle.lip6.fr/) >>> >>> // <smpl> >>> @@ >>> expression list es; >>> @@ >>> >>> -printk( >>> +WARN(1, >>> es); >>> -WARN_ON(1); >>> // </smpl> >>> >>> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> >>> >>> --- >>> drivers/net/ethernet/ibm/emac/mal.c | 6 ++---- >>> 1 file changed, 2 insertions(+), 4 deletions(-) >>> >>> diff --git a/drivers/net/ethernet/ibm/emac/mal.c >>> b/drivers/net/ethernet/ibm/emac/mal.c >>> index 479e43e..84c6b6c 100644 >>> --- a/drivers/net/ethernet/ibm/emac/mal.c >>> +++ b/drivers/net/ethernet/ibm/emac/mal.c >>> @@ -738,13 +738,11 @@ static int __devexit mal_remove(struct >>> platform_device *ofdev) >>> /* Synchronize with scheduled polling */ >>> napi_disable(&mal->napi); >>> >>> - if (!list_empty(&mal->list)) { >>> + if (!list_empty(&mal->list)) >>> /* This is *very* bad */ >>> - printk(KERN_EMERG >>> + WARN(1, KERN_EMERG >>> "mal%d: commac list is not empty on remove!\n", >>> mal->index); >>> - WARN_ON(1); >>> - } >>> >>> dev_set_drvdata(&ofdev->dev, NULL); >>> >>> >> >> Hi Julia, >> you are removing the {} behin the if. I prefer to be a bit conservative >> about {}. There is suggest to keep them because WARN may be expanded in >> future (with a second line) and that will cause subtle changes that do >> no break the code. (Yes i know it is possible to write macros that >> contain savely more than one line.) > > WARN is already multi-line, surrounded by ({ }). It seems to be set up > to be used as an expression. Is it necessary to assume that it might > someday be changed from safe to unsafe? > my bad, NTL looks like a candidate for a function. While looking i have noticed that a lot of drivers define there private "assert" macro. It is very similar to warn. (e.g.) #define RTL819x_DEBUG #ifdef RTL819x_DEBUG #define assert(expr) \ if (!(expr)) { \ printk( "Assertion failed! %s,%s,%s,line=%d\n", \ #expr,__FILE__,__FUNCTION__,__LINE__); \ } re, wh -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> While looking i have noticed that a lot of drivers define there private "assert" macro. > It is very similar to warn. > > (e.g.) > #define RTL819x_DEBUG > #ifdef RTL819x_DEBUG > #define assert(expr) \ > if (!(expr)) { \ > printk( "Assertion failed! %s,%s,%s,line=%d\n", \ > #expr,__FILE__,__FUNCTION__,__LINE__); \ > } WARN is more complicated. At least with the right debugging options turned on, it dumps the stack, via warn_slowpath_common. julia -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Julia Lawall <Julia.Lawall@lip6.fr> Date: Sat, 3 Nov 2012 11:58:31 +0100 > From: Julia Lawall <Julia.Lawall@lip6.fr> > > Use WARN rather than printk followed by WARN_ON(1), for conciseness. > > A simplified version of the semantic patch that makes this transformation > is as follows: (http://coccinelle.lip6.fr/) ... > Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c index 479e43e..84c6b6c 100644 --- a/drivers/net/ethernet/ibm/emac/mal.c +++ b/drivers/net/ethernet/ibm/emac/mal.c @@ -738,13 +738,11 @@ static int __devexit mal_remove(struct platform_device *ofdev) /* Synchronize with scheduled polling */ napi_disable(&mal->napi); - if (!list_empty(&mal->list)) { + if (!list_empty(&mal->list)) /* This is *very* bad */ - printk(KERN_EMERG + WARN(1, KERN_EMERG "mal%d: commac list is not empty on remove!\n", mal->index); - WARN_ON(1); - } dev_set_drvdata(&ofdev->dev, NULL);