All of lore.kernel.org
 help / color / mirror / Atom feed
* pull-request: can 2019-12-08
@ 2019-12-09 16:32 Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 01/13] MAINTAINERS: Add myself as a maintainer for MMIO m_can Marc Kleine-Budde
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel

Hello David,

this is a pull request of 13 patches for net/master.

The first two patches are by Dan Murphy. He adds himself as a maintainer to the
m-can MMIO and tcan SPI driver.

The next two patches the j1939 stack. The first one is by Oleksij Rempel and
fixes a locking problem found by the syzbot, the second one is by me an fixes a
mistake in the documentation.

Srinivas Neeli fixes missing RX CAN packets on CANFD2.0 in the xilinx driver.

Sean Nyekjaer fixes a possible deadlock in the the flexcan driver after
suspend/resume. Joakim Zhang contributes two patches for the flexcan driver
that fix problems with the low power enter/exit.

The next 4 patches all target the tcan part of the m_can driver. Sean Nyekjaer
adds the required delay after reset and fixes the device tree binding example.
Dan Murphy's patches make the wake-gpio optional.

In the last patch Xiaolong Huang fixes several kernel memory info leaks to the
USB device in the kvaser_usb_leaf driver.

regards,
Marc

---

The following changes since commit 0fc75219fe9a3c90631453e9870e4f6d956f0ebc:

  r8169: fix rtl_hw_jumbo_disable for RTL8168evl (2019-12-07 14:23:06 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git tags/linux-can-fixes-for-5.5-20191208

for you to fetch changes up to da2311a6385c3b499da2ed5d9be59ce331fa93e9:

  can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices (2019-12-08 12:22:01 +0100)

----------------------------------------------------------------
linux-can-fixes-for-5.5-20191208

----------------------------------------------------------------
Dan Murphy (4):
      MAINTAINERS: Add myself as a maintainer for MMIO m_can
      MAINTAINERS: Add myself as a maintainer for TCAN4x5x
      dt-bindings: tcan4x5x: Make wake-gpio an optional gpio
      can: tcan45x: Make wake-up GPIO an optional GPIO

Joakim Zhang (2):
      can: flexcan: add low power enter/exit acknowledgment helper
      can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment

Marc Kleine-Budde (1):
      can: j1939: fix address claim code example

Oleksij Rempel (1):
      can: j1939: j1939_sk_bind(): take priv after lock is held

Sean Nyekjaer (3):
      can: flexcan: fix possible deadlock and out-of-order reception after wakeup
      can: m_can: tcan4x5x: add required delay after reset
      dt-bindings: can: tcan4x5x: reset pin is active high

Srinivas Neeli (1):
      can: xilinx_can: Fix missing Rx can packets on CANFD2.0

Xiaolong Huang (1):
      can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices

 .../devicetree/bindings/net/can/tcan4x5x.txt       |  4 +-
 Documentation/networking/j1939.rst                 |  2 +-
 MAINTAINERS                                        |  8 +++
 drivers/net/can/flexcan.c                          | 73 +++++++++++-----------
 drivers/net/can/m_can/tcan4x5x.c                   | 26 ++++++--
 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c   |  6 +-
 drivers/net/can/xilinx_can.c                       |  7 +++
 net/can/j1939/socket.c                             | 10 ++-
 8 files changed, 84 insertions(+), 52 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 01/13] MAINTAINERS: Add myself as a maintainer for MMIO m_can
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 02/13] MAINTAINERS: Add myself as a maintainer for TCAN4x5x Marc Kleine-Budde
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel, Dan Murphy, Marc Kleine-Budde

From: Dan Murphy <dmurphy@ti.com>

Since I refactored the code to create a m_can framework and we
have a MMIO MCAN IP as well add myself to help maintain the code.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index ecc354f4b692..1d50632f7662 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10095,6 +10095,7 @@ S:	Maintained
 F:	drivers/media/radio/radio-maxiradio*
 
 MCAN MMIO DEVICE DRIVER
+M:	Dan Murphy <dmurphy@ti.com>
 M:	Sriram Dash <sriram.dash@samsung.com>
 L:	linux-can@vger.kernel.org
 S:	Maintained
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 02/13] MAINTAINERS: Add myself as a maintainer for TCAN4x5x
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 01/13] MAINTAINERS: Add myself as a maintainer for MMIO m_can Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 03/13] can: j1939: j1939_sk_bind(): take priv after lock is held Marc Kleine-Budde
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel, Dan Murphy, Marc Kleine-Budde

From: Dan Murphy <dmurphy@ti.com>

