scsi: bfa: Avoid implicit enum conversion in bfad_im_post_vendor_event
authorNathan Chancellor <natechancellor@gmail.com>
Thu, 27 Sep 2018 23:56:52 +0000 (16:56 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 Oct 2018 01:45:12 +0000 (21:45 -0400)
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>
drivers/scsi/bfa/bfa_defs_svc.h
drivers/scsi/bfa/bfad_im.h

index 3d0c96a..c19c26e 100644 (file)
@@ -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;
index e61ed8d..bd4ac18 100644 (file)
@@ -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;