[Nouveau] [PATCH r2] drm/nv04: fix null pointer dereferences of native_mode

Anssi Hannula anssi.hannula at iki.fi
Sun Aug 23 16:37:02 PDT 2009


Anssi Hannula wrote:
> nv_connector->native_mode is not set when no modes were found for the
> connector, so its existence can't be assumed.
> 
> In nv04_dfp_mode_fixup, reject the mode if GPU scaling is enabled but
> native mode is not known.
> 
> In nv04_dfp_mode_set, use clock value from output_mode (nv_encoder->mode)
> instead of nv_connector->native_mode. If panel scaling is enabled on a
> TMDS display and the display did not have a valid EDID, native_mode is
> NULL.
> 
> In nv04_lvds_dpms and nv04_dfp_restore, refuse to turn on an LVDS panel
> if native mode is not known. While clock is not always required for
> turning panel on, having an LVDS without native mode means something went
> wrong already, so trying to turn panel on only in cases where clock is
> required would yield no added benefit.
> 
> Signed-off-by: Anssi Hannula <anssi.hannula at iki.fi>
> 
> ---
> 
> Rev2: Use output_mode (&nv_encoder->mode) in nv04_dfp_mode_set; that shortcut
> was just added by Francisco Jerez so it didn't make it into my initial patch
> 
> Please review especially the changes in nv04_dfp_mode_fixup. Previously
> (2 << 24) | (8 << 28) was set in regp->fp_control with dual link TMDS
> panel, even if we were using a single link mode with panel scaling. As I
> didn't know what it is for, I assumed it was a mistake and made it depend
> on the actual output mode (i.e. native_mode with GPU scaling only) instead.
> Someone who knows this stuff should confirm this or fix it in another
> way :)
> 
> This fixes up http://bugs.freedesktop.org/show_bug.cgi?id=23295

Ping?

-- 
Anssi Hannula


More information about the Nouveau mailing list