Revision 6cf11ee6300f38b7cfc43af9b7be2afaa5e05869 authored by Hans Verkuil on 19 January 2015, 09:16:18 UTC, committed by Mauro Carvalho Chehab on 21 January 2015, 23:07:26 UTC
The locking scheme inside the vb2 thread is unsafe when stopping the
thread. In particular kthread_stop was called *after* internal data
structures were cleaned up instead of doing that before. In addition,
internal vb2 functions were called after threadio->stop was set to
true and vb2_internal_streamoff was called. This is also not allowed.

All this led to a variety of race conditions and kernel warnings and/or
oopses.

Fixed by moving the kthread_stop call up before the cleanup takes
place, and by checking threadio->stop before calling internal vb2
queuing operations.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: <stable@vger.kernel.org>      # for v3.16 and up
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
1 parent 42d74e4
History
File Mode Size
Kconfig -rw-r--r-- 442 bytes
Makefile -rw-r--r-- 251 bytes
attr.c -rw-r--r-- 2.6 KB
bfind.c -rw-r--r-- 4.5 KB
bitmap.c -rw-r--r-- 5.8 KB
bnode.c -rw-r--r-- 11.3 KB
brec.c -rw-r--r-- 13.4 KB
btree.c -rw-r--r-- 8.7 KB
btree.h -rw-r--r-- 5.1 KB
catalog.c -rw-r--r-- 9.2 KB
dir.c -rw-r--r-- 7.6 KB
extent.c -rw-r--r-- 13.8 KB
hfs.h -rw-r--r-- 9.1 KB
hfs_fs.h -rw-r--r-- 8.9 KB
inode.c -rw-r--r-- 18.3 KB
mdb.c -rw-r--r-- 10.2 KB
part_tbl.c -rw-r--r-- 2.9 KB
string.c -rw-r--r-- 3.7 KB
super.c -rw-r--r-- 12.2 KB
sysdep.c -rw-r--r-- 1.0 KB
trans.c -rw-r--r-- 3.4 KB

back to top