aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/nvec
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@jak-linux.org>2011-09-27 19:01:00 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-29 17:41:37 -0700
commit8da798634343de8dbb8c1593923f8368db69f838 (patch)
treed1be25cf1ce87714c46cfda17e2af29726108f34 /drivers/staging/nvec
parentstaging: nvec: Allow TX buffers only in the upper 75% of the pool (diff)
downloadlinux-dev-8da798634343de8dbb8c1593923f8368db69f838.tar.xz
linux-dev-8da798634343de8dbb8c1593923f8368db69f838.zip
staging: nvec: Handle filled up RX buffers
If no RX buffer is available in state 1, jump to state 0 again. This will produce an incredible amount of warnings, but it is not supposed to happen anyway. 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>
Diffstat (limited to 'drivers/staging/nvec')
-rw-r--r--drivers/staging/nvec/nvec.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index c05adcd7fbfd..e845f58a8d77 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -554,6 +554,11 @@ static irqreturn_t nvec_interrupt(int irq, void *dev)
nvec_invalid_flags(nvec, status, true);
} else {
nvec->rx = nvec_msg_alloc(nvec, NVEC_MSG_RX);
+ /* Should not happen in a normal world */
+ if (unlikely(nvec->rx == NULL)) {
+ nvec->state = 0;
+ break;
+ }
nvec->rx->data[0] = received;
nvec->rx->pos = 1;
nvec->state = 2;