--- /dev/null
+From e38910c0072b541a91954682c8b074a93e57c09b Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Wed, 7 Jun 2023 09:27:08 +0200
+Subject: can: isotp: isotp_sendmsg(): fix return error fix on TX path
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit e38910c0072b541a91954682c8b074a93e57c09b upstream.
+
+With commit d674a8f123b4 ("can: isotp: isotp_sendmsg(): fix return
+error on FC timeout on TX path") the missing correct return value in
+the case of a protocol error was introduced.
+
+But the way the error value has been read and sent to the user space
+does not follow the common scheme to clear the error after reading
+which is provided by the sock_error() function. This leads to an error
+report at the following write() attempt although everything should be
+working.
+
+Fixes: d674a8f123b4 ("can: isotp: isotp_sendmsg(): fix return error on FC timeout on TX path")
+Reported-by: Carsten Schmidt <carsten.schmidt-achim@t-online.de>
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Link: https://lore.kernel.org/all/20230607072708.38809-1-socketcan@hartkopp.net
+Cc: stable@vger.kernel.org
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/can/isotp.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/net/can/isotp.c
++++ b/net/can/isotp.c
+@@ -990,8 +990,9 @@ static int isotp_sendmsg(struct socket *
+ /* wait for complete transmission of current pdu */
+ wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);
+
+- if (sk->sk_err)
+- return -sk->sk_err;
++ err = sock_error(sk);
++ if (err)
++ return err;
+ }
+
+ return size;