staging: xgifb: XGIfb_mode_rate_to_ddata: initialize ModeIdIndex properly
authorAaro Koskinen <aaro.koskinen@iki.fi>
Fri, 6 Apr 2012 22:13:48 +0000 (01:13 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Apr 2012 16:55:09 +0000 (09:55 -0700)
Initialize ModeIdIndex according to the selected video mode. Currently
index 0 is always used and wrong video mode data may be used.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/xgifb/XGI_main_26.c

index c703b83..67323b1 100644 (file)
@@ -190,7 +190,7 @@ static int XGIfb_mode_rate_to_ddata(struct vb_device_info *XGI_Pr,
                u32 *vmode)
 {
        unsigned short ModeNo = modeno;
-       unsigned short ModeIdIndex = 0, index = 0;
+       unsigned short ModeIdIndex, index = 0;
        unsigned short RefreshRateTableIndex = 0;
 
        unsigned short VRE, VBE, VRS, VBS, VDE, VT;
@@ -199,6 +199,8 @@ static int XGIfb_mode_rate_to_ddata(struct vb_device_info *XGI_Pr,
        unsigned long cr_data3;
        int A, B, C, D, E, F, temp, j;
        InitTo330Pointer(HwDeviceExtension->jChipType, XGI_Pr);
+       if (!XGI_SearchModeID(ModeNo, &ModeIdIndex, XGI_Pr))
+               return 0;
        RefreshRateTableIndex = XGI_GetRatePtrCRT2(HwDeviceExtension, ModeNo,
                        ModeIdIndex, XGI_Pr);
        index = XGI_Pr->RefIndex[RefreshRateTableIndex].Ext_CRT1CRTC;