can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport
authorZhang Changzhong <zhangchangzhong@huawei.com>
Thu, 28 Oct 2021 14:38:25 +0000 (22:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:03 +0000 (19:16 +0100)
commit c0f49d98006f2db3333b917caac65bce2af9865c upstream.

This patch prevents BAM transport from being closed by receiving abort
message, as specified in SAE-J1939-82 2015 (A.3.3 Row 4).

Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
Link: https://lore.kernel.org/all/1635431907-15617-2-git-send-email-zhangchangzhong@huawei.com
Cc: stable@vger.kernel.org
Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/can/j1939/transport.c

index 6c0a0eb..05eb3d0 100644 (file)
@@ -2085,6 +2085,12 @@ static void j1939_tp_cmd_recv(struct j1939_priv *priv, struct sk_buff *skb)
                break;
 
        case J1939_ETP_CMD_ABORT: /* && J1939_TP_CMD_ABORT */
+               if (j1939_cb_is_broadcast(skcb)) {
+                       netdev_err_once(priv->ndev, "%s: abort to broadcast (%02x), ignoring!\n",
+                                       __func__, skcb->addr.sa);
+                       return;
+               }
+
                if (j1939_tp_im_transmitter(skcb))
                        j1939_xtp_rx_abort(priv, skb, true);