From: Marc Kleine-Budde <mkl@pengutronix.de> To: linux-can@vger.kernel.org Cc: kernel@pengutronix.de, Oliver Hartkopp <socketcan@hartkopp.net>, Thomas Wagner <thwa1@web.de>, Marc Kleine-Budde <mkl@pengutronix.de> Subject: [net-rfc 09/16] can: isotp: enable RX timeout handling in listen-only mode Date: Mon, 19 Oct 2020 21:05:17 +0200 Message-ID: <20201019190524.1285319-10-mkl@pengutronix.de> (raw) In-Reply-To: <20201019190524.1285319-1-mkl@pengutronix.de> From: Oliver Hartkopp <socketcan@hartkopp.net> As reported by Thomas Wagner: https://github.com/hartkopp/can-isotp/issues/34 the timeout handling for data frames is not enabled when the isotp socket is used in listen-only mode (sockopt CAN_ISOTP_LISTEN_MODE). This mode is enabled by the isotpsniffer application which therefore became inconsistend with the strict rx timeout rules when running the isotp protocol in the operational mode. This patch fixes this inconsistency by moving the return condition for the listen-only mode behind the timeout handling code. Reported-by: Thomas Wagner <thwa1@web.de> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Fixes: e057dd3fc20f ("can: add ISO 15765-2:2016 transport protocol") Link: https://github.com/hartkopp/can-isotp/issues/34 Link: https://lore.kernel.org/r/20201019120229.89326-1-socketcan@hartkopp.net Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> --- net/can/isotp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/can/isotp.c b/net/can/isotp.c index 4c2062875893..a79287ef86da 100644 --- a/net/can/isotp.c +++ b/net/can/isotp.c @@ -569,10 +569,6 @@ static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, return 0; } - /* no creation of flow control frames */ - if (so->opt.flags & CAN_ISOTP_LISTEN_MODE) - return 0; - /* perform blocksize handling, if enabled */ if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) { /* start rx timeout watchdog */ @@ -581,6 +577,10 @@ static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, return 0; } + /* no creation of flow control frames */ + if (so->opt.flags & CAN_ISOTP_LISTEN_MODE) + return 0; + /* we reached the specified blocksize so->rxfc.bs */ isotp_send_fc(sk, ae, ISOTP_FC_CTS); return 0; -- 2.28.0
next prev parent reply index Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-19 19:05 [RFC]: can 2020-10-19 Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 01/16] can: proc: can_remove_proc(): silence remove_proc_entry warning Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 02/16] can: rx-offload: don't call kfree_skb() from IRQ context Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 03/16] can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard " Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 04/16] can: dev: can_get_len(): add a helper function to get the correct length of Classical frames Marc Kleine-Budde 2020-10-19 20:35 ` Oliver Hartkopp 2020-10-20 6:35 ` Marc Kleine-Budde 2020-10-20 11:30 ` Vincent Mailhol 2020-10-20 11:48 ` Marc Kleine-Budde 2020-10-20 12:38 ` Oliver Hartkopp 2020-10-20 15:02 ` Marc Kleine-Budde 2020-10-20 16:07 ` Vincent Mailhol 2020-10-20 17:04 ` Oliver Hartkopp 2020-10-20 18:50 ` Marc Kleine-Budde 2020-10-21 0:52 ` Vincent Mailhol 2020-10-21 6:23 ` Vincent MAILHOL 2020-10-21 7:11 ` Joakim Zhang 2020-10-21 7:21 ` Marc Kleine-Budde 2020-10-21 7:48 ` Joakim Zhang 2020-10-21 9:21 ` Oliver Hartkopp 2020-10-21 9:48 ` Oliver Hartkopp 2020-10-21 11:55 ` Vincent MAILHOL 2020-10-21 17:52 ` Oliver Hartkopp 2020-10-22 3:30 ` Vincent MAILHOL 2020-10-22 7:15 ` Oliver Hartkopp 2020-10-22 12:23 ` Vincent MAILHOL 2020-10-22 13:28 ` Oliver Hartkopp 2020-10-22 15:46 ` Vincent MAILHOL 2020-10-22 17:06 ` Oliver Hartkopp 2020-10-23 10:36 ` Vincent MAILHOL 2020-10-23 16:47 ` Oliver Hartkopp 2020-10-24 5:25 ` Vincent MAILHOL 2020-10-24 11:31 ` Oliver Hartkopp 2020-10-19 19:05 ` [net-rfc 05/16] can: dev: __can_get_echo_skb(): fix the returned length of CAN frame Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 06/16] can: can_create_echo_skb(): fix echo skb generation: always use skb_clone() Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 07/16] can: j1939: j1939_sk_bind(): return failure if netdev is down Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 08/16] can: isotp: Explain PDU in CAN_ISOTP help text Marc Kleine-Budde 2020-10-19 19:05 ` Marc Kleine-Budde [this message] 2020-10-19 19:05 ` [net-rfc 10/16] can: ti_hecc: add missed clk_disable_unprepare() in error path Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 11/16] can: xilinx_can: handle failure cases of pm_runtime_get_sync Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 12/16] can: peak_usb: fix timestamp wrapping Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 13/16] can: peak_canfd: fix echo management when loopback is on Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 14/16] can: mcp251xfd: mcp251xfd_regmap_crc_read(): increase severity of CRC read error messages Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 15/16] can: mcp251xfd: mcp251xfd_regmap_nocrc_read(): fix semicolon.cocci warnings Marc Kleine-Budde 2020-10-19 19:05 ` [net-rfc 16/16] can: mcp251xfd: remove unneeded break Marc Kleine-Budde
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201019190524.1285319-10-mkl@pengutronix.de \ --to=mkl@pengutronix.de \ --cc=kernel@pengutronix.de \ --cc=linux-can@vger.kernel.org \ --cc=socketcan@hartkopp.net \ --cc=thwa1@web.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-Can Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-can/0 linux-can/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-can linux-can/ https://lore.kernel.org/linux-can \ linux-can@vger.kernel.org public-inbox-index linux-can Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-can AGPL code for this site: git clone https://public-inbox.org/public-inbox.git