Adding myself to support the TI TCAN4X5X SPI CAN device.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 1d50632f7662..cdeabd4ee1a6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -16498,6 +16498,13 @@ L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
 S:	Odd Fixes
 F:	sound/soc/codecs/tas571x*
 
+TI TCAN4X5X DEVICE DRIVER
+M:	Dan Murphy <dmurphy@ti.com>
+L:	linux-can@vger.kernel.org
+S:	Maintained
+F:	Documentation/devicetree/bindings/net/can/tcan4x5x.txt
+F:	drivers/net/can/m_can/tcan4x5x.c
+
 TI TRF7970A NFC DRIVER
 M:	Mark Greer <mgreer@animalcreek.com>
 L:	linux-wireless@vger.kernel.org
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 03/13] can: j1939: j1939_sk_bind(): take priv after lock is held
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 01/13] MAINTAINERS: Add myself as a maintainer for MMIO m_can Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 02/13] MAINTAINERS: Add myself as a maintainer for TCAN4x5x Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 04/13] can: j1939: fix address claim code example Marc Kleine-Budde
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Oleksij Rempel,
	syzbot+99e9e1b200a1e363237d, linux-stable, Marc Kleine-Budde

From: Oleksij Rempel <o.rempel@pengutronix.de>

syzbot reproduced following crash:

===============================================================================
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 9844 Comm: syz-executor.0 Not tainted 5.4.0-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:__lock_acquire+0x1254/0x4a00 kernel/locking/lockdep.c:3828
Code: 00 0f 85 96 24 00 00 48 81 c4 f0 00 00 00 5b 41 5c 41 5d 41 5e 41
5f 5d c3 48 b8 00 00 00 00 00 fc ff df 4c 89 f2 48 c1 ea 03 <80> 3c 02
00 0f 85 0b 28 00 00 49 81 3e 20 19 78 8a 0f 84 5f ee ff
RSP: 0018:ffff888099c3fb48 EFLAGS: 00010006
RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000218 RSI: 0000000000000000 RDI: 0000000000000001
RBP: ffff888099c3fc60 R08: 0000000000000001 R09: 0000000000000001
R10: fffffbfff146e1d0 R11: ffff888098720400 R12: 00000000000010c0
R13: 0000000000000000 R14: 00000000000010c0 R15: 0000000000000000
FS:  00007f0559e98700(0000) GS:ffff8880ae800000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fe4d89e0000 CR3: 0000000099606000 CR4: 00000000001406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4485
 __raw_spin_lock_bh include/linux/spinlock_api_smp.h:135 [inline]
 _raw_spin_lock_bh+0x33/0x50 kernel/locking/spinlock.c:175
 spin_lock_bh include/linux/spinlock.h:343 [inline]
 j1939_jsk_del+0x32/0x210 net/can/j1939/socket.c:89
 j1939_sk_bind+0x2ea/0x8f0 net/can/j1939/socket.c:448
 __sys_bind+0x239/0x290 net/socket.c:1648
 __do_sys_bind net/socket.c:1659 [inline]
 __se_sys_bind net/socket.c:1657 [inline]
 __x64_sys_bind+0x73/0xb0 net/socket.c:1657
 do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x45a679
Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89
f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
f0 ff ff 0f 83 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007f0559e97c78 EFLAGS: 00000246 ORIG_RAX: 0000000000000031
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000045a679
RDX: 0000000000000018 RSI: 0000000020000240 RDI: 0000000000000003
RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f0559e986d4
R13: 00000000004c09e9 R14: 00000000004d37d0 R15: 00000000ffffffff
Modules linked in:
------------[ cut here ]------------
WARNING: CPU: 0 PID: 9844 at kernel/locking/mutex.c:1419
mutex_trylock+0x279/0x2f0 kernel/locking/mutex.c:1427
===============================================================================

This issues was caused by null pointer deference. Where j1939_sk_bind()
was using currently not existing priv.

Possible scenario may look as following:
cpu0                                    cpu1
bind()
                                        bind()
 j1939_sk_bind()
                                         j1939_sk_bind()
  priv = jsk->priv;
                                         priv = jsk->priv;
  lock_sock(sock->sk);
  priv = j1939_netdev_start(ndev);
  j1939_jsk_add(priv, jsk);
    jsk->priv = priv;
  relase_sock(sock->sk);
                                         lock_sock(sock->sk);
                                         j1939_jsk_del(priv, jsk);
                                         ..... ooops ......

With this patch we move "priv = jsk->priv;" after the lock, to avoid
assigning of wrong priv pointer.

