Provide more suitable format specifiers while printing error logs.
Discards the use of unnecessary explicit casting and prints symbolic
error name which might prove to be convenient during debugging.
Signed-off-by: Nishant Malpani <[email protected]>
---
Based on conversations in [1] & [2].
[1] https://marc.info/?l=linux-iio&m=158427554607223&w=2
[2] https://marc.info/?l=linux-iio&m=158481647605891&w=2
---
drivers/iio/accel/kxsd9-i2c.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9-i2c.c
index 38411e1c155b..39a9daa7566f 100644
--- a/drivers/iio/accel/kxsd9-i2c.c
+++ b/drivers/iio/accel/kxsd9-i2c.c
@@ -21,8 +21,8 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c,
regmap = devm_regmap_init_i2c(i2c, &config);
if (IS_ERR(regmap)) {
- dev_err(&i2c->dev, "Failed to register i2c regmap %d\n",
- (int)PTR_ERR(regmap));
+ dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
+ regmap;
return PTR_ERR(regmap);
}
--
2.20.1
On Sun, 2020-03-22 at 02:31 +0530, Nishant Malpani wrote:
> Provide more suitable format specifiers while printing error logs.
> Discards the use of unnecessary explicit casting and prints symbolic
> error name which might prove to be convenient during debugging.
'Use suitable format specifier' is obscure and not specific.
All the subjects should likely be something like
[PATCH] subsystem: Use vsprintf extension %pe for symbolic error name
> diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9-i2c.c
[]
> @@ -21,8 +21,8 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c,
>
> regmap = devm_regmap_init_i2c(i2c, &config);
> if (IS_ERR(regmap)) {
> - dev_err(&i2c->dev, "Failed to register i2c regmap %d\n",
> - (int)PTR_ERR(regmap));
> + dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
> + regmap;
And this could use a separator between regmap and errname like
dev_err(&i2c->dev, "Failed to register i2c regmap: %pe\n",
or
dev_err(&i2c->dev, "Failed to register i2c regmap - %pe\n",
On 22/03/20 2:39 am, Joe Perches wrote:
> On Sun, 2020-03-22 at 02:31 +0530, Nishant Malpani wrote:
>> Provide more suitable format specifiers while printing error logs.
>> Discards the use of unnecessary explicit casting and prints symbolic
>> error name which might prove to be convenient during debugging.
>
>
> 'Use suitable format specifier' is obscure and not specific.
>
> All the subjects should likely be something like
>
> [PATCH] subsystem: Use vsprintf extension %pe for symbolic error name
>
Agreed. I was just skeptical about that previously because the commit
subject line's length was going way beyond 50 chars. I do get your point
though; I'll send in a v2!
>
>> diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9-i2c.c
> []
>> @@ -21,8 +21,8 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c,
>>
>> regmap = devm_regmap_init_i2c(i2c, &config);
>> if (IS_ERR(regmap)) {
>> - dev_err(&i2c->dev, "Failed to register i2c regmap %d\n",
>> - (int)PTR_ERR(regmap));
>> + dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
>> + regmap;
>
> And this could use a separator between regmap and errname like
>
> dev_err(&i2c->dev, "Failed to register i2c regmap: %pe\n",
> or
> dev_err(&i2c->dev, "Failed to register i2c regmap - %pe\n",
>
>
Yes, I had thought of this but was too timid to ask, thinking it was
perhaps there for legacy reasons :P
I'll add a separator in v2. Thanks for reviewing!
With regards,
Nishant Malpani
Hi Nishant,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v5.6-rc6]
[also build test ERROR on next-20200320]
[cannot apply to iio/togreg]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Nishant-Malpani/iio-Use-suitable-format-specifiers/20200322-050532
base: fb33c6510d5595144d585aa194d377cf74d31911
config: x86_64-randconfig-s0-20200322 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.2-10+deb8u1) 4.9.2
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email protected]>
All errors (new ones prefixed by >>):
drivers/iio/accel/kxsd9-i2c.c: In function 'kxsd9_i2c_probe':
drivers/iio/accel/kxsd9-i2c.c:68:0: error: unterminated argument list invoking macro "dev_err"
MODULE_DESCRIPTION("KXSD9 accelerometer I2C interface");
^
>> drivers/iio/accel/kxsd9-i2c.c:24:3: error: 'dev_err' undeclared (first use in this function)
dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
^
drivers/iio/accel/kxsd9-i2c.c:24:3: note: each undeclared identifier is reported only once for each function it appears in
drivers/iio/accel/kxsd9-i2c.c:24:3: error: expected ';' at end of input
drivers/iio/accel/kxsd9-i2c.c:24:3: error: expected declaration or statement at end of input
drivers/iio/accel/kxsd9-i2c.c:24:3: error: expected declaration or statement at end of input
drivers/iio/accel/kxsd9-i2c.c:24:3: warning: no return statement in function returning non-void [-Wreturn-type]
drivers/iio/accel/kxsd9-i2c.c: At top level:
drivers/iio/accel/kxsd9-i2c.c:12:12: warning: 'kxsd9_i2c_probe' defined but not used [-Wunused-function]
static int kxsd9_i2c_probe(struct i2c_client *i2c,
^
vim +/dev_err +24 drivers/iio/accel/kxsd9-i2c.c
11
12 static int kxsd9_i2c_probe(struct i2c_client *i2c,
13 const struct i2c_device_id *id)
14 {
15 static const struct regmap_config config = {
16 .reg_bits = 8,
17 .val_bits = 8,
18 .max_register = 0x0e,
19 };
20 struct regmap *regmap;
21
22 regmap = devm_regmap_init_i2c(i2c, &config);
23 if (IS_ERR(regmap)) {
> 24 dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
25 regmap;
26 return PTR_ERR(regmap);
27 }
28
29 return kxsd9_common_probe(&i2c->dev,
30 regmap,
31 i2c->name);
32 }
33
34 static int kxsd9_i2c_remove(struct i2c_client *client)
35 {
36 return kxsd9_common_remove(&client->dev);
37 }
38
39 #ifdef CONFIG_OF
40 static const struct of_device_id kxsd9_of_match[] = {
41 { .compatible = "kionix,kxsd9", },
42 { },
43 };
44 MODULE_DEVICE_TABLE(of, kxsd9_of_match);
45 #else
46 #define kxsd9_of_match NULL
47 #endif
48
49 static const struct i2c_device_id kxsd9_i2c_id[] = {
50 {"kxsd9", 0},
51 { },
52 };
53 MODULE_DEVICE_TABLE(i2c, kxsd9_i2c_id);
54
55 static struct i2c_driver kxsd9_i2c_driver = {
56 .driver = {
57 .name = "kxsd9",
58 .of_match_table = of_match_ptr(kxsd9_of_match),
59 .pm = &kxsd9_dev_pm_ops,
60 },
61 .probe = kxsd9_i2c_probe,
62 .remove = kxsd9_i2c_remove,
63 .id_table = kxsd9_i2c_id,
64 };
65 module_i2c_driver(kxsd9_i2c_driver);
66
67 MODULE_LICENSE("GPL v2");
> 68 MODULE_DESCRIPTION("KXSD9 accelerometer I2C interface");
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
Hi Nishant,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v5.6-rc6]
[also build test ERROR on next-20200320]
[cannot apply to iio/togreg]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Nishant-Malpani/iio-Use-suitable-format-specifiers/20200322-050532
base: fb33c6510d5595144d585aa194d377cf74d31911
config: powerpc-randconfig-a001-20200322 (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email protected]>
All error/warnings (new ones prefixed by >>):
drivers/iio/accel/kxsd9-i2c.c: In function 'kxsd9_i2c_probe':
>> drivers/iio/accel/kxsd9-i2c.c:68: error: unterminated argument list invoking macro "dev_err"
68 | MODULE_DESCRIPTION("KXSD9 accelerometer I2C interface");
|
>> drivers/iio/accel/kxsd9-i2c.c:24:3: error: 'dev_err' undeclared (first use in this function); did you mean '_dev_err'?
24 | dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
| ^~~~~~~
| _dev_err
drivers/iio/accel/kxsd9-i2c.c:24:3: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/iio/accel/kxsd9-i2c.c:24:10: error: expected ';' at end of input
24 | dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
| ^
| ;
......
68 | MODULE_DESCRIPTION("KXSD9 accelerometer I2C interface");
|
>> drivers/iio/accel/kxsd9-i2c.c:24:3: error: expected declaration or statement at end of input
24 | dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
| ^~~~~~~
>> drivers/iio/accel/kxsd9-i2c.c:24:3: error: expected declaration or statement at end of input
>> drivers/iio/accel/kxsd9-i2c.c:24:3: warning: no return statement in function returning non-void [-Wreturn-type]
At top level:
drivers/iio/accel/kxsd9-i2c.c:12:12: warning: 'kxsd9_i2c_probe' defined but not used [-Wunused-function]
12 | static int kxsd9_i2c_probe(struct i2c_client *i2c,
| ^~~~~~~~~~~~~~~
vim +/dev_err +68 drivers/iio/accel/kxsd9-i2c.c
a483ab796960c9 Linus Walleij 2016-09-01 11
a483ab796960c9 Linus Walleij 2016-09-01 12 static int kxsd9_i2c_probe(struct i2c_client *i2c,
a483ab796960c9 Linus Walleij 2016-09-01 13 const struct i2c_device_id *id)
a483ab796960c9 Linus Walleij 2016-09-01 14 {
a483ab796960c9 Linus Walleij 2016-09-01 15 static const struct regmap_config config = {
a483ab796960c9 Linus Walleij 2016-09-01 16 .reg_bits = 8,
a483ab796960c9 Linus Walleij 2016-09-01 17 .val_bits = 8,
a483ab796960c9 Linus Walleij 2016-09-01 18 .max_register = 0x0e,
a483ab796960c9 Linus Walleij 2016-09-01 19 };
a483ab796960c9 Linus Walleij 2016-09-01 20 struct regmap *regmap;
a483ab796960c9 Linus Walleij 2016-09-01 21
a483ab796960c9 Linus Walleij 2016-09-01 22 regmap = devm_regmap_init_i2c(i2c, &config);
a483ab796960c9 Linus Walleij 2016-09-01 23 if (IS_ERR(regmap)) {
ee70c8726e6050 Nishant Malpani 2020-03-22 @24 dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
ee70c8726e6050 Nishant Malpani 2020-03-22 25 regmap;
a483ab796960c9 Linus Walleij 2016-09-01 26 return PTR_ERR(regmap);
a483ab796960c9 Linus Walleij 2016-09-01 27 }
a483ab796960c9 Linus Walleij 2016-09-01 28
a483ab796960c9 Linus Walleij 2016-09-01 29 return kxsd9_common_probe(&i2c->dev,
a483ab796960c9 Linus Walleij 2016-09-01 30 regmap,
a483ab796960c9 Linus Walleij 2016-09-01 31 i2c->name);
a483ab796960c9 Linus Walleij 2016-09-01 32 }
a483ab796960c9 Linus Walleij 2016-09-01 33
a483ab796960c9 Linus Walleij 2016-09-01 34 static int kxsd9_i2c_remove(struct i2c_client *client)
a483ab796960c9 Linus Walleij 2016-09-01 35 {
a483ab796960c9 Linus Walleij 2016-09-01 36 return kxsd9_common_remove(&client->dev);
a483ab796960c9 Linus Walleij 2016-09-01 37 }
a483ab796960c9 Linus Walleij 2016-09-01 38
a483ab796960c9 Linus Walleij 2016-09-01 39 #ifdef CONFIG_OF
a483ab796960c9 Linus Walleij 2016-09-01 40 static const struct of_device_id kxsd9_of_match[] = {
a483ab796960c9 Linus Walleij 2016-09-01 41 { .compatible = "kionix,kxsd9", },
a483ab796960c9 Linus Walleij 2016-09-01 42 { },
a483ab796960c9 Linus Walleij 2016-09-01 43 };
a483ab796960c9 Linus Walleij 2016-09-01 44 MODULE_DEVICE_TABLE(of, kxsd9_of_match);
a483ab796960c9 Linus Walleij 2016-09-01 45 #else
a483ab796960c9 Linus Walleij 2016-09-01 46 #define kxsd9_of_match NULL
a483ab796960c9 Linus Walleij 2016-09-01 47 #endif
a483ab796960c9 Linus Walleij 2016-09-01 48
a483ab796960c9 Linus Walleij 2016-09-01 49 static const struct i2c_device_id kxsd9_i2c_id[] = {
a483ab796960c9 Linus Walleij 2016-09-01 50 {"kxsd9", 0},
a483ab796960c9 Linus Walleij 2016-09-01 51 { },
a483ab796960c9 Linus Walleij 2016-09-01 52 };
a483ab796960c9 Linus Walleij 2016-09-01 53 MODULE_DEVICE_TABLE(i2c, kxsd9_i2c_id);
a483ab796960c9 Linus Walleij 2016-09-01 54
a483ab796960c9 Linus Walleij 2016-09-01 55 static struct i2c_driver kxsd9_i2c_driver = {
a483ab796960c9 Linus Walleij 2016-09-01 56 .driver = {
a483ab796960c9 Linus Walleij 2016-09-01 57 .name = "kxsd9",
a483ab796960c9 Linus Walleij 2016-09-01 58 .of_match_table = of_match_ptr(kxsd9_of_match),
9a9a369d6178dd Linus Walleij 2016-09-01 59 .pm = &kxsd9_dev_pm_ops,
a483ab796960c9 Linus Walleij 2016-09-01 60 },
a483ab796960c9 Linus Walleij 2016-09-01 61 .probe = kxsd9_i2c_probe,
a483ab796960c9 Linus Walleij 2016-09-01 62 .remove = kxsd9_i2c_remove,
a483ab796960c9 Linus Walleij 2016-09-01 63 .id_table = kxsd9_i2c_id,
a483ab796960c9 Linus Walleij 2016-09-01 64 };
a483ab796960c9 Linus Walleij 2016-09-01 65 module_i2c_driver(kxsd9_i2c_driver);
9a0ebbc93547d8 Linus Walleij 2017-11-13 66
9a0ebbc93547d8 Linus Walleij 2017-11-13 67 MODULE_LICENSE("GPL v2");
9a0ebbc93547d8 Linus Walleij 2017-11-13 @68 MODULE_DESCRIPTION("KXSD9 accelerometer I2C interface");
:::::: The code at line 68 was first introduced by commit
:::::: 9a0ebbc93547d88f422905c34dcceebe928f3e9e iio: adc/accel: Fix up module licenses
:::::: TO: Linus Walleij <[email protected]>
:::::: CC: Jonathan Cameron <[email protected]>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
On Sun, 22 Mar 2020 02:31:52 +0530
Nishant Malpani <[email protected]> wrote:
> Provide more suitable format specifiers while printing error logs.
> Discards the use of unnecessary explicit casting and prints symbolic
> error name which might prove to be convenient during debugging.
>
> Signed-off-by: Nishant Malpani <[email protected]>
> ---
>
> Based on conversations in [1] & [2].
>
> [1] https://marc.info/?l=linux-iio&m=158427554607223&w=2
> [2] https://marc.info/?l=linux-iio&m=158481647605891&w=2
> ---
> drivers/iio/accel/kxsd9-i2c.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/accel/kxsd9-i2c.c b/drivers/iio/accel/kxsd9-i2c.c
> index 38411e1c155b..39a9daa7566f 100644
> --- a/drivers/iio/accel/kxsd9-i2c.c
> +++ b/drivers/iio/accel/kxsd9-i2c.c
> @@ -21,8 +21,8 @@ static int kxsd9_i2c_probe(struct i2c_client *i2c,
>
> regmap = devm_regmap_init_i2c(i2c, &config);
> if (IS_ERR(regmap)) {
> - dev_err(&i2c->dev, "Failed to register i2c regmap %d\n",
> - (int)PTR_ERR(regmap));
> + dev_err(&i2c->dev, "Failed to register i2c regmap %pe\n",
> + regmap;
Please make sure you do basic build tests.
regmap);
> return PTR_ERR(regmap);
> }
>