staging: nvec: Reject incomplete messages
Reject incomplete messages, causing the request to be transmitted again. This should fix various problems out there. Signed-off-by: Julian Andres Klode <jak@jak-linux.org> Acked-by: Marc Dietrich <marvin24@gmx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
8da7986343
commit
210ceb4f68
|
@ -439,11 +439,16 @@ static void nvec_tx_completed(struct nvec_chip *nvec)
|
||||||
*/
|
*/
|
||||||
static void nvec_rx_completed(struct nvec_chip *nvec)
|
static void nvec_rx_completed(struct nvec_chip *nvec)
|
||||||
{
|
{
|
||||||
if (nvec->rx->pos != nvec_msg_size(nvec->rx))
|
if (nvec->rx->pos != nvec_msg_size(nvec->rx)) {
|
||||||
dev_err(nvec->dev, "RX incomplete: Expected %u bytes, got %u\n",
|
dev_err(nvec->dev, "RX incomplete: Expected %u bytes, got %u\n",
|
||||||
(uint) nvec_msg_size(nvec->rx),
|
(uint) nvec_msg_size(nvec->rx),
|
||||||
(uint) nvec->rx->pos);
|
(uint) nvec->rx->pos);
|
||||||
|
|
||||||
|
nvec_msg_free(nvec, nvec->rx);
|
||||||
|
nvec->state = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock(&nvec->rx_lock);
|
spin_lock(&nvec->rx_lock);
|
||||||
|
|
||||||
/* add the received data to the work list
|
/* add the received data to the work list
|
||||||
|
|
Loading…
Reference in a new issue