Reported-by: syzbot+99e9e1b200a1e363237d@syzkaller.appspotmail.com
Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: linux-stable <stable@vger.kernel.org> # >= v5.4
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 net/can/j1939/socket.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/net/can/j1939/socket.c b/net/can/j1939/socket.c
index de09b0a65791..f7587428febd 100644
--- a/net/can/j1939/socket.c
+++ b/net/can/j1939/socket.c
@@ -423,9 +423,9 @@ static int j1939_sk_bind(struct socket *sock, struct sockaddr *uaddr, int len)
 {
 	struct sockaddr_can *addr = (struct sockaddr_can *)uaddr;
 	struct j1939_sock *jsk = j1939_sk(sock->sk);
-	struct j1939_priv *priv = jsk->priv;
-	struct sock *sk = sock->sk;
-	struct net *net = sock_net(sk);
+	struct j1939_priv *priv;
+	struct sock *sk;
+	struct net *net;
 	int ret = 0;
 
 	ret = j1939_sk_sanity_check(addr, len);
@@ -434,6 +434,10 @@ static int j1939_sk_bind(struct socket *sock, struct sockaddr *uaddr, int len)
 
 	lock_sock(sock->sk);
 
+	priv = jsk->priv;
+	sk = sock->sk;
+	net = sock_net(sk);
+
 	/* Already bound to an interface? */
 	if (jsk->state & J1939_SOCK_BOUND) {
 		/* A re-bind() to a different interface is not
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 04/13] can: j1939: fix address claim code example
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (2 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 03/13] can: j1939: j1939_sk_bind(): take priv after lock is held Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 05/13] can: xilinx_can: Fix missing Rx can packets on CANFD2.0 Marc Kleine-Budde
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel, Marc Kleine-Budde, Oleksij Rempel

During development the define J1939_PGN_ADDRESS_REQUEST was renamed to
J1939_PGN_REQUEST. It was forgotten to adjust the documentation
accordingly.

This patch fixes the name of the symbol.

Reported-by: https://github.com/linux-can/can-utils/issues/159#issuecomment-556538798
Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Cc: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 Documentation/networking/j1939.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/networking/j1939.rst b/Documentation/networking/j1939.rst
index dc60b13fcd09..f5be243d250a 100644
--- a/Documentation/networking/j1939.rst
+++ b/Documentation/networking/j1939.rst
@@ -339,7 +339,7 @@ To claim an address following code example can be used:
 			.pgn = J1939_PGN_ADDRESS_CLAIMED,
 			.pgn_mask = J1939_PGN_PDU1_MAX,
 		}, {
-			.pgn = J1939_PGN_ADDRESS_REQUEST,
+			.pgn = J1939_PGN_REQUEST,
 			.pgn_mask = J1939_PGN_PDU1_MAX,
 		}, {
 			.pgn = J1939_PGN_ADDRESS_COMMANDED,
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 05/13] can: xilinx_can: Fix missing Rx can packets on CANFD2.0
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (3 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 04/13] can: j1939: fix address claim code example Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 06/13] can: flexcan: fix possible deadlock and out-of-order reception after wakeup Marc Kleine-Budde
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Srinivas Neeli, Michal Simek,
	Naga Sureshkumar Relli, linux-stable, Marc Kleine-Budde

From: Srinivas Neeli <srinivas.neeli@xilinx.com>

CANFD2.0 core uses BRAM for storing acceptance filter ID(AFID) and MASK
(AFMASK)registers. So by default AFID and AFMASK registers contain random
data. Due to random data, we are not able to receive all CAN ids.

Initializing AFID and AFMASK registers with Zero before enabling
acceptance filter to receive all packets irrespective of ID and Mask.

Fixes: 0db9071353a0 ("can: xilinx: add can 2.0 support")
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com>
Reviewed-by: Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>
Cc: linux-stable <stable@vger.kernel.org> # >= v5.0
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/xilinx_can.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c
index 464af939cd8a..c1dbab8c896d 100644
--- a/drivers/net/can/xilinx_can.c
+++ b/drivers/net/can/xilinx_can.c
@@ -60,6 +60,8 @@ enum xcan_reg {
 	XCAN_TXMSG_BASE_OFFSET	= 0x0100, /* TX Message Space */
 	XCAN_RXMSG_BASE_OFFSET	= 0x1100, /* RX Message Space */
 	XCAN_RXMSG_2_BASE_OFFSET	= 0x2100, /* RX Message Space */
+	XCAN_AFR_2_MASK_OFFSET	= 0x0A00, /* Acceptance Filter MASK */
+	XCAN_AFR_2_ID_OFFSET	= 0x0A04, /* Acceptance Filter ID */
 };
 
 #define XCAN_FRAME_ID_OFFSET(frame_base)	((frame_base) + 0x00)
@@ -1809,6 +1811,11 @@ static int xcan_probe(struct platform_device *pdev)
 
 	pm_runtime_put(&pdev->dev);
 
+	if (priv->devtype.flags & XCAN_FLAG_CANFD_2) {
+		priv->write_reg(priv, XCAN_AFR_2_ID_OFFSET, 0x00000000);
+		priv->write_reg(priv, XCAN_AFR_2_MASK_OFFSET, 0x00000000);
+	}
+
 	netdev_dbg(ndev, "reg_base=0x%p irq=%d clock=%d, tx buffers: actual %d, using %d\n",
 		   priv->reg_base, ndev->irq, priv->can.clock.freq,
 		   hw_tx_max, priv->tx_max);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 06/13] can: flexcan: fix possible deadlock and out-of-order reception after wakeup
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (4 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 05/13] can: xilinx_can: Fix missing Rx can packets on CANFD2.0 Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 07/13] can: flexcan: add low power enter/exit acknowledgment helper Marc Kleine-Budde
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Sean Nyekjaer, Joakim Zhang,
	linux-stable, Marc Kleine-Budde

