From: Chaitanya Kumar Borah <chaitanya.kumar.bo...@intel.com> 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 <chaitanya.kumar.bo...@intel.com> Signed-off-by: Uma Shankar <uma.shan...@intel.com> --- 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 9684eee96ef9..dcf7cfa722ef 100644 --- a/drivers/gpu/drm/i915/display/intel_color.c +++ b/drivers/gpu/drm/i915/display/intel_color.c @@ -618,6 +618,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.42.0