mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-07 14:24:18 +08:00
media: rcar-vin: Free buffers with error if hardware stop fails
The driver already has logic to detect if it fails to stop properly and report this error to the user. The driver however did not report the unused buffers or buffers given to the hardware (if any) with an error, the buffers where instead returned to user-space in the active state. Build on the existing detection of the error condition and correctly return the buffers with an error if it triggers. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
0bbaec386c
commit
dca7cc1cbd
@ -1371,6 +1371,16 @@ void rvin_stop_streaming(struct rvin_dev *vin)
|
||||
|
||||
spin_unlock_irqrestore(&vin->qlock, flags);
|
||||
|
||||
/* If something went wrong, free buffers with an error. */
|
||||
if (!buffersFreed) {
|
||||
return_unused_buffers(vin, VB2_BUF_STATE_ERROR);
|
||||
for (i = 0; i < HW_BUFFER_NUM; i++) {
|
||||
if (vin->buf_hw[i].buffer)
|
||||
vb2_buffer_done(&vin->buf_hw[i].buffer->vb2_buf,
|
||||
VB2_BUF_STATE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
rvin_set_stream(vin, 0);
|
||||
|
||||
/* disable interrupts */
|
||||
|
Loading…
Reference in New Issue
Block a user