Staging: xgifb: XGI_main_26.c: Refactored the function
authorPratik Jain <pratik.jain0509@gmail.com>
Wed, 21 Mar 2018 09:50:43 +0000 (15:20 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Mar 2018 17:29:50 +0000 (18:29 +0100)
Refactored the function `XGIfb_search_refresh_rate` by removing a level
of `if...else` block nesting. Removed unnecessary parantheses. Removed
potential bug of array underflow.

Signed-off-by: Pratik Jain <pratik.jain0509@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/xgifb/XGI_main_26.c

index 10107de..eca0b50 100644 (file)
@@ -544,41 +544,42 @@ static u8 XGIfb_search_refresh_rate(struct xgifb_video_info *xgifb_info,
        yres = XGIbios_mode[xgifb_info->mode_idx].yres;
 
        xgifb_info->rate_idx = 0;
-       while ((XGIfb_vrate[i].idx != 0) && (XGIfb_vrate[i].xres <= xres)) {
-               if ((XGIfb_vrate[i].xres == xres) &&
-                   (XGIfb_vrate[i].yres == yres)) {
-                       if (XGIfb_vrate[i].refresh == rate) {
+
+       while (XGIfb_vrate[i].idx != 0 && XGIfb_vrate[i].xres <= xres) {
+               /* Skip values with xres or yres less than specified */
+               if ((XGIfb_vrate[i].yres != yres) ||
+                   (XGIfb_vrate[i].xres != xres)) {
+                       i++;
+                       continue;
+               }
+               if (XGIfb_vrate[i].refresh == rate) {
+                       xgifb_info->rate_idx = XGIfb_vrate[i].idx;
+                       break;
+               } else if (XGIfb_vrate[i].refresh > rate) {
+                       if (XGIfb_vrate[i].refresh - rate <= 3) {
+                               pr_debug("Adjusting rate from %d up to %d\n",
+                                       rate, XGIfb_vrate[i].refresh);
                                xgifb_info->rate_idx = XGIfb_vrate[i].idx;
-                               break;
-                       } else if (XGIfb_vrate[i].refresh > rate) {
-                               if ((XGIfb_vrate[i].refresh - rate) <= 3) {
-                                       pr_debug("Adjusting rate from %d up to %d\n",
-                                                rate, XGIfb_vrate[i].refresh);
-                                       xgifb_info->rate_idx =
-                                               XGIfb_vrate[i].idx;
-                                       xgifb_info->refresh_rate =
-                                               XGIfb_vrate[i].refresh;
-                               } else if (((rate - XGIfb_vrate[i - 1].refresh)
-                                               <= 2) && (XGIfb_vrate[i].idx
-                                               != 1)) {
-                                       pr_debug("Adjusting rate from %d down to %d\n",
-                                                rate,
-                                                XGIfb_vrate[i - 1].refresh);
-                                       xgifb_info->rate_idx =
-                                               XGIfb_vrate[i - 1].idx;
-                                       xgifb_info->refresh_rate =
-                                               XGIfb_vrate[i - 1].refresh;
-                               }
-                               break;
-                       } else if ((rate - XGIfb_vrate[i].refresh) <= 2) {
+                               xgifb_info->refresh_rate =
+                                       XGIfb_vrate[i].refresh;
+                       } else if ((XGIfb_vrate[i].idx != 1) &&
+                                  (rate - XGIfb_vrate[i - 1].refresh <= 2)) {
                                pr_debug("Adjusting rate from %d down to %d\n",
-                                        rate, XGIfb_vrate[i].refresh);
-                               xgifb_info->rate_idx = XGIfb_vrate[i].idx;
-                               break;
+                                       rate, XGIfb_vrate[i - 1].refresh);
+                               xgifb_info->rate_idx = XGIfb_vrate[i - 1].idx;
+                               xgifb_info->refresh_rate =
+                                       XGIfb_vrate[i - 1].refresh;
                        }
+                       break;
+               } else if (rate - XGIfb_vrate[i].refresh <= 2) {
+                       pr_debug("Adjusting rate from %d down to %d\n",
+                               rate, XGIfb_vrate[i].refresh);
+                       xgifb_info->rate_idx = XGIfb_vrate[i].idx;
+                       break;
                }
                i++;
        }
+
        if (xgifb_info->rate_idx > 0)
                return xgifb_info->rate_idx;
        pr_info("Unsupported rate %d for %dx%d\n",