From: Sean Nyekjaer <sean@geanix.com>

When suspending, and there is still CAN traffic on the interfaces the
flexcan immediately wakes the platform again. As it should :-). But it
throws this error msg:

[ 3169.378661] PM: noirq suspend of devices failed

On the way down to suspend the interface that throws the error message
calls flexcan_suspend() but fails to call flexcan_noirq_suspend(). That
means flexcan_enter_stop_mode() is called, but on the way out of suspend
the driver only calls flexcan_resume() and skips flexcan_noirq_resume(),
thus it doesn't call flexcan_exit_stop_mode(). This leaves the flexcan
in stop mode, and with the current driver it can't recover from this
even with a soft reboot, it requires a hard reboot.

This patch fixes the deadlock when using self wakeup, by calling
flexcan_exit_stop_mode() from flexcan_resume() instead of
flexcan_noirq_resume().

This also fixes another issue: CAN frames are received out-of-order in
first IRQ handler run after wakeup.

The problem is that the wakeup latency from frame reception to the IRQ
handler (where the CAN frames are sorted by timestamp) is much bigger
than the time stamp counter wrap around time. This means it's
impossible to sort the CAN frames by timestamp.

The reason is that the controller exits stop mode during noirq resume,
which means it receives frames immediately, but interrupt handling is
still not possible.

So exit stop mode during resume stage instead of noirq resume fixes this
issue.

Fixes: de3578c198c6 ("can: flexcan: add self wakeup support")
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Tested-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Cc: linux-stable <stable@vger.kernel.org> # >= v5.0
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/flexcan.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index a929cdda9ab2..b6f675a5e2d9 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -1722,6 +1722,9 @@ static int __maybe_unused flexcan_resume(struct device *device)
 		netif_start_queue(dev);
 		if (device_may_wakeup(device)) {
 			disable_irq_wake(dev->irq);
+			err = flexcan_exit_stop_mode(priv);
+			if (err)
+				return err;
 		} else {
 			err = pm_runtime_force_resume(device);
 			if (err)
@@ -1767,14 +1770,9 @@ static int __maybe_unused flexcan_noirq_resume(struct device *device)
 {
 	struct net_device *dev = dev_get_drvdata(device);
 	struct flexcan_priv *priv = netdev_priv(dev);
-	int err;
 
-	if (netif_running(dev) && device_may_wakeup(device)) {
+	if (netif_running(dev) && device_may_wakeup(device))
 		flexcan_enable_wakeup_irq(priv, false);
-		err = flexcan_exit_stop_mode(priv);
-		if (err)
-			return err;
-	}
 
 	return 0;
 }
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 07/13] can: flexcan: add low power enter/exit acknowledgment helper
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (5 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 06/13] can: flexcan: fix possible deadlock and out-of-order reception after wakeup Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 08/13] can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment Marc Kleine-Budde
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Joakim Zhang, Sean Nyekjaer, Marc Kleine-Budde

From: Joakim Zhang <qiangqing.zhang@nxp.com>

The MCR[LPMACK] read-only bit indicates that FlexCAN is in a lower-power
mode (Disabled mode, Doze mode, Stop mode).

