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-- 1.3 KB
Makefile -rw-r--r-- 308 bytes
acl.c -rw-r--r-- 2.4 KB
acl.h -rw-r--r-- 764 bytes
aops.c -rw-r--r-- 31.2 KB
bmap.c -rw-r--r-- 36.9 KB
bmap.h -rw-r--r-- 2.0 KB
dentry.c -rw-r--r-- 2.7 KB
dir.c -rw-r--r-- 49.6 KB
dir.h -rw-r--r-- 2.6 KB
export.c -rw-r--r-- 4.9 KB
file.c -rw-r--r-- 26.9 KB
gfs2.h -rw-r--r-- 524 bytes
glock.c -rw-r--r-- 51.7 KB
glock.h -rw-r--r-- 7.3 KB
glops.c -rw-r--r-- 16.0 KB
glops.h -rw-r--r-- 1.1 KB
incore.h -rw-r--r-- 22.0 KB
inode.c -rw-r--r-- 46.0 KB
inode.h -rw-r--r-- 4.3 KB
lock_dlm.c -rw-r--r-- 38.6 KB
log.c -rw-r--r-- 24.7 KB
log.h -rw-r--r-- 2.4 KB
lops.c -rw-r--r-- 21.3 KB
lops.h -rw-r--r-- 2.8 KB
main.c -rw-r--r-- 5.6 KB
meta_io.c -rw-r--r-- 9.0 KB
meta_io.h -rw-r--r-- 2.5 KB
ops_fstype.c -rw-r--r-- 35.3 KB
quota.c -rw-r--r-- 39.3 KB
quota.h -rw-r--r-- 1.9 KB
recovery.c -rw-r--r-- 14.1 KB
recovery.h -rw-r--r-- 1.2 KB
rgrp.c -rw-r--r-- 66.1 KB
rgrp.h -rw-r--r-- 3.2 KB
super.c -rw-r--r-- 38.7 KB
super.h -rw-r--r-- 1.9 KB
sys.c -rw-r--r-- 17.3 KB
sys.h -rw-r--r-- 659 bytes
trace_gfs2.h -rw-r--r-- 15.4 KB
trans.c -rw-r--r-- 6.9 KB
trans.h -rw-r--r-- 1.5 KB
util.c -rw-r--r-- 7.3 KB
util.h -rw-r--r-- 4.9 KB
xattr.c -rw-r--r-- 32.5 KB
xattr.h -rw-r--r-- 2.1 KB

back to top