diff options
author | Jakob Bornecrantz <jakob@vmware.com> | 2011-11-01 04:45:28 +0100 |
---|---|---|
committer | Thomas Hellstrom <thellstrom@vmware.com> | 2011-11-09 10:02:41 +0100 |
commit | 636bf314b1c4e77d27e2443672cf725bf08aa689 (patch) | |
tree | 5e3d84f75b7e9b2da079be1fb83fb23ee8630885 | |
parent | 7e90f56a61a6635addefc194a1c9033c6a20d36e (diff) |
vmwgfx: Free prefered mode on error path
Signed-off-by: Jakob Bornecrantz <jakob@vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
-rw-r--r-- | vmwgfx_kms.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/vmwgfx_kms.c b/vmwgfx_kms.c index 204f5b9..55bd86d 100644 --- a/vmwgfx_kms.c +++ b/vmwgfx_kms.c @@ -1715,17 +1715,22 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector, mode->hdisplay = du->pref_width; mode->vdisplay = du->pref_height; vmw_guess_mode_timing(mode); + if (vmw_kms_validate_mode_vram(dev_priv, mode->hdisplay * 2, mode->vdisplay)) { drm_mode_probed_add(connector, mode); + } else { + drm_mode_destroy(dev, mode); + mode = NULL; + } - if (du->pref_mode) { - list_del_init(&du->pref_mode->head); - drm_mode_destroy(dev, du->pref_mode); - } - - du->pref_mode = mode; + if (du->pref_mode) { + list_del_init(&du->pref_mode->head); + drm_mode_destroy(dev, du->pref_mode); } + + /* mode might be null here, this is intended */ + du->pref_mode = mode; } for (i = 0; vmw_kms_connector_builtin[i].type != 0; i++) { |