Re: [PATCH] vb2: revert: vb2: allow requeuing buffers while streaming

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Moikka!

On 07/31/2015 05:43 PM, Sakari Ailus wrote:
Terve,

On Wed, Jul 29, 2015 at 06:29:05PM +0300, Antti Palosaari wrote:
commit ce0eff016f7272faa6dc6eec722b1ca1970ff9aa
[media] vb2: allow requeuing buffers while streaming

That commit causes buf_queue() called on infinity loop when
start_streaming() returns error. On that case resources are eaten
quickly and machine crashes.

Cc: Hans Verkuil <hverkuil@xxxxxxxxx>
Signed-off-by: Antti Palosaari <crope@xxxxxx>

Fixed by this patch in media-fixes:

commit 6d058c5643e16779ae4c001d2e893c140940e48f
Author: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
Date:   Fri Jul 3 04:37:07 2015 -0300

     [media] vb2: Only requeue buffers immediately once streaming is started

     Buffers can be returned back to videobuf2 in driver's streamon handler. In
     this case vb2_buffer_done() with buffer state VB2_BUF_STATE_QUEUED will
     cause the driver's buf_queue vb2 operation to be called, queueing the same
     buffer again only to be returned to videobuf2 using vb2_buffer_done() and so
     on.

     Add a new buffer state VB2_BUF_STATE_REQUEUEING which, when used as the
     state argument to vb2_buffer_done(), will result in buffers queued to the
     driver. Using VB2_BUF_STATE_QUEUED will leave the buffer to videobuf2, as it
     was before "[media] vb2: allow requeuing buffers while streaming".

     Fixes: ce0eff016f72 ("[media] vb2: allow requeuing buffers while streaming")

     [mchehab@xxxxxxxxxxxxxxx: fix warning: enumeration value 'VB2_BUF_STATE_REQUEUEING' not handled in switch]

     Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
     Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
     Cc: stable@xxxxxxxxxxxxxxx # for v4.1
     Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxx>


I wonder why this fix is not included to media master yet, but only fixes... It is not first time such happens. I wasted a lot of time when I tried implement receiver / transmitter blocking to hackrf driver start_streaming and it crashes machine always, lets say 15 times, until I started suspect issue might be somewhere else than driver.

Anyhow, you could crash machine easily with that bug using vivid driver error injection option
v4l2-ctl -d /dev/video0 -c inject_vidioc_streamon_error=1

regards
Antti

--
http://palosaari.fi/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux