From 70bace7e0c1c7c2f38ce8748b2e6fb375b5748f6 Mon Sep 17 00:00:00 2001 From: norly Date: Thu, 31 Jan 2019 01:49:33 +0100 Subject: [PATCH] Return cleanly in functions calling elm327_hw_failure() --- module/elmcan.c | 4 ++++ readme.rst | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/module/elmcan.c b/module/elmcan.c index fee83c5..854ff59 100644 --- a/module/elmcan.c +++ b/module/elmcan.c @@ -173,6 +173,7 @@ static void elm327_send(struct elmcan *elm, const void *buf, size_t len) if (actual < 0) { netdev_err(elm->dev, "Failed to write to tty %s.\n", elm->tty->name); elm327_hw_failure(elm); + return; } elm->txleft = len - actual; @@ -678,6 +679,7 @@ static void elm327_parse_rxbuf(struct elmcan *elm) */ pr_err("RX buffer overflow. Faulty ELM327 connected?\n"); elm327_hw_failure(elm); + return; } else if (len == elm->rxfill) { if (elm->state == ELM_RECEIVING && elm->rxbuf[elm->rxfill - 1] == ELM327_READY_CHAR) { @@ -983,6 +985,8 @@ static void elmcan_ldisc_tx_worker(struct work_struct *work) if (actual < 0) { netdev_err(elm->dev, "Failed to write to tty %s.\n", elm->tty->name); elm327_hw_failure(elm); + spin_unlock_bh(&elm->lock); + return; } elm->txleft -= actual; diff --git a/readme.rst b/readme.rst index d9eb5c1..7f708a1 100644 --- a/readme.rst +++ b/readme.rst @@ -260,8 +260,6 @@ incomplete) data frame:: To Do list for future development ---------------------------------- -- Stop current function when in ``elm327_panic()`` - - DMA capable rx/tx buffers - flushing of ``tx_work`` is too late in ``ldisc_close()`` -- 2.30.2