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-- 3.5 KB
Makefile -rw-r--r-- 485 bytes
acl.h -rw-r--r-- 2.4 KB
auth.c -rw-r--r-- 2.0 KB
auth.h -rw-r--r-- 339 bytes
cache.h -rw-r--r-- 1.8 KB
current_stateid.h -rw-r--r-- 1.4 KB
export.c -rw-r--r-- 32.6 KB
export.h -rw-r--r-- 2.9 KB
fault_inject.c -rw-r--r-- 3.7 KB
idmap.h -rw-r--r-- 2.4 KB
lockd.c -rw-r--r-- 1.7 KB
netns.h -rw-r--r-- 3.5 KB
nfs2acl.c -rw-r--r-- 9.1 KB
nfs3acl.c -rw-r--r-- 6.4 KB
nfs3proc.c -rw-r--r-- 24.4 KB
nfs3xdr.c -rw-r--r-- 26.6 KB
nfs4acl.c -rw-r--r-- 23.8 KB
nfs4callback.c -rw-r--r-- 24.9 KB
nfs4idmap.c -rw-r--r-- 16.1 KB
nfs4proc.c -rw-r--r-- 56.9 KB
nfs4recover.c -rw-r--r-- 35.4 KB
nfs4state.c -rw-r--r-- 167.4 KB
nfs4xdr.c -rw-r--r-- 103.5 KB
nfscache.c -rw-r--r-- 15.9 KB
nfsctl.c -rw-r--r-- 33.1 KB
nfsd.h -rw-r--r-- 16.1 KB
nfsfh.c -rw-r--r-- 18.2 KB
nfsfh.h -rw-r--r-- 6.1 KB
nfsproc.c -rw-r--r-- 20.2 KB
nfssvc.c -rw-r--r-- 17.6 KB
nfsxdr.c -rw-r--r-- 13.0 KB
state.h -rw-r--r-- 20.2 KB
stats.c -rw-r--r-- 2.7 KB
stats.h -rw-r--r-- 1.4 KB
vfs.c -rw-r--r-- 50.5 KB
vfs.h -rw-r--r-- 4.3 KB
xdr.h -rw-r--r-- 4.0 KB
xdr3.h -rw-r--r-- 8.1 KB
xdr4.h -rw-r--r-- 19.2 KB
xdr4cb.h -rw-r--r-- 830 bytes

back to top