iwlwifi: fix permissions on debugfs files
authorReinette Chatre <reinette.chatre@intel.com>
Thu, 9 Jul 2009 17:33:38 +0000 (10:33 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 24 Jul 2009 19:05:10 +0000 (15:05 -0400)
debugfs files are created with 644 permissions which gives everybody
read access. This presents a security issue if a user opens the file and
holds it open at the time the driver removes the file. At this point
invalid memory will be accessed.

Fix this by only allowing root to read debugfs files.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-debugfs.c

index e38ec81b839b35e40982110db573e55ac25c0805..0b9e824b67c27b68c6b1738071bec025f84bf592 100644 (file)
@@ -49,7 +49,8 @@
 
 #define DEBUGFS_ADD_FILE(name, parent) do {                             \
        dbgfs->dbgfs_##parent##_files.file_##name =                     \
-       debugfs_create_file(#name, 0644, dbgfs->dir_##parent, priv,     \
+       debugfs_create_file(#name, S_IWUSR | S_IRUSR,                   \
+                               dbgfs->dir_##parent, priv,              \
                                &iwl_dbgfs_##name##_ops);               \
        if (!(dbgfs->dbgfs_##parent##_files.file_##name))               \
                goto err;                                               \
@@ -57,7 +58,8 @@
 
 #define DEBUGFS_ADD_BOOL(name, parent, ptr) do {                        \
        dbgfs->dbgfs_##parent##_files.file_##name =                     \
-       debugfs_create_bool(#name, 0644, dbgfs->dir_##parent, ptr);     \
+       debugfs_create_bool(#name, S_IWUSR | S_IRUSR,                   \
+                           dbgfs->dir_##parent, ptr);                  \
        if (IS_ERR(dbgfs->dbgfs_##parent##_files.file_##name)           \
                        || !dbgfs->dbgfs_##parent##_files.file_##name)  \
                goto err;                                               \
@@ -65,7 +67,7 @@
 
 #define DEBUGFS_ADD_X32(name, parent, ptr) do {                        \
        dbgfs->dbgfs_##parent##_files.file_##name =                     \
-       debugfs_create_x32(#name, 0444, dbgfs->dir_##parent, ptr);     \
+       debugfs_create_x32(#name, S_IRUSR, dbgfs->dir_##parent, ptr);   \
        if (IS_ERR(dbgfs->dbgfs_##parent##_files.file_##name)           \
                        || !dbgfs->dbgfs_##parent##_files.file_##name)  \
                goto err;                                               \