lkml.org 
[lkml]   [2016]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.6 012/203] IB/rdmavt: Correct qp_priv_alloc() return value test
    Date
    4.6-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Mike Marciniszyn <mike.marciniszyn@intel.com>

    commit c755f4afa66ad3ed98870bd3254f37c47fb2c800 upstream.

    The current drivers return errors from this calldown
    wrapped in an ERR_PTR().

    The rdmavt code incorrectly tests for NULL.

    The code is fixed to use IS_ERR() and change ret according
    to the driver return value.

    Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/sw/rdmavt/qp.c | 4 +++-
    include/rdma/rdma_vt.h | 4 +++-
    2 files changed, 6 insertions(+), 2 deletions(-)

    --- a/drivers/infiniband/sw/rdmavt/qp.c
    +++ b/drivers/infiniband/sw/rdmavt/qp.c
    @@ -683,8 +683,10 @@ struct ib_qp *rvt_create_qp(struct ib_pd
    * initialization that is needed.
    */
    priv = rdi->driver_f.qp_priv_alloc(rdi, qp, gfp);
    - if (!priv)
    + if (IS_ERR(priv)) {
    + ret = priv;
    goto bail_qp;
    + }
    qp->priv = priv;
    qp->timeout_jiffies =
    usecs_to_jiffies((4096UL * (1UL << qp->timeout)) /
    --- a/include/rdma/rdma_vt.h
    +++ b/include/rdma/rdma_vt.h
    @@ -203,7 +203,9 @@ struct rvt_driver_provided {

    /*
    * Allocate a private queue pair data structure for driver specific
    - * information which is opaque to rdmavt.
    + * information which is opaque to rdmavt. Errors are returned via
    + * ERR_PTR(err). The driver is free to return NULL or a valid
    + * pointer.
    */
    void * (*qp_priv_alloc)(struct rvt_dev_info *rdi, struct rvt_qp *qp,
    gfp_t gfp);

    \
     
     \ /
      Last update: 2016-07-26 01:01    [W:4.105 / U:0.432 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site