Add range check for samsung,lane-count to avoid invalid values. Validation is only applied when the property exists to maintain backward compatibility.
Suggested-by: Luca Ceresoli <[email protected]> Signed-off-by: Damon Ding <[email protected]> --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 8cf6b73bceac..699a7f380c56 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1238,6 +1238,7 @@ static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) { struct device_node *dp_node = dp->dev->of_node; struct video_info *video_info = &dp->video_info; + int ret; switch (dp->plat_data->dev_type) { case RK3288_DP: @@ -1260,8 +1261,16 @@ static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) */ of_property_read_u32(dp_node, "samsung,link-rate", &video_info->max_link_rate); - of_property_read_u32(dp_node, "samsung,lane-count", - &video_info->max_lane_count); + ret = of_property_read_u32(dp_node, "samsung,lane-count", + &video_info->max_lane_count); + if (!ret) { + if (video_info->max_lane_count == 0 || + video_info->max_lane_count > LANE_COUNT4) { + dev_err(dp->dev, "samsung,lane-count = %d is out of range\n", + video_info->max_lane_count); + return -EINVAL; + } + } break; } -- 2.34.1
