summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/char/diag/diagfwd_hsic.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/char/diag/diagfwd_hsic.c b/drivers/char/diag/diagfwd_hsic.c
index 1f161777aca5..87942d8f6341 100644
--- a/drivers/char/diag/diagfwd_hsic.c
+++ b/drivers/char/diag/diagfwd_hsic.c
@@ -328,13 +328,16 @@ static void hsic_read_complete_work_fn(struct work_struct *work)
read_complete_work);
struct diag_hsic_buf_tbl_t *item;
- item = hsic_buf_tbl_pop(ch);
- if (item) {
- if (diag_remote_dev_read_done(ch->dev_id, item->buf, item->len))
- goto fail;
- }
+ do {
+ item = hsic_buf_tbl_pop(ch);
+ if (item) {
+ if (diag_remote_dev_read_done(ch->dev_id,
+ item->buf, item->len))
+ goto fail;
+ kfree(item);
+ }
+ } while (item);
- kfree(item);
return;
fail: