{
        int result = MODE_ERROR;
        struct dc_sink *dc_sink;
+       struct drm_display_mode *test_mode;
        /* TODO: Unhardcode stream count */
        struct dc_stream_state *stream;
        struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
                goto fail;
        }
 
-       drm_mode_set_crtcinfo(mode, 0);
+       test_mode = drm_mode_duplicate(connector->dev, mode);
+       if (!test_mode)
+               goto fail;
+
+       drm_mode_set_crtcinfo(test_mode, 0);
 
-       stream = create_validate_stream_for_sink(aconnector, mode,
+       stream = create_validate_stream_for_sink(aconnector, test_mode,
                                                 to_dm_connector_state(connector->state),
                                                 NULL);
+       drm_mode_destroy(connector->dev, test_mode);
        if (stream) {
                dc_stream_release(stream);
                result = MODE_OK;