summaryrefslogtreecommitdiff
path: root/fs/cramfs
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2012-09-21 13:16:29 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-09-21 21:28:17 +0400
commit36048853c5257a7b6df346b83758ffa776a59e9f (patch)
treec8167eb505d2f8af213faa15acf27c6554783294 /fs/cramfs
parentc46de2263f42fb4bbde411b9126f471e9343cb22 (diff)
downloadlinux-36048853c5257a7b6df346b83758ffa776a59e9f.tar.xz
debugfs: fix race in u32_array_read and allocate array at open
u32_array_open() is racy when multiple threads read from a file with a seek position of zero, i.e. when two or more simultaneous reads are occurring after the non-seekable files are created. It is possible that file->private_data is double-freed because the threads races between kfree(file->private-data); and file->private_data = NULL; The fix is to only do format_array_alloc() when the file is opened and free it when it is closed. Note that because the file has always been non-seekable, you can't open it and read it multiple times anyway, so the data has always been generated just once. The difference is that now it is generated at open time rather than at the time of the first read, and that avoids the race. Reported-by: Dave Jones <davej@redhat.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Tested-by: Raghavendra <raghavendra.kt@linux.vnet.ibm.com> Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/cramfs')
0 files changed, 0 insertions, 0 deletions