lkml.org 
[lkml]   [2024]   [Mar]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/9] infiniband: uverbs: avoid out-of-range warnings
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    clang warns for comparisons that are always true, which is the case
    for these two page size checks on architectures with 64KB pages:

    drivers/infiniband/core/uverbs_ioctl.c:90:39: error: result of comparison of constant 65536 with expression of type 'u16' (aka 'unsigned short') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
    WARN_ON_ONCE(method_elm->bundle_size > PAGE_SIZE);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
    include/asm-generic/bug.h:104:25: note: expanded from macro 'WARN_ON_ONCE'
    int __ret_warn_on = !!(condition); \
    ^~~~~~~~~
    drivers/infiniband/core/uverbs_ioctl.c:621:17: error: result of comparison of constant 65536 with expression of type '__u16' (aka 'unsigned short') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
    if (hdr.length > PAGE_SIZE ||
    ~~~~~~~~~~ ^ ~~~~~~~~~

    Add a cast to u32 in both cases, so it never warns about this.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    drivers/infiniband/core/uverbs_ioctl.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/infiniband/core/uverbs_ioctl.c b/drivers/infiniband/core/uverbs_ioctl.c
    index f80da6a67e24..e0cc3ddae71b 100644
    --- a/drivers/infiniband/core/uverbs_ioctl.c
    +++ b/drivers/infiniband/core/uverbs_ioctl.c
    @@ -90,7 +90,7 @@ void uapi_compute_bundle_size(struct uverbs_api_ioctl_method *method_elm,
    ALIGN(bundle_size + 256, sizeof(*pbundle->internal_buffer));

    /* Do not want order-2 allocations for this. */
    - WARN_ON_ONCE(method_elm->bundle_size > PAGE_SIZE);
    + WARN_ON_ONCE((u32)method_elm->bundle_size > PAGE_SIZE);
    }

    /**
    @@ -636,7 +636,7 @@ long ib_uverbs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
    if (err)
    return -EFAULT;

    - if (hdr.length > PAGE_SIZE ||
    + if ((u32)hdr.length > PAGE_SIZE ||
    hdr.length != struct_size(&hdr, attrs, hdr.num_attrs))
    return -EINVAL;

    --
    2.39.2

    \
     
     \ /
      Last update: 2024-03-28 15:34    [W:4.195 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site