diff --git a/drivers/video/uvesafb.c b/drivers/video/uvesafb.c index 7b8839e..b965667 100644 --- a/drivers/video/uvesafb.c +++ b/drivers/video/uvesafb.c @@ -29,6 +29,11 @@ #endif #include "edid.h" +#define absint(x) ({ \ + int __x = (x); \ + (__x < 0) ? -__x : __x; \ + }) + static struct cb_id uvesafb_cn_id = { .idx = CN_IDX_V86D, .val = CN_VAL_V86D_UVESAFB @@ -320,9 +325,9 @@ static int uvesafb_vbe_find_mode(struct uvesafb_par *par, int i, match = -1, h = 0, d = 0x7fffffff; for (i = 0; i < par->vbe_modes_cnt; i++) { - h = abs(par->vbe_modes[i].x_res - xres) + - abs(par->vbe_modes[i].y_res - yres) + - abs(depth - par->vbe_modes[i].depth); + h = absint(par->vbe_modes[i].x_res - xres) + + absint(par->vbe_modes[i].y_res - yres) + + absint(depth - par->vbe_modes[i].depth); /* * We have an exact match in terms of resolution @@ -1375,7 +1380,7 @@ static int uvesafb_check_var(struct fb_var_screeninfo *var, * which is theoretically incorrect, but which we'll try to handle * here. */ - if (depth == 0 || abs(depth - var->bits_per_pixel) >= 8) + if (depth == 0 || absint(depth - var->bits_per_pixel) >= 8) depth = var->bits_per_pixel; match = uvesafb_vbe_find_mode(par, var->xres, var->yres, depth,