mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 11:16:48 +07:00
Merge branch 'topic/core-stuff' of git://git.freedesktop.org/git/drm-intel into drm-next
Merge straggling core drm patches. * 'topic/core-stuff' of git://git.freedesktop.org/git/drm-intel: drm: Fix use-after-free in the shadow-attache exit code drm/fb-helper: Do the 'max_conn_count' zero check drm: Check if the allocation has succeeded before dereferencing newmode drm/fb-helper: Use drm_fb_helper_restore_fbdev_mode() in drm_fb_helper_set_par() drm/edid: request HDMI underscan by default
This commit is contained in:
commit
5a08c07526
@ -2590,6 +2590,9 @@ drm_display_mode_from_vic_index(struct drm_connector *connector,
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]);
|
newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]);
|
||||||
|
if (!newmode)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
newmode->vrefresh = 0;
|
newmode->vrefresh = 0;
|
||||||
|
|
||||||
return newmode;
|
return newmode;
|
||||||
@ -3611,6 +3614,7 @@ drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
|
|||||||
|
|
||||||
frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE;
|
frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE;
|
||||||
frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE;
|
frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE;
|
||||||
|
frame->scan_mode = HDMI_SCAN_MODE_UNDERSCAN;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -516,6 +516,9 @@ int drm_fb_helper_init(struct drm_device *dev,
|
|||||||
struct drm_crtc *crtc;
|
struct drm_crtc *crtc;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!max_conn_count)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
fb_helper->dev = dev;
|
fb_helper->dev = dev;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&fb_helper->kernel_fb_list);
|
INIT_LIST_HEAD(&fb_helper->kernel_fb_list);
|
||||||
@ -809,8 +812,6 @@ int drm_fb_helper_set_par(struct fb_info *info)
|
|||||||
struct drm_fb_helper *fb_helper = info->par;
|
struct drm_fb_helper *fb_helper = info->par;
|
||||||
struct drm_device *dev = fb_helper->dev;
|
struct drm_device *dev = fb_helper->dev;
|
||||||
struct fb_var_screeninfo *var = &info->var;
|
struct fb_var_screeninfo *var = &info->var;
|
||||||
int ret;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (var->pixclock != 0) {
|
if (var->pixclock != 0) {
|
||||||
DRM_ERROR("PIXEL CLOCK SET\n");
|
DRM_ERROR("PIXEL CLOCK SET\n");
|
||||||
@ -818,13 +819,7 @@ int drm_fb_helper_set_par(struct fb_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
drm_modeset_lock_all(dev);
|
drm_modeset_lock_all(dev);
|
||||||
for (i = 0; i < fb_helper->crtc_count; i++) {
|
drm_fb_helper_restore_fbdev_mode(fb_helper);
|
||||||
ret = drm_mode_set_config_internal(&fb_helper->crtc_info[i].mode_set);
|
|
||||||
if (ret) {
|
|
||||||
drm_modeset_unlock_all(dev);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
drm_modeset_unlock_all(dev);
|
drm_modeset_unlock_all(dev);
|
||||||
|
|
||||||
if (fb_helper->delayed_hotplug) {
|
if (fb_helper->delayed_hotplug) {
|
||||||
|
@ -468,8 +468,8 @@ void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
|
|||||||
} else {
|
} else {
|
||||||
list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
|
list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
|
||||||
legacy_dev_list) {
|
legacy_dev_list) {
|
||||||
drm_put_dev(dev);
|
|
||||||
list_del(&dev->legacy_dev_list);
|
list_del(&dev->legacy_dev_list);
|
||||||
|
drm_put_dev(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DRM_INFO("Module unloaded\n");
|
DRM_INFO("Module unloaded\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user