lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.5 210/542] media: v4l2-device.h: Explicitly compare grp{id,mask} to zero in v4l2_device macros
    Date
    From: Nathan Chancellor <natechancellor@gmail.com>

    [ Upstream commit afb34781620274236bd9fc9246e22f6963ef5262 ]

    When building with Clang + -Wtautological-constant-compare, several of
    the ivtv and cx18 drivers warn along the lines of:

    drivers/media/pci/cx18/cx18-driver.c:1005:21: warning: converting the
    result of '<<' to a boolean always evaluates to true
    [-Wtautological-constant-compare]
    cx18_call_hw(cx, CX18_HW_GPIO_RESET_CTRL,
    ^
    drivers/media/pci/cx18/cx18-cards.h:18:37: note: expanded from macro
    'CX18_HW_GPIO_RESET_CTRL'
    #define CX18_HW_GPIO_RESET_CTRL (1 << 6)
    ^
    1 warning generated.

    This warning happens because the shift operation is implicitly converted
    to a boolean in v4l2_device_mask_call_all before being negated. This can
    be solved by just comparing the mask result to 0 explicitly so that
    there is no boolean conversion. The ultimate goal is to enable
    -Wtautological-compare globally because there are several subwarnings
    that would be helpful to have.

    For visual consistency and avoidance of these warnings in the future,
    all of the implicitly boolean conversions in the v4l2_device macros
    are converted to explicit ones as well.

    Link: https://github.com/ClangBuiltLinux/linux/issues/752

    Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    include/media/v4l2-device.h | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h
    index 5f36e0d2ede67..95353ae476a18 100644
    --- a/include/media/v4l2-device.h
    +++ b/include/media/v4l2-device.h
    @@ -371,7 +371,7 @@ static inline bool v4l2_device_supports_requests(struct v4l2_device *v4l2_dev)
    struct v4l2_subdev *__sd; \
    \
    __v4l2_device_call_subdevs_p(v4l2_dev, __sd, \
    - !(grpid) || __sd->grp_id == (grpid), o, f , \
    + (grpid) == 0 || __sd->grp_id == (grpid), o, f , \
    ##args); \
    } while (0)

    @@ -403,7 +403,7 @@ static inline bool v4l2_device_supports_requests(struct v4l2_device *v4l2_dev)
    ({ \
    struct v4l2_subdev *__sd; \
    __v4l2_device_call_subdevs_until_err_p(v4l2_dev, __sd, \
    - !(grpid) || __sd->grp_id == (grpid), o, f , \
    + (grpid) == 0 || __sd->grp_id == (grpid), o, f , \
    ##args); \
    })

    @@ -431,8 +431,8 @@ static inline bool v4l2_device_supports_requests(struct v4l2_device *v4l2_dev)
    struct v4l2_subdev *__sd; \
    \
    __v4l2_device_call_subdevs_p(v4l2_dev, __sd, \
    - !(grpmsk) || (__sd->grp_id & (grpmsk)), o, f , \
    - ##args); \
    + (grpmsk) == 0 || (__sd->grp_id & (grpmsk)), o, \
    + f , ##args); \
    } while (0)

    /**
    @@ -462,8 +462,8 @@ static inline bool v4l2_device_supports_requests(struct v4l2_device *v4l2_dev)
    ({ \
    struct v4l2_subdev *__sd; \
    __v4l2_device_call_subdevs_until_err_p(v4l2_dev, __sd, \
    - !(grpmsk) || (__sd->grp_id & (grpmsk)), o, f , \
    - ##args); \
    + (grpmsk) == 0 || (__sd->grp_id & (grpmsk)), o, \
    + f , ##args); \
    })


    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 19:12    [W:2.972 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site