The CPU can poll this bit to know when FlexCAN has actually entered low
power mode. The low power enter/exit acknowledgment helper will reduce
code duplication for disabled mode, doze mode and stop mode.

Tested-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/flexcan.c | 46 +++++++++++++++++++++++++--------------
 1 file changed, 30 insertions(+), 16 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index b6f675a5e2d9..9f3a5e56fc37 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -389,6 +389,34 @@ static struct flexcan_mb __iomem *flexcan_get_mb(const struct flexcan_priv *priv
 		(&priv->regs->mb[bank][priv->mb_size * mb_index]);
 }
 
+static int flexcan_low_power_enter_ack(struct flexcan_priv *priv)
+{
+	struct flexcan_regs __iomem *regs = priv->regs;
+	unsigned int timeout = FLEXCAN_TIMEOUT_US / 10;
+
+	while (timeout-- && !(priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
+		udelay(10);
+
+	if (!(priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
+		return -ETIMEDOUT;
+
+	return 0;
+}
+
+static int flexcan_low_power_exit_ack(struct flexcan_priv *priv)
+{
+	struct flexcan_regs __iomem *regs = priv->regs;
+	unsigned int timeout = FLEXCAN_TIMEOUT_US / 10;
+
+	while (timeout-- && (priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
+		udelay(10);
+
+	if (priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK)
+		return -ETIMEDOUT;
+
+	return 0;
+}
+
 static void flexcan_enable_wakeup_irq(struct flexcan_priv *priv, bool enable)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
@@ -506,39 +534,25 @@ static inline int flexcan_transceiver_disable(const struct flexcan_priv *priv)
 static int flexcan_chip_enable(struct flexcan_priv *priv)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
-	unsigned int timeout = FLEXCAN_TIMEOUT_US / 10;
 	u32 reg;
 
 	reg = priv->read(&regs->mcr);
 	reg &= ~FLEXCAN_MCR_MDIS;
 	priv->write(reg, &regs->mcr);
 
-	while (timeout-- && (priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
-		udelay(10);
-
-	if (priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK)
-		return -ETIMEDOUT;
-
-	return 0;
+	return flexcan_low_power_exit_ack(priv);
 }
 
 static int flexcan_chip_disable(struct flexcan_priv *priv)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
-	unsigned int timeout = FLEXCAN_TIMEOUT_US / 10;
 	u32 reg;
 
 	reg = priv->read(&regs->mcr);
 	reg |= FLEXCAN_MCR_MDIS;
 	priv->write(reg, &regs->mcr);
 
-	while (timeout-- && !(priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
-		udelay(10);
-
-	if (!(priv->read(&regs->mcr) & FLEXCAN_MCR_LPM_ACK))
-		return -ETIMEDOUT;
-
-	return 0;
+	return flexcan_low_power_enter_ack(priv);
 }
 
 static int flexcan_chip_freeze(struct flexcan_priv *priv)
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 08/13] can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (6 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 07/13] can: flexcan: add low power enter/exit acknowledgment helper Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 09/13] can: m_can: tcan4x5x: add required delay after reset Marc Kleine-Budde
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Joakim Zhang, Sean Nyekjaer,
	linux-stable, Marc Kleine-Budde

From: Joakim Zhang <qiangqing.zhang@nxp.com>

Stop Mode is entered when Stop Mode is requested at chip level and
MCR[LPM_ACK] is asserted by the FlexCAN.

Double check with IP owner, the MCR[LPM_ACK] bit should be polled for
stop mode acknowledgment, not the acknowledgment from chip level which
is used to gate flexcan clocks.

This patch depends on:

    b7603d080ffc ("can: flexcan: add low power enter/exit acknowledgment helper")

Fixes: 5f186c257fa4 (can: flexcan: fix stop mode acknowledgment)
Tested-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Cc: linux-stable <stable@vger.kernel.org> # >= v5.0
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/flexcan.c | 17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 9f3a5e56fc37..94d10ec954a0 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -435,7 +435,6 @@ static void flexcan_enable_wakeup_irq(struct flexcan_priv *priv, bool enable)
 static inline int flexcan_enter_stop_mode(struct flexcan_priv *priv)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
-	unsigned int ackval;
 	u32 reg_mcr;
 
 	reg_mcr = priv->read(&regs->mcr);
@@ -446,36 +445,24 @@ static inline int flexcan_enter_stop_mode(struct flexcan_priv *priv)
 	regmap_update_bits(priv->stm.gpr, priv->stm.req_gpr,
 			   1 << priv->stm.req_bit, 1 << priv->stm.req_bit);
 
-	/* get stop acknowledgment */
-	if (regmap_read_poll_timeout(priv->stm.gpr, priv->stm.ack_gpr,
-				     ackval, ackval & (1 << priv->stm.ack_bit),
-				     0, FLEXCAN_TIMEOUT_US))
-		return -ETIMEDOUT;
-
-	return 0;
+	return flexcan_low_power_enter_ack(priv);
 }
 
 static inline int flexcan_exit_stop_mode(struct flexcan_priv *priv)
 {
 	struct flexcan_regs __iomem *regs = priv->regs;
-	unsigned int ackval;
 	u32 reg_mcr;
 
 	/* remove stop request */
 	regmap_update_bits(priv->stm.gpr, priv->stm.req_gpr,
 			   1 << priv->stm.req_bit, 0);
 
-	/* get stop acknowledgment */
-	if (regmap_read_poll_timeout(priv->stm.gpr, priv->stm.ack_gpr,
-				     ackval, !(ackval & (1 << priv->stm.ack_bit)),
-				     0, FLEXCAN_TIMEOUT_US))
-		return -ETIMEDOUT;
 
 	reg_mcr = priv->read(&regs->mcr);
 	reg_mcr &= ~FLEXCAN_MCR_SLF_WAK;
 	priv->write(reg_mcr, &regs->mcr);
 
-	return 0;
+	return flexcan_low_power_exit_ack(priv);
 }
 
 static inline void flexcan_error_irq_enable(const struct flexcan_priv *priv)
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 09/13] can: m_can: tcan4x5x: add required delay after reset
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (7 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 08/13] can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 10/13] dt-bindings: can: tcan4x5x: reset pin is active high Marc Kleine-Budde
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Sean Nyekjaer, Dan Murphy,
	linux-stable, Marc Kleine-Budde

From: Sean Nyekjaer <sean@geanix.com>

According to section "8.3.8 RST Pin" in the datasheet we are required to
wait >700us after the device is reset.

Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Acked-by: Dan Murphy <dmurphy@ti.com>
Cc: linux-stable <stable@vger.kernel.org> # >= v5.4
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/tcan4x5x.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/can/m_can/tcan4x5x.c b/drivers/net/can/m_can/tcan4x5x.c
index 3db619209fe1..d5d4bfa9c8fd 100644
--- a/drivers/net/can/m_can/tcan4x5x.c
+++ b/drivers/net/can/m_can/tcan4x5x.c
@@ -354,6 +354,8 @@ static int tcan4x5x_parse_config(struct m_can_classdev *cdev)
 	if (IS_ERR(tcan4x5x->reset_gpio))
 		tcan4x5x->reset_gpio = NULL;
 
+	usleep_range(700, 1000);
+
 	tcan4x5x->device_state_gpio = devm_gpiod_get_optional(cdev->dev,
 							      "device-state",
 							      GPIOD_IN);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 10/13] dt-bindings: can: tcan4x5x: reset pin is active high
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (8 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 09/13] can: m_can: tcan4x5x: add required delay after reset Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 11/13] dt-bindings: tcan4x5x: Make wake-gpio an optional gpio Marc Kleine-Budde
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Sean Nyekjaer, Rob Herring, Marc Kleine-Budde

From: Sean Nyekjaer <sean@geanix.com>

Change the reset pin example to active high to be in line with
the datasheet

Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 Documentation/devicetree/bindings/net/can/tcan4x5x.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/net/can/tcan4x5x.txt b/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
index 27e1b4cebfbd..e8aa21d9174e 100644
--- a/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
+++ b/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
@@ -36,5 +36,5 @@ tcan4x5x: tcan4x5x@0 {
 		interrupts = <14 GPIO_ACTIVE_LOW>;
 		device-state-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
 		device-wake-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
-		reset-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+		reset-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
 };
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 11/13] dt-bindings: tcan4x5x: Make wake-gpio an optional gpio
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (9 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 10/13] dt-bindings: can: tcan4x5x: reset pin is active high Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 12/13] can: tcan45x: Make wake-up GPIO an optional GPIO Marc Kleine-Budde
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Dan Murphy, Rob Herring, Sean Nyekjaer,
	Marc Kleine-Budde

