staging/android: sync_debug: unproxify debugfs files' fops
PATCH 1/1 staging/android: sync_debug: unproxify debugfs files' fops
Since commit 49d200deaa68 ("debugfs: prevent access to removed files' private data"), a debugfs file's file_operations methods get proxied through lifetime aware wrappers.
However, only a certain subset of the file_operations members is supported by debugfs and ->compat_ioctl isn't among them -- it appears to be NULL from the VFS layer's perspective.
This behaviour breaks the /sys/kernel/debug/sync/sw_sync file introduced concurrently with commit a44eb74cd413 ("staging/android: move SW_SYNC_USER to a debugfs file").
Since that file never gets removed, there is no file removal race and thus, a lifetime checking proxy isn't needed.
Avoid the proxying for /sys/kernel/debug/sync/sw_sync by creating it via debugfs_create_file_unsafe() rather than debugfs_create_file(). For consistency, do the same for /sys/kernel/debug/sync/info.
data")
file")
---
Applicable to linux-next-20160527.
x86_64 allmodconfig build succeeds w/o any new warnings.
Related discussion can be found here:
http://lkml.kernel.org/g/[email protected]
drivers/staging/android/sync_debug.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/staging/android/sync_debug.c +9 -3
@@ -326,9 +326,15 @@ static __init int sync_debugfs_init(void) { dbgfs =debugfs_create_dir ("sync" ,NULL ); -debugfs_create_file ("info" ,0444 , dbgfs,NULL , &sync_info_debugfs_fops); -debugfs_create_file ("sw_sync" ,0644 , dbgfs,NULL , - &sw_sync_debugfs_fops); +/* +* The debugfs files won't ever get removed and thus, there is +* no need to protect it against removal races. The use of +* debugfs_create_file_unsafe() is actually safe here. +*/ +debugfs_create_file_unsafe ("info" ,0444 , dbgfs,NULL , + &sync_info_debugfs_fops); +debugfs_create_file_unsafe ("sw_sync" ,0644 , dbgfs,NULL , + &sw_sync_debugfs_fops);return 0 ; }
Signature · 1 line
2.8.2
Greg Kroah-Hartman
maintainerQuoted 28 lines · Nicolai Stange
Since commit
49d200deaa68("debugfs: prevent access to removed files' private data"), a debugfs file'sfile_operationsmethods get proxied through lifetime aware wrappers.However, only a certain subset of the
file_operationsmembers is supported by debugfs and ->compat_ioctl isn't among them -- it appears to be NULL from the VFS layer's perspective.This behaviour breaks the
/sys/kernel/debug/sync/sw_syncfile introduced concurrently with commita44eb74cd413("staging/android: moveSW_SYNC_USERto a debugfs file").Since that file never gets removed, there is no file removal race and thus, a lifetime checking proxy isn't needed.
Avoid the proxying for
/sys/kernel/debug/sync/sw_syncby creating it viadebugfs_create_file_unsafe()rather thandebugfs_create_file(). For consistency, do the same for/sys/kernel/debug/sync/info.Fixes 49d200deaa68 ("debugfs: prevent access to removed files' privatedata")Fixes a44eb74cd413 ("staging/android: move SW_SYNC_USER to a debugfsfile")Signed-off-by Nicolai Stange <[email protected]>---
Applicable to linux-next-20160527.
x86_64allmodconfig build succeeds w/o any new warnings.
Quoted 5 lines
Related discussion can be found here:
http://lkml.kernel.org/g/[email protected]drivers/staging/android/sync_debug.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
Thanks, will queue this up after 4.7-rc1 is out.
greg k-h