lkml.org 
[lkml]   [2020]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 33/73] IB/rdmavt: Always return ERR_PTR from rvt_create_mmap_info()
    Date
    From: Sudip Mukherjee <sudipm.mukherjee@gmail.com>

    commit 47c370c1a5eea9b2f6f026d49e060c3748c89667 upstream.

    The commit below modified rvt_create_mmap_info() to return ERR_PTR's but
    didn't update the callers to handle them. Modify rvt_create_mmap_info() to
    only return ERR_PTR and fix all error checking after
    rvt_create_mmap_info() was called.

    Fixes: ff23dfa13457 ("IB: Pass only ib_udata in function prototypes")
    Link: https://lore.kernel.org/r/20200424173146.10970-1-sudipm.mukherjee@gmail.com
    Cc: stable@vger.kernel.org [5.4+]
    Tested-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Acked-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/sw/rdmavt/cq.c | 4 ++--
    drivers/infiniband/sw/rdmavt/mmap.c | 4 ++--
    drivers/infiniband/sw/rdmavt/qp.c | 4 ++--
    drivers/infiniband/sw/rdmavt/srq.c | 4 ++--
    4 files changed, 8 insertions(+), 8 deletions(-)

    --- a/drivers/infiniband/sw/rdmavt/cq.c
    +++ b/drivers/infiniband/sw/rdmavt/cq.c
    @@ -248,8 +248,8 @@ int rvt_create_cq(struct ib_cq *ibcq, co
    */
    if (udata && udata->outlen >= sizeof(__u64)) {
    cq->ip = rvt_create_mmap_info(rdi, sz, udata, u_wc);
    - if (!cq->ip) {
    - err = -ENOMEM;
    + if (IS_ERR(cq->ip)) {
    + err = PTR_ERR(cq->ip);
    goto bail_wc;
    }

    --- a/drivers/infiniband/sw/rdmavt/mmap.c
    +++ b/drivers/infiniband/sw/rdmavt/mmap.c
    @@ -154,7 +154,7 @@ done:
    * @udata: user data (must be valid!)
    * @obj: opaque pointer to a cq, wq etc
    *
    - * Return: rvt_mmap struct on success
    + * Return: rvt_mmap struct on success, ERR_PTR on failure
    */
    struct rvt_mmap_info *rvt_create_mmap_info(struct rvt_dev_info *rdi, u32 size,
    struct ib_udata *udata, void *obj)
    @@ -166,7 +166,7 @@ struct rvt_mmap_info *rvt_create_mmap_in

    ip = kmalloc_node(sizeof(*ip), GFP_KERNEL, rdi->dparms.node);
    if (!ip)
    - return ip;
    + return ERR_PTR(-ENOMEM);

    size = PAGE_ALIGN(size);

    --- a/drivers/infiniband/sw/rdmavt/qp.c
    +++ b/drivers/infiniband/sw/rdmavt/qp.c
    @@ -1244,8 +1244,8 @@ struct ib_qp *rvt_create_qp(struct ib_pd

    qp->ip = rvt_create_mmap_info(rdi, s, udata,
    qp->r_rq.wq);
    - if (!qp->ip) {
    - ret = ERR_PTR(-ENOMEM);
    + if (IS_ERR(qp->ip)) {
    + ret = ERR_CAST(qp->ip);
    goto bail_qpn;
    }

    --- a/drivers/infiniband/sw/rdmavt/srq.c
    +++ b/drivers/infiniband/sw/rdmavt/srq.c
    @@ -111,8 +111,8 @@ int rvt_create_srq(struct ib_srq *ibsrq,
    u32 s = sizeof(struct rvt_rwq) + srq->rq.size * sz;

    srq->ip = rvt_create_mmap_info(dev, s, udata, srq->rq.wq);
    - if (!srq->ip) {
    - ret = -ENOMEM;
    + if (IS_ERR(srq->ip)) {
    + ret = PTR_ERR(srq->ip);
    goto bail_wq;
    }


    \
     
     \ /
      Last update: 2020-05-04 20:10    [W:4.036 / U:0.524 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site