'evergreen_surface_check' is called with a NULL warning prefix when
handling potentially recoverable issues or just to compute the alignment
requirements, and 'evergreen_surface_check' is called again in case of
failure (with the correct prefix, as opposed to NULL), therefore, the
initial check must not print a warning, because the surface may be
accepted successfully after having been corrected, however if it isn't,
the final check will print the warning anyway. The surface check
functions specific to array modes already implement this behavior, but
the 'evergreen_surface_check' function itself doesn't.

This is also supposed to fix the "'%s' directive argument is null
[-Werror=format-overflow=]" compiler warning.

Fixes: 285484e2d55e ("drm/radeon: add support for evergreen/ni tiling informations 
v11")
Reported-by: Arnd Bergmann <[email protected]>
Signed-off-by: Vitaliy Triang3l Kuzmin <[email protected]>
---
 drivers/gpu/drm/radeon/evergreen_cs.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/radeon/evergreen_cs.c 
b/drivers/gpu/drm/radeon/evergreen_cs.c
index 3142ef4da7f4..9196f85db9ce 100644
--- a/drivers/gpu/drm/radeon/evergreen_cs.c
+++ b/drivers/gpu/drm/radeon/evergreen_cs.c
@@ -312,8 +312,10 @@ static int evergreen_surface_check(struct radeon_cs_parser 
*p,
        case ARRAY_2D_TILED_THIN1:
                return evergreen_surface_check_2d(p, surf, prefix);
        default:
-               dev_warn(p->dev, "%s:%d %s invalid array mode %d\n",
-                               __func__, __LINE__, prefix, surf->mode);
+               if (prefix) {
+                       dev_warn(p->dev, "%s:%d %s invalid array mode %d\n",
+                                       __func__, __LINE__, prefix, surf->mode);
+               }
                return -EINVAL;
        }
        return -EINVAL;
--
2.43.0

Reply via email to