From: Chaitanya Kumar Borah <[email protected]>

When int_bits == 0, we lose the sign bit when we do the range check
and apply the mask.

Fix this by ensuring a minimum of one integer bit, which guarantees space
for the sign bit in fully fractional representations (e.g. S0.12)

Signed-off-by: Chaitanya Kumar Borah <[email protected]>
Signed-off-by: Uma Shankar <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_color.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_color.c 
b/drivers/gpu/drm/i915/display/intel_color.c
index a45d348c9851..aef25cb63457 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -613,6 +613,8 @@ static u16 ctm_to_twos_complement(u64 coeff, int int_bits, 
int frac_bits)
        if (CTM_COEFF_NEGATIVE(coeff))
                c = -c;
 
+       int_bits = max(int_bits, 1);
+
        c = clamp(c, -(s64)BIT(int_bits + frac_bits - 1),
                  (s64)(BIT(int_bits + frac_bits - 1) - 1));
 
-- 
2.50.1

Reply via email to