diff mbox series

[net-next,v2,1/2] can-isotp: implement cleanups / improvements from review

Message ID 20201011092408.1766-1-socketcan@hartkopp.net
State New
Headers show
Series [net-next,v2,1/2] can-isotp: implement cleanups / improvements from review | expand

Commit Message

Oliver Hartkopp Oct. 11, 2020, 9:24 a.m. UTC
As pointed out by Jakub Kicinski here:
http://lore.kernel.org/r/20201009175751.5c54097f@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com
this patch addresses the remarked issues:

- remove empty line in comment
- remove default=y for CAN_ISOTP in Kconfig
- make use of pr_notice_once()
- use GFP_KERNEL instead of gfp_any() in soft hrtimer context
- make use of pr_fmt() [suggested my Marc Kleine-Budde]

The version strings in the CAN subsystem are removed by a separate patch.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
---
 include/uapi/linux/can/isotp.h |  1 -
 net/can/Kconfig                |  3 ++-
 net/can/isotp.c                | 19 ++++++++++---------
 3 files changed, 12 insertions(+), 11 deletions(-)

Comments

Jakub Kicinski Oct. 11, 2020, 3:44 p.m. UTC | #1
On Sun, 11 Oct 2020 11:24:07 +0200 Oliver Hartkopp wrote:
> diff --git a/net/can/isotp.c b/net/can/isotp.c
> index e6ff032b5426..22187669c5c9 100644
> --- a/net/can/isotp.c
> +++ b/net/can/isotp.c
> @@ -79,6 +79,8 @@ MODULE_LICENSE("Dual BSD/GPL");
>  MODULE_AUTHOR("Oliver Hartkopp <socketcan@hartkopp.net>");
>  MODULE_ALIAS("can-proto-6");
>  
> +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

You need to move this before the includes:

net/can/isotp.c:82: warning: "pr_fmt" redefined
   82 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
      | 
In file included from ../include/linux/kernel.h:15,
                 from ../include/linux/list.h:9,
                 from ../include/linux/module.h:12,
                 from ../net/can/isotp.c:56:
include/linux/printk.h:297: note: this is the location of the previous definition
  297 | #define pr_fmt(fmt) fmt
      | 
net/can/isotp.c:82:9: warning: preprocessor token pr_fmt redefined
net/can/isotp.c: note: in included file (through ../include/linux/kernel.h, ../include/linux/list.h, ../include/linux/module.h):
include/linux/printk.h:297:9: this was the original definition
Jakub Kicinski Oct. 11, 2020, 3:45 p.m. UTC | #2
On Sun, 11 Oct 2020 11:24:07 +0200 Oliver Hartkopp wrote:
> @@ -769,7 +771,7 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer)

>  

>  isotp_tx_burst:

>  		skb = alloc_skb(so->ll.mtu + sizeof(struct can_skb_priv),

> -				gfp_any());

> +				GFP_KERNEL);


hrtimer will need GFP_ATOMIC
kernel test robot Oct. 11, 2020, 5:59 p.m. UTC | #3
Hi Oliver,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Oliver-Hartkopp/can-isotp-implement-cleanups-improvements-from-review/20201012-000055
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git df41c19abbeaae6e24c8e31cff5fdb48632be380
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/693c9b4e8c5710e7b536ec9d6a969a7d7343a100
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Oliver-Hartkopp/can-isotp-implement-cleanups-improvements-from-review/20201012-000055
        git checkout 693c9b4e8c5710e7b536ec9d6a969a7d7343a100
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> net/can/isotp.c:82: warning: "pr_fmt" redefined

      82 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
         | 
   In file included from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/module.h:12,
                    from net/can/isotp.c:56:
   include/linux/printk.h:297: note: this is the location of the previous definition
     297 | #define pr_fmt(fmt) fmt
         | 

vim +/pr_fmt +82 net/can/isotp.c

    81	
  > 82	#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

    83	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Oliver Hartkopp Oct. 12, 2020, 7:41 a.m. UTC | #4
On 11.10.20 17:44, Jakub Kicinski wrote:
> On Sun, 11 Oct 2020 11:24:07 +0200 Oliver Hartkopp wrote:
>> diff --git a/net/can/isotp.c b/net/can/isotp.c
>> index e6ff032b5426..22187669c5c9 100644
>> --- a/net/can/isotp.c
>> +++ b/net/can/isotp.c
>> @@ -79,6 +79,8 @@ MODULE_LICENSE("Dual BSD/GPL");
>>   MODULE_AUTHOR("Oliver Hartkopp <socketcan@hartkopp.net>");
>>   MODULE_ALIAS("can-proto-6");
>>   
>> +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> 
> You need to move this before the includes:
> 
> net/can/isotp.c:82: warning: "pr_fmt" redefined
>     82 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
>        |
> In file included from ../include/linux/kernel.h:15,
>                   from ../include/linux/list.h:9,
>                   from ../include/linux/module.h:12,
>                   from ../net/can/isotp.c:56:
> include/linux/printk.h:297: note: this is the location of the previous definition
>    297 | #define pr_fmt(fmt) fmt
>        |
> net/can/isotp.c:82:9: warning: preprocessor token pr_fmt redefined
> net/can/isotp.c: note: in included file (through ../include/linux/kernel.h, ../include/linux/list.h, ../include/linux/module.h):
> include/linux/printk.h:297:9: this was the original definition
> 