From: Dan Murphy <dmurphy@ti.com>

The wake-up of the device can be configured as an optional feature of
the device. Move the wake-up gpio from a requried property to an
optional property.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Cc: Rob Herring <robh@kernel.org>
Reviewed-by: Sean Nyekjaer <sean@geanix.com>
Tested-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 Documentation/devicetree/bindings/net/can/tcan4x5x.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/net/can/tcan4x5x.txt b/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
index e8aa21d9174e..6bdcc3f84bd3 100644
--- a/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
+++ b/Documentation/devicetree/bindings/net/can/tcan4x5x.txt
@@ -10,7 +10,6 @@ Required properties:
 	- #size-cells: 0
 	- spi-max-frequency: Maximum frequency of the SPI bus the chip can
 			     operate at should be less than or equal to 18 MHz.
-	- device-wake-gpios: Wake up GPIO to wake up the TCAN device.
 	- interrupt-parent: the phandle to the interrupt controller which provides
                     the interrupt.
 	- interrupts: interrupt specification for data-ready.
@@ -23,6 +22,7 @@ Optional properties:
 		       reset.
 	- device-state-gpios: Input GPIO that indicates if the device is in
 			      a sleep state or if the device is active.
+	- device-wake-gpios: Wake up GPIO to wake up the TCAN device.
 
 Example:
 tcan4x5x: tcan4x5x@0 {
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 12/13] can: tcan45x: Make wake-up GPIO an optional GPIO
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (10 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 11/13] dt-bindings: tcan4x5x: Make wake-gpio an optional gpio Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 16:32 ` [PATCH 13/13] can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices Marc Kleine-Budde
  2019-12-09 17:28 ` pull-request: can 2019-12-08 David Miller
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Dan Murphy, Sean Nyekjaer, Marc Kleine-Budde

