aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_device.c
diff options
context:
space:
mode:
authorMichael Witten <mfwitten@gmail.com>2011-09-16 16:45:30 -0400
committerDave Airlie <airlied@redhat.com>2011-10-10 04:04:57 -0400
commitc245cb9e15055ed5dcf7eaf29232badb0059fdc1 (patch)
treeab8142c8cf4bb3bf43b1086c4eba24885ff409af /drivers/gpu/drm/radeon/radeon_device.c
parentd0d0a225e6ad43314c9aa7ea081f76adc5098ad4 (diff)
DRM: bug: RADEON_DEBUGFS_MAX_{NUM_FILES => COMPONENTS}
The value of RADEON_DEBUGFS_MAX_NUM_FILES has been used to specify the size of an array, each element of which looks like this: struct radeon_debugfs { struct drm_info_list *files; unsigned num_files; }; Consequently, the number of debugfs files may be much greater than RADEON_DEBUGFS_MAX_NUM_FILES, something that the current code ignores: if ((_radeon_debugfs_count + nfiles) > RADEON_DEBUGFS_MAX_NUM_FILES) { DRM_ERROR("Reached maximum number of debugfs files.\n"); DRM_ERROR("Report so we increase RADEON_DEBUGFS_MAX_NUM_FILES.\n"); return -EINVAL; } This commit fixes this make, and accordingly renames: RADEON_DEBUGFS_MAX_NUM_FILES to: RADEON_DEBUGFS_MAX_COMPONENTS Signed-off-by: Michael Witten <mfwitten@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index b51e15725c6e..31b1f4bf133e 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -981,7 +981,7 @@ struct radeon_debugfs {
981 struct drm_info_list *files; 981 struct drm_info_list *files;
982 unsigned num_files; 982 unsigned num_files;
983}; 983};
984static struct radeon_debugfs _radeon_debugfs[RADEON_DEBUGFS_MAX_NUM_FILES]; 984static struct radeon_debugfs _radeon_debugfs[RADEON_DEBUGFS_MAX_COMPONENTS];
985static unsigned _radeon_debugfs_count = 0; 985static unsigned _radeon_debugfs_count = 0;
986 986
987int radeon_debugfs_add_files(struct radeon_device *rdev, 987int radeon_debugfs_add_files(struct radeon_device *rdev,
@@ -996,14 +996,17 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
996 return 0; 996 return 0;
997 } 997 }
998 } 998 }
999 if ((_radeon_debugfs_count + nfiles) > RADEON_DEBUGFS_MAX_NUM_FILES) { 999
1000 DRM_ERROR("Reached maximum number of debugfs files.\n"); 1000 i = _radeon_debugfs_count + 1;
1001 DRM_ERROR("Report so we increase RADEON_DEBUGFS_MAX_NUM_FILES.\n"); 1001 if (i > RADEON_DEBUGFS_MAX_COMPONENTS) {
1002 DRM_ERROR("Reached maximum number of debugfs components.\n");
1003 DRM_ERROR("Report so we increase "
1004 "RADEON_DEBUGFS_MAX_COMPONENTS.\n");
1002 return -EINVAL; 1005 return -EINVAL;
1003 } 1006 }
1004 _radeon_debugfs[_radeon_debugfs_count].files = files; 1007 _radeon_debugfs[_radeon_debugfs_count].files = files;
1005 _radeon_debugfs[_radeon_debugfs_count].num_files = nfiles; 1008 _radeon_debugfs[_radeon_debugfs_count].num_files = nfiles;
1006 _radeon_debugfs_count++; 1009 _radeon_debugfs_count = i;
1007#if defined(CONFIG_DEBUG_FS) 1010#if defined(CONFIG_DEBUG_FS)
1008 drm_debugfs_create_files(files, nfiles, 1011 drm_debugfs_create_files(files, nfiles,
1009 rdev->ddev->control->debugfs_root, 1012 rdev->ddev->control->debugfs_root,