Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: i2c: adv748x: Fix unsafe macros

Enclose multiple macro parameters in parentheses in order to
make such macros safer and fix the Clang warning below:

drivers/media/i2c/adv748x/adv748x-afe.c:452:12: warning: operator '?:'
has lower precedence than '|'; '|' will be evaluated first
[-Wbitwise-conditional-parentheses]

ret = sdp_clrset(state, ADV748X_SDP_FRP, ADV748X_SDP_FRP_MASK, enable
? ctrl->val - 1 : 0);

Fixes: 3e89586a64df ("media: i2c: adv748x: add adv748x driver")
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

authored by

Gustavo A. R. Silva and committed by
Mauro Carvalho Chehab
0d962e06 c4e8f760

+4 -4
+4 -4
drivers/media/i2c/adv748x/adv748x.h
··· 394 394 395 395 #define io_read(s, r) adv748x_read(s, ADV748X_PAGE_IO, r) 396 396 #define io_write(s, r, v) adv748x_write(s, ADV748X_PAGE_IO, r, v) 397 - #define io_clrset(s, r, m, v) io_write(s, r, (io_read(s, r) & ~m) | v) 397 + #define io_clrset(s, r, m, v) io_write(s, r, (io_read(s, r) & ~(m)) | (v)) 398 398 399 399 #define hdmi_read(s, r) adv748x_read(s, ADV748X_PAGE_HDMI, r) 400 - #define hdmi_read16(s, r, m) (((hdmi_read(s, r) << 8) | hdmi_read(s, r+1)) & m) 400 + #define hdmi_read16(s, r, m) (((hdmi_read(s, r) << 8) | hdmi_read(s, (r)+1)) & (m)) 401 401 #define hdmi_write(s, r, v) adv748x_write(s, ADV748X_PAGE_HDMI, r, v) 402 402 403 403 #define repeater_read(s, r) adv748x_read(s, ADV748X_PAGE_REPEATER, r) ··· 405 405 406 406 #define sdp_read(s, r) adv748x_read(s, ADV748X_PAGE_SDP, r) 407 407 #define sdp_write(s, r, v) adv748x_write(s, ADV748X_PAGE_SDP, r, v) 408 - #define sdp_clrset(s, r, m, v) sdp_write(s, r, (sdp_read(s, r) & ~m) | v) 408 + #define sdp_clrset(s, r, m, v) sdp_write(s, r, (sdp_read(s, r) & ~(m)) | (v)) 409 409 410 410 #define cp_read(s, r) adv748x_read(s, ADV748X_PAGE_CP, r) 411 411 #define cp_write(s, r, v) adv748x_write(s, ADV748X_PAGE_CP, r, v) 412 - #define cp_clrset(s, r, m, v) cp_write(s, r, (cp_read(s, r) & ~m) | v) 412 + #define cp_clrset(s, r, m, v) cp_write(s, r, (cp_read(s, r) & ~(m)) | (v)) 413 413 414 414 #define tx_read(t, r) adv748x_read(t->state, t->page, r) 415 415 #define tx_write(t, r, v) adv748x_write(t->state, t->page, r, v)