lkml.org 
[lkml]   [2019]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.19 053/237] scsi: bfa: Avoid implicit enum conversion in bfad_im_post_vendor_event
    Date
    From: Nathan Chancellor <natechancellor@gmail.com>

    [ Upstream commit 761c830ec7b3d0674b3ad89cefd77a692634e305 ]

    Clang warns when one enumerated type is implicitly converted to another.

    drivers/scsi/bfa/bfa_fcs_lport.c:379:26: warning: implicit conversion
    from enumeration type 'enum bfa_lport_aen_event' to different
    enumeration type 'enum bfa_ioc_aen_event' [-Wenum-conversion]
    BFA_AEN_CAT_LPORT, event);
    ^~~~~

    The root cause of these warnings is the bfad_im_post_vendor_event
    function, which expects a value from enum bfa_ioc_aen_event but there
    are multiple instances of values from enums bfa_port_aen_event,
    bfa_audit_aen_event, and bfa_lport_aen_event being used in this
    function.

    Given that this doesn't appear to be a problem since cat helps with
    differentiating the events, just change evt's type to int so that no
    conversion needs to happen and Clang won't warn. Update aen_type's type
    in bfa_aen_entry_s as members that hold enumerated types should be int.

    Link: https://github.com/ClangBuiltLinux/linux/issues/147
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/scsi/bfa/bfa_defs_svc.h | 2 +-
    drivers/scsi/bfa/bfad_im.h | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/scsi/bfa/bfa_defs_svc.h b/drivers/scsi/bfa/bfa_defs_svc.h
    index 3d0c96a5c8735..c19c26e0e405e 100644
    --- a/drivers/scsi/bfa/bfa_defs_svc.h
    +++ b/drivers/scsi/bfa/bfa_defs_svc.h
    @@ -1453,7 +1453,7 @@ union bfa_aen_data_u {
    struct bfa_aen_entry_s {
    struct list_head qe;
    enum bfa_aen_category aen_category;
    - u32 aen_type;
    + int aen_type;
    union bfa_aen_data_u aen_data;
    u64 aen_tv_sec;
    u64 aen_tv_usec;
    diff --git a/drivers/scsi/bfa/bfad_im.h b/drivers/scsi/bfa/bfad_im.h
    index e61ed8dad0b4f..bd4ac187fd8e7 100644
    --- a/drivers/scsi/bfa/bfad_im.h
    +++ b/drivers/scsi/bfa/bfad_im.h
    @@ -143,7 +143,7 @@ struct bfad_im_s {
    static inline void bfad_im_post_vendor_event(struct bfa_aen_entry_s *entry,
    struct bfad_s *drv, int cnt,
    enum bfa_aen_category cat,
    - enum bfa_ioc_aen_event evt)
    + int evt)
    {
    struct timespec64 ts;

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-16 16:42    [W:4.101 / U:0.500 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site