RDMA/hns: Prevent le32 from being implicitly converted to u32
authorLang Cheng <chenglang@huawei.com>
Fri, 2 Apr 2021 09:07:34 +0000 (17:07 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 8 Apr 2021 19:08:22 +0000 (16:08 -0300)
Replace BUILD_BUG_ON_ZERO() with BUILD_BUG_ON() to avoid sparse
complaining "restricted __le32 degrades to integer".

Link: https://lore.kernel.org/r/1617354454-47840-10-git-send-email-liweihang@huawei.com
Signed-off-by: Lang Cheng <chenglang@huawei.com>
Signed-off-by: Weihang Li <liweihang@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/hns/hns_roce_common.h

index 23c438c..f6e7984 100644 (file)
@@ -48,7 +48,8 @@
 #define roce_set_field(origin, mask, shift, val)                               \
        do {                                                                   \
                (origin) &= ~cpu_to_le32(mask);                                \
-               (origin) |= cpu_to_le32(((u32)(val) << (u32)(shift)) & (mask));     \
+               (origin) |=                                                    \
+                       cpu_to_le32(((u32)(val) << (u32)(shift)) & (mask));    \
        } while (0)
 
 #define roce_set_bit(origin, shift, val)                                       \
@@ -59,9 +60,9 @@
 #define _hr_reg_enable(ptr, field_type, field_h, field_l)                      \
        ({                                                                     \
                const field_type *_ptr = ptr;                                  \
-               *((__le32 *)_ptr + (field_h) / 32) |=                          \
-                       cpu_to_le32(BIT((field_l) % 32)) +                     \
-                       BUILD_BUG_ON_ZERO((field_h) != (field_l))            \
+               *((__le32 *)_ptr + (field_h) / 32) |= cpu_to_le32(             \
+                       BIT((field_l) % 32) +                                  \
+                       BUILD_BUG_ON_ZERO((field_h) != (field_l)));            \
        })
 
 #define hr_reg_enable(ptr, field) _hr_reg_enable(ptr, field)
 #define _hr_reg_clear(ptr, field_type, field_h, field_l)                       \
        ({                                                                     \
                const field_type *_ptr = ptr;                                  \
+               BUILD_BUG_ON(((field_h) / 32) != ((field_l) / 32));            \
                *((__le32 *)_ptr + (field_h) / 32) &=                          \
-                       cpu_to_le32(                                           \
-                               ~GENMASK((field_h) % 32, (field_l) % 32)) +    \
-                       BUILD_BUG_ON_ZERO(((field_h) / 32) !=                  \
-                                         ((field_l) / 32));                   \
+                       ~cpu_to_le32(GENMASK((field_h) % 32, (field_l) % 32)); \
        })
 
 #define hr_reg_clear(ptr, field) _hr_reg_clear(ptr, field)