media: v4l2-common: fix overflow in v4l_bound_align_image()
[firefly-linux-kernel-4.4.55.git] / drivers / media / v4l2-core / v4l2-common.c
index 3fed63f4e02641538287cf244410037aac3b60a4..ec9a4fa3bc86641e9d148ff9efd2a3361cd38bd0 100644 (file)
@@ -485,16 +485,13 @@ static unsigned int clamp_align(unsigned int x, unsigned int min,
        /* Bits that must be zero to be aligned */
        unsigned int mask = ~((1 << align) - 1);
 
+       /* Clamp to aligned min and max */
+       x = clamp(x, (min + ~mask) & mask, max & mask);
+
        /* Round to nearest aligned value */
        if (align)
                x = (x + (1 << (align - 1))) & mask;
 
-       /* Clamp to aligned value of min and max */
-       if (x < min)
-               x = (min + ~mask) & mask;
-       else if (x > max)
-               x = max & mask;
-
        return x;
 }