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
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 |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...