.. | .. |
---|
308 | 308 | can_clone = true; |
---|
309 | 309 | dmt_mode = drm_mode_find_dmt(dev, 1024, 768, 60, false); |
---|
310 | 310 | |
---|
| 311 | + if (!dmt_mode) |
---|
| 312 | + goto fail; |
---|
| 313 | + |
---|
311 | 314 | for (i = 0; i < connector_count; i++) { |
---|
312 | 315 | if (!enabled[i]) |
---|
313 | 316 | continue; |
---|
.. | .. |
---|
323 | 326 | if (!modes[i]) |
---|
324 | 327 | can_clone = false; |
---|
325 | 328 | } |
---|
| 329 | + kfree(dmt_mode); |
---|
326 | 330 | |
---|
327 | 331 | if (can_clone) { |
---|
328 | 332 | DRM_DEBUG_KMS("can clone using 1024x768\n"); |
---|
329 | 333 | return true; |
---|
330 | 334 | } |
---|
| 335 | +fail: |
---|
331 | 336 | DRM_INFO("kms: can't enable cloning when we probably wanted to.\n"); |
---|
332 | 337 | return false; |
---|
333 | 338 | } |
---|
.. | .. |
---|
859 | 864 | break; |
---|
860 | 865 | } |
---|
861 | 866 | |
---|
| 867 | + kfree(modeset->mode); |
---|
862 | 868 | modeset->mode = drm_mode_duplicate(dev, mode); |
---|
863 | 869 | drm_connector_get(connector); |
---|
864 | 870 | modeset->connectors[modeset->num_connectors++] = connector; |
---|