From: Dan Murphy <dmurphy@ti.com>

The device has the ability to disable the wake-up pin option. The
wake-up pin can be either force to GND or Vsup and does not have to be
tied to a GPIO. In order for the device to not use the wake-up feature
write the register to disable the WAKE_CONFIG option.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Cc: Sean Nyekjaer <sean@geanix.com>
Reviewed-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/m_can/tcan4x5x.c | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/drivers/net/can/m_can/tcan4x5x.c b/drivers/net/can/m_can/tcan4x5x.c
index d5d4bfa9c8fd..4e1789ea2bc3 100644
--- a/drivers/net/can/m_can/tcan4x5x.c
+++ b/drivers/net/can/m_can/tcan4x5x.c
@@ -101,6 +101,8 @@
 #define TCAN4X5X_MODE_STANDBY BIT(6)
 #define TCAN4X5X_MODE_NORMAL BIT(7)
 
+#define TCAN4X5X_DISABLE_WAKE_MSK	(BIT(31) | BIT(30))
+
 #define TCAN4X5X_SW_RESET BIT(2)
 
 #define TCAN4X5X_MCAN_CONFIGURED BIT(5)
@@ -338,6 +340,14 @@ static int tcan4x5x_init(struct m_can_classdev *cdev)
 	return ret;
 }
 
+static int tcan4x5x_disable_wake(struct m_can_classdev *cdev)
+{
+	struct tcan4x5x_priv *tcan4x5x = cdev->device_data;
+
+	return regmap_update_bits(tcan4x5x->regmap, TCAN4X5X_CONFIG,
+				  TCAN4X5X_DISABLE_WAKE_MSK, 0x00);
+}
+
 static int tcan4x5x_parse_config(struct m_can_classdev *cdev)
 {
 	struct tcan4x5x_priv *tcan4x5x = cdev->device_data;
@@ -345,8 +355,10 @@ static int tcan4x5x_parse_config(struct m_can_classdev *cdev)
 	tcan4x5x->device_wake_gpio = devm_gpiod_get(cdev->dev, "device-wake",
 						    GPIOD_OUT_HIGH);
 	if (IS_ERR(tcan4x5x->device_wake_gpio)) {
-		dev_err(cdev->dev, "device-wake gpio not defined\n");
-		return -EINVAL;
+		if (PTR_ERR(tcan4x5x->power) == -EPROBE_DEFER)
+			return -EPROBE_DEFER;
+
+		tcan4x5x_disable_wake(cdev);
 	}
 
 	tcan4x5x->reset_gpio = devm_gpiod_get_optional(cdev->dev, "reset",
@@ -430,10 +442,6 @@ static int tcan4x5x_can_probe(struct spi_device *spi)
 
 	spi_set_drvdata(spi, priv);
 
-	ret = tcan4x5x_parse_config(mcan_class);
-	if (ret)
-		goto out_clk;
-
 	/* Configure the SPI bus */
 	spi->bits_per_word = 32;
 	ret = spi_setup(spi);
@@ -443,6 +451,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi)
 	priv->regmap = devm_regmap_init(&spi->dev, &tcan4x5x_bus,
 					&spi->dev, &tcan4x5x_regmap);
 
+	ret = tcan4x5x_parse_config(mcan_class);
+	if (ret)
+		goto out_clk;
+
 	tcan4x5x_power_enable(priv->power, 1);
 
 	ret = m_can_class_register(mcan_class);
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 13/13] can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (11 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 12/13] can: tcan45x: Make wake-up GPIO an optional GPIO Marc Kleine-Budde
@ 2019-12-09 16:32 ` Marc Kleine-Budde
  2019-12-09 17:28 ` pull-request: can 2019-12-08 David Miller
  13 siblings, 0 replies; 15+ messages in thread
