[radeon-alex:amd-staging-drm-next-pco 272/339] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5137 dm_determine_update_type_for_commit() error: potential null dereference 'surface'. (kzalloc returns null)
kbuild test robot
lkp at intel.com
Fri Sep 14 06:36:15 UTC 2018
tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next-pco
head: bbab57a341c90ed6e32de8edf4e89dc5c55cddac
commit: 42b0cb5d6f8d3c641098454aabfa4eeeb935ccd2 [272/339] drm/amd/display: Build stream update and plane updates in dm
smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5137 dm_determine_update_type_for_commit() error: potential null dereference 'surface'. (kzalloc returns null)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5137 dm_determine_update_type_for_commit() error: potential null dereference 'updates'. (kzalloc returns null)
vim +/surface +5137 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c
5098
5099
5100 int i, j, num_plane;
5101 struct drm_plane_state *old_plane_state, *new_plane_state;
5102 struct dm_plane_state *new_dm_plane_state, *old_dm_plane_state;
5103 struct drm_crtc *new_plane_crtc, *old_plane_crtc;
5104 struct drm_plane *plane;
5105
5106 struct drm_crtc *crtc;
5107 struct drm_crtc_state *new_crtc_state, *old_crtc_state;
5108 struct dm_crtc_state *new_dm_crtc_state, *old_dm_crtc_state;
5109 struct dc_stream_status *status = NULL;
5110
5111 struct dc_surface_update *updates = kzalloc(MAX_SURFACES * sizeof(struct dc_surface_update), GFP_KERNEL);
5112 struct dc_plane_state *surface = kzalloc(MAX_SURFACES * sizeof(struct dc_plane_state), GFP_KERNEL);
5113 struct dc_stream_update stream_update;
5114 enum surface_update_type update_type = UPDATE_TYPE_FAST;
5115
5116
5117 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
5118 new_dm_crtc_state = to_dm_crtc_state(new_crtc_state);
5119 old_dm_crtc_state = to_dm_crtc_state(old_crtc_state);
5120 num_plane = 0;
5121
5122 if (new_dm_crtc_state->stream) {
5123
5124 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, j) {
5125 new_plane_crtc = new_plane_state->crtc;
5126 old_plane_crtc = old_plane_state->crtc;
5127 new_dm_plane_state = to_dm_plane_state(new_plane_state);
5128 old_dm_plane_state = to_dm_plane_state(old_plane_state);
5129
5130 if (plane->type == DRM_PLANE_TYPE_CURSOR)
5131 continue;
5132
5133 if (!state->allow_modeset)
5134 continue;
5135
5136 if (crtc == new_plane_crtc) {
> 5137 updates[num_plane].surface = &surface[num_plane];
5138
5139 if (new_crtc_state->mode_changed) {
5140 updates[num_plane].surface->src_rect =
5141 new_dm_plane_state->dc_state->src_rect;
5142 updates[num_plane].surface->dst_rect =
5143 new_dm_plane_state->dc_state->dst_rect;
5144 updates[num_plane].surface->rotation =
5145 new_dm_plane_state->dc_state->rotation;
5146 updates[num_plane].surface->in_transfer_func =
5147 new_dm_plane_state->dc_state->in_transfer_func;
5148 stream_update.dst = new_dm_crtc_state->stream->dst;
5149 stream_update.src = new_dm_crtc_state->stream->src;
5150 }
5151
5152 if (new_crtc_state->color_mgmt_changed) {
5153 updates[num_plane].gamma =
5154 new_dm_plane_state->dc_state->gamma_correction;
5155 updates[num_plane].in_transfer_func =
5156 new_dm_plane_state->dc_state->in_transfer_func;
5157 stream_update.gamut_remap =
5158 &new_dm_crtc_state->stream->gamut_remap_matrix;
5159 stream_update.out_transfer_func =
5160 new_dm_crtc_state->stream->out_transfer_func;
5161 }
5162
5163 num_plane++;
5164 }
5165 }
5166
5167 if (num_plane > 0) {
5168 status = dc_stream_get_status(new_dm_crtc_state->stream);
5169 update_type = dc_check_update_surfaces_for_stream(dc, updates, num_plane,
5170 &stream_update, status);
5171
5172 if (update_type > UPDATE_TYPE_MED) {
5173 update_type = UPDATE_TYPE_FULL;
5174 goto ret;
5175 }
5176 }
5177
5178 } else if (!new_dm_crtc_state->stream && old_dm_crtc_state->stream) {
5179 update_type = UPDATE_TYPE_FULL;
5180 goto ret;
5181 }
5182 }
5183
5184 ret:
5185 kfree(updates);
5186 kfree(surface);
5187
5188 return update_type;
5189 }
5190
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
More information about the dri-devel
mailing list