Le 05/04/2020 à 19:54, Julia Lawall a écrit :
On Sun, 5 Apr 2020, Christophe JAILLET wrote:
Le 05/04/2020 à 11:30, Markus Elfring a écrit :
From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 5 Apr 2020 11:25:30 +0200
The function “platform_get_irq” can log an error already.
Thus omit a redundant message for the exception handling in the
calling function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
---
drivers/gpu/drm/ingenic/ingenic-drm.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm.c
b/drivers/gpu/drm/ingenic/ingenic-drm.c
index 9dfe7cb530e1..06ca752b76ee 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm.c
@@ -661,10 +661,8 @@ static int ingenic_drm_probe(struct platform_device
*pdev)
}
irq = platform_get_irq(pdev, 0);
- if (irq < 0) {
- dev_err(dev, "Failed to get platform irq");
Some 'dev_err' or equivalent functions sometimes don't have a trailing '\n'.
(just like here)
Do you think that it worth fixing? Or is it to low level value?
According to a few grep, there seems to be quite a lot of them to fix.
Julia, can 'coccinelle' be used for that?
Yes, it should be possible by writing some script code.
Something like
@initialize:python@
@@
... // define check_for_missing_nl (returning a boolean) and add_newline
@r@
constant str : script:python() { check_for_missing_nl str };
I can not have this work.
According to my understanding of [1], this syntax is only allowed for
'position'.
Nevertheless, I wrote another script (see below), which triggers ~2800
times in ./drivers only.
Some are false positives, but most look valid.
Not sure that fixing this kind of stuff really make sense.
A better approach could be to teach ./checkpatch.pl, but I don't have
the knowledge for that.
CJ
[1]: http://coccinelle.lip6.fr/docs/main_grammar.pdf (SmPL Grammar 1.0.8)
expression e;
@@
dev_err(e,str,...)
@script:python s@
str << r.str;
strnl;
@@
coccinelle.strnl = add_newline str
@@
constant r.str;
identifier s.strnl;
@@
dev_err(e,
- str
+ strnl
,...)
One would have to be a bit careful in add_newline to keep the "s even
though the code pretends that strnl is an identifier.
julia
CJ
+ if (irq < 0)
return irq;
- }
if (soc_info->needs_dev_clk) {
priv->lcd_clk = devm_clk_get(dev, "lcd");
--
2.26.0
>
>>>>>>>>>>>>>>>>>>>>>>>>>>>
@initialize:python@
@@
@r@
constant str;
expression e;
position p;
@@
(
pr_emerg@p(str, ...)
|
pr_alert@p(str, ...)
|
pr_crit@p(str, ...)
|
pr_err@p(str, ...)
|
pr_warn@p(str, ...)
|
pr_notice@p(str, ...)
|
pr_info@p(str, ...)
|
dev_emerg@p(e, str, ...)
|
dev_alert@p(e, str, ...)
|
dev_crit@p(e, str, ...)
|
dev_err@p(e, str, ...)
|
dev_warn@p(e, str, ...)
|
dev_notice@p(e, str, ...)
|
dev_info@p(e, str, ...)
)
@script:python depends on r@
str << r.str;
p << r.p;
@@
if not str.endswith("\\n\""):
print(p[0].file + ":" + p[0].line + ": " + str)