unsigned int xres = 0, yres = 0, bpp = 32, refresh = 0;
        bool yres_specified = false, cvt = false, rb = false;
        bool interlace = false, margins = false, was_digit = false;
-       int i;
+       int i, err;
        enum drm_connector_force force = DRM_FORCE_UNSPECIFIED;
 
 #ifdef CONFIG_FB
                case '@':
                        if (!refresh_specified && !bpp_specified &&
                            !yres_specified && !cvt && !rb && was_digit) {
-                               refresh = simple_strtol(&name[i+1], NULL, 10);
+                               err = kstrtouint(&name[i + 1], 10, &refresh);
+                               if (err)
+                                       return false;
                                refresh_specified = true;
                                was_digit = false;
                        } else
                case '-':
                        if (!bpp_specified && !yres_specified && !cvt &&
                            !rb && was_digit) {
-                               bpp = simple_strtol(&name[i+1], NULL, 10);
+                               err = kstrtouint(&name[i + 1], 10, &bpp);
+                               if (err)
+                                       return false;
                                bpp_specified = true;
                                was_digit = false;
                        } else
                        break;
                case 'x':
                        if (!yres_specified && was_digit) {
-                               yres = simple_strtol(&name[i+1], NULL, 10);
+                               err = kstrtouint(&name[i + 1], 10, &yres);
+                               if (err)
+                                       return false;
                                yres_specified = true;
                                was_digit = false;
                        } else
 
 out:
        return ret;
-}
\ No newline at end of file
+}