From: Marc Kleine-Budde @ 2019-12-09 16:32 UTC (permalink / raw)
  To: netdev
  Cc: davem, linux-can, kernel, Xiaolong Huang, linux-stable,
	Marc Kleine-Budde

From: Xiaolong Huang <butterflyhuangxx@gmail.com>

Uninitialized Kernel memory can leak to USB devices.

Fix this by using kzalloc() instead of kmalloc().

Signed-off-by: Xiaolong Huang <butterflyhuangxx@gmail.com>
Fixes: 7259124eac7d ("can: kvaser_usb: Split driver into kvaser_usb_core.c and kvaser_usb_leaf.c")
Cc: linux-stable <stable@vger.kernel.org> # >= v4.19
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c
index 07d2f3aa2c02..ae4c37e1bb75 100644
--- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c
+++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c
@@ -608,7 +608,7 @@ static int kvaser_usb_leaf_simple_cmd_async(struct kvaser_usb_net_priv *priv,
 	struct kvaser_cmd *cmd;
 	int err;
 
-	cmd = kmalloc(sizeof(*cmd), GFP_ATOMIC);
+	cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC);
 	if (!cmd)
 		return -ENOMEM;
 
@@ -1140,7 +1140,7 @@ static int kvaser_usb_leaf_set_opt_mode(const struct kvaser_usb_net_priv *priv)
 	struct kvaser_cmd *cmd;
 	int rc;
 
-	cmd = kmalloc(sizeof(*cmd), GFP_KERNEL);
+	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
 	if (!cmd)
 		return -ENOMEM;
 
@@ -1206,7 +1206,7 @@ static int kvaser_usb_leaf_flush_queue(struct kvaser_usb_net_priv *priv)
 	struct kvaser_cmd *cmd;
 	int rc;
 
-	cmd = kmalloc(sizeof(*cmd), GFP_KERNEL);
+	cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
 	if (!cmd)
 		return -ENOMEM;
 
-- 
2.24.0

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: pull-request: can 2019-12-08
  2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
                   ` (12 preceding siblings ...)
  2019-12-09 16:32 ` [PATCH 13/13] can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices Marc Kleine-Budde
@ 2019-12-09 17:28 ` David Miller
  13 siblings, 0 replies; 15+ messages in thread
From: David Miller @ 2019-12-09 17:28 UTC (permalink / raw)
  To: mkl; +Cc: netdev, linux-can, kernel

From: Marc Kleine-Budde <mkl@pengutronix.de>
Date: Mon,  9 Dec 2019 17:32:43 +0100

> this is a pull request of 13 patches for net/master.

Pulled, thanks Marc.

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-12-09 17:28 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-09 16:32 pull-request: can 2019-12-08 Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 01/13] MAINTAINERS: Add myself as a maintainer for MMIO m_can Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 02/13] MAINTAINERS: Add myself as a maintainer for TCAN4x5x Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 03/13] can: j1939: j1939_sk_bind(): take priv after lock is held Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 04/13] can: j1939: fix address claim code example Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 05/13] can: xilinx_can: Fix missing Rx can packets on CANFD2.0 Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 06/13] can: flexcan: fix possible deadlock and out-of-order reception after wakeup Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 07/13] can: flexcan: add low power enter/exit acknowledgment helper Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 08/13] can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 09/13] can: m_can: tcan4x5x: add required delay after reset Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 10/13] dt-bindings: can: tcan4x5x: reset pin is active high Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 11/13] dt-bindings: tcan4x5x: Make wake-gpio an optional gpio Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 12/13] can: tcan45x: Make wake-up GPIO an optional GPIO Marc Kleine-Budde
2019-12-09 16:32 ` [PATCH 13/13] can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB devices Marc Kleine-Budde
2019-12-09 17:28 ` pull-request: can 2019-12-08 David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.