The logic at vivid_radio_rx_g_tuner() is producint an overflow
warning:

        drivers/media/platform/vivid/vivid-radio-rx.c:250 
vivid_radio_rx_g_tuner() warn: potential negative subtraction from max '65535 - 
(__builtin_choose_expr( ==  ||  == , , __builtin_choose_expr( ==  ||  == , , 
__builtin_choose_expr( ==  ||  == , , __builtin_choose_expr( ==  ||  == , , 
__builtin_choose_expr( ==  ||  == , , __builtin_choose_expr( == , , (0))))))) * 
65535) / delta'

Add a cast to prevent that.

Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
---
 drivers/media/platform/vivid/vivid-radio-rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/vivid/vivid-radio-rx.c 
b/drivers/media/platform/vivid/vivid-radio-rx.c
index acbfea2cce76..1f86d7d4f72f 100644
--- a/drivers/media/platform/vivid/vivid-radio-rx.c
+++ b/drivers/media/platform/vivid/vivid-radio-rx.c
@@ -247,7 +247,7 @@ int vivid_radio_rx_g_tuner(struct file *file, void *fh, 
struct v4l2_tuner *vt)
        vt->rangehigh = FM_FREQ_RANGE_HIGH;
        sig_qual = dev->radio_rx_sig_qual;
        vt->signal = abs(sig_qual) > delta ? 0 :
-                    0xffff - (abs(sig_qual) * 0xffff) / delta;
+                    0xffff - ((unsigned)abs(sig_qual) * 0xffff) / delta;
        vt->afc = sig_qual > delta ? 0 : sig_qual;
        if (abs(sig_qual) > delta)
                vt->rxsubchans = 0;
-- 
2.14.3

Reply via email to