Message ID | 20200321210204.18106-2-nish.malpani25@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iio: Use suitable format specifiers | expand |
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 <lkp@intel.com> 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/kbuild-all@lists.01.org
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 <lkp@intel.com> 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 <linus.walleij@linaro.org> :::::: CC: Jonathan Cameron <Jonathan.Cameron@huawei.com> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Sun, 22 Mar 2020 02:31:52 +0530 Nishant Malpani <nish.malpani25@gmail.com> 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 <nish.malpani25@gmail.com> > --- > > 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); > } >
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); }
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 <nish.malpani25@gmail.com> --- 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(-)