From f0644715361abf12f4387084c1fe0f76a0c640ee Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Wed, 24 Aug 2016 15:31:27 -0700 Subject: diag: Add error handler to free buffers when fwd fails Forwarding the data from the MHI layer can fail if USB or MD is not connected. This change adds an error case to free the buffers if forwarding the data fails. CRs-Fixed: 1054875 Change-Id: I49ef2a32ffd731ab2875c941c9d11155f2aba9e2 Signed-off-by: Chris Lew --- drivers/char/diag/diagfwd_mhi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/char/diag/diagfwd_mhi.c b/drivers/char/diag/diagfwd_mhi.c index b8ed216faaf6..f7b1e98f22b0 100644 --- a/drivers/char/diag/diagfwd_mhi.c +++ b/drivers/char/diag/diagfwd_mhi.c @@ -404,8 +404,11 @@ static void mhi_read_done_work_fn(struct work_struct *work) * buffers here and do not forward them to the mux layer. */ if ((atomic_read(&(mhi_info->read_ch.opened)))) { - diag_remote_dev_read_done(mhi_info->dev_id, buf, + err = diag_remote_dev_read_done(mhi_info->dev_id, buf, result.bytes_xferd); + if (err) + mhi_buf_tbl_remove(mhi_info, TYPE_MHI_READ_CH, + buf, result.bytes_xferd); } else { mhi_buf_tbl_remove(mhi_info, TYPE_MHI_READ_CH, buf, result.bytes_xferd); -- cgit v1.2.3