diff --git a/drivers/infiniband/hw/hns/hns_roce_db.c b/drivers/infiniband/hw/hns/hns_roce_db.c index 484aedb4909c8324a1bfbfce55e12dfde0999e72..f02ce985ebb98c37832eb7dfd92bd29256edbc09 100644 --- a/drivers/infiniband/hw/hns/hns_roce_db.c +++ b/drivers/infiniband/hw/hns/hns_roce_db.c @@ -31,8 +31,11 @@ int hns_roce_db_map_user(struct hns_roce_ucontext *context, unsigned long virt, page->user_virt = (virt & PAGE_MASK); page->umem = ib_umem_get(&context->ibucontext, virt & PAGE_MASK, PAGE_SIZE, 0, 0); - if (IS_ERR(page->umem)) { - ret = PTR_ERR(page->umem); + if (IS_ERR_OR_NULL(page->umem)) { + if (!page->umem) + ret = -EINVAL; + else + ret = PTR_ERR(page->umem); kfree(page); goto out; }