Hm - don't know why my build process didn't complain about it. Or why I 
possibly overlooked it.

I'll do the cosmetic pr_fmt() improvements for the entire CAN network 
layer stuff later as it is not relevant for this net-next window.

The v3 patch will fix the GFP_ATOMIC too.

Thanks for your patience,
Oliver
diff mbox series

Patch

diff --git a/include/uapi/linux/can/isotp.h b/include/uapi/linux/can/isotp.h
index 553006509f4e..7793b26aa154 100644
--- a/include/uapi/linux/can/isotp.h
+++ b/include/uapi/linux/can/isotp.h
@@ -160,7 +160,6 @@  struct can_isotp_ll_options {
  * these default settings can be changed via sockopts.
  * For that reason the STmin value is intentionally _not_ checked for
  * consistency and copied directly into the flow control (FC) frame.
- *
  */
 
 #endif /* !_UAPI_CAN_ISOTP_H */
diff --git a/net/can/Kconfig b/net/can/Kconfig
index 021fe03a8ed6..224e5e0283a9 100644
--- a/net/can/Kconfig
+++ b/net/can/Kconfig
@@ -57,7 +57,6 @@  source "net/can/j1939/Kconfig"
 
 config CAN_ISOTP
 	tristate "ISO 15765-2:2016 CAN transport protocol"
-	default y
 	help
 	  CAN Transport Protocols offer support for segmented Point-to-Point
 	  communication between CAN nodes via two defined CAN Identifiers.
@@ -67,6 +66,8 @@  config CAN_ISOTP
 	  vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN traffic.
 	  This protocol driver implements data transfers according to
 	  ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
+	  If you want to perform automotive vehicle diagnostic services (UDS),
+	  say 'y'.
 
 source "drivers/net/can/Kconfig"
 
diff --git a/net/can/isotp.c b/net/can/isotp.c
index e6ff032b5426..22187669c5c9 100644
--- a/net/can/isotp.c
+++ b/net/can/isotp.c
@@ -79,6 +79,8 @@  MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Oliver Hartkopp <socketcan@hartkopp.net>");
 MODULE_ALIAS("can-proto-6");
 
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
 #define SINGLE_MASK(id) (((id) & CAN_EFF_FLAG) ? \
 			 (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \
 			 (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG))
@@ -222,8 +224,8 @@  static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus)
 
 	can_send_ret = can_send(nskb, 1);
 	if (can_send_ret)
-		printk_once(KERN_NOTICE "can-isotp: %s: can_send_ret %d\n",
-			    __func__, can_send_ret);
+		pr_notice_once("%s: can_send_ret %d\n",
+			       __func__, can_send_ret);
 
 	dev_put(dev);
 
@@ -769,7 +771,7 @@  static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer)
 
 isotp_tx_burst:
 		skb = alloc_skb(so->ll.mtu + sizeof(struct can_skb_priv),
-				gfp_any());
+				GFP_KERNEL);
 		if (!skb) {
 			dev_put(dev);
 			break;
@@ -798,8 +800,8 @@  static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer)
 
 		can_send_ret = can_send(skb, 1);
 		if (can_send_ret)
-			printk_once(KERN_NOTICE "can-isotp: %s: can_send_ret %d\n",
-				    __func__, can_send_ret);
+			pr_notice_once("%s: can_send_ret %d\n",
+				       __func__, can_send_ret);
 
 		if (so->tx.idx >= so->tx.len) {
 			/* we are done */
@@ -942,8 +944,7 @@  static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 	err = can_send(skb, 1);
 	dev_put(dev);
 	if (err) {
-		printk_once(KERN_NOTICE "can-isotp: %s: can_send_ret %d\n",
-			    __func__, err);
+		pr_notice_once("%s: can_send_ret %d\n", __func__, err);
 		return err;
 	}
 
@@ -1408,11 +1409,11 @@  static __init int isotp_module_init(void)
 {
 	int err;
 
-	pr_info("can: isotp protocol (rev " CAN_ISOTP_VERSION ")\n");
+	pr_info("isotp protocol (rev " CAN_ISOTP_VERSION ")\n");
 
 	err = can_proto_register(&isotp_can_proto);
 	if (err < 0)
-		pr_err("can: registration of isotp protocol failed\n");
+		pr_err("registration of isotp protocol failed\n");
 
 	return err;
 }