summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/pac7311.c
diff options
context:
space:
mode:
authorJean-François Moine2010-07-06 09:16:40 +0200
committerMauro Carvalho Chehab2010-08-02 21:42:47 +0200
commit02bbcb9d863df10b5a4b91ba5b4c76eaf1340883 (patch)
tree1e19c0d8d0a50e1a34d4b6fa5f5027ee713b9612 /drivers/media/video/gspca/pac7311.c
parentV4L/DVB: remove obsolete conditionalizing on DVB_DIBCOM_DEBUG (diff)
downloadkernel-qcow2-linux-02bbcb9d863df10b5a4b91ba5b4c76eaf1340883.tar.gz
kernel-qcow2-linux-02bbcb9d863df10b5a4b91ba5b4c76eaf1340883.tar.xz
kernel-qcow2-linux-02bbcb9d863df10b5a4b91ba5b4c76eaf1340883.zip
V4L/DVB: gspca - main: Possible race condition in queue management
The problem may occur with SMP: - a frame is completed at interrupt level (in gspca_frame_add with packet_type == LAST_PACKET, - just after clearing the bit V4L2_BUF_FLAG_QUEUED and before setting the bit V4L2_BUF_FLAG_DONE, on the other processor, the application tries to requeue the same frame buffer, - then, the qbuf function succeeds because ALL_FLAGS are not set. The fix sets and resets the two flags in one instruction. Reported-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Jean-François Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca/pac7311.c')
0 files changed, 0 insertions, 0 deletions