Re: [PATCH 07/10] Pass the return value of kref_put further

From: Maksym Planeta
Date: Mon Jul 22 2019 - 11:31:25 EST


In a later patch I need to know if the dependency to QP object still exists or not.

On 22/07/2019 17:29, Jason Gunthorpe wrote:
On Mon, Jul 22, 2019 at 05:14:23PM +0200, Maksym Planeta wrote:
Used in a later patch.

Signed-off-by: Maksym Planeta <mplaneta@xxxxxxxxxxxxxxxxxxxx>
drivers/infiniband/sw/rxe/rxe_pool.c | 3 ++-
drivers/infiniband/sw/rxe/rxe_pool.h | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/sw/rxe/rxe_pool.c b/drivers/infiniband/sw/rxe/rxe_pool.c
index 30a887cf9200..711d7d7f3692 100644
+++ b/drivers/infiniband/sw/rxe/rxe_pool.c
@@ -541,7 +541,7 @@ static void rxe_dummy_release(struct kref *kref)
{
}
-void rxe_drop_ref(struct rxe_pool_entry *pelem)
+int rxe_drop_ref(struct rxe_pool_entry *pelem)
{
int res;
struct rxe_pool *pool = pelem->pool;
@@ -553,4 +553,5 @@ void rxe_drop_ref(struct rxe_pool_entry *pelem)
if (res) {
rxe_elem_release(&pelem->ref_cnt);
}
+ return res;
}

Using the return value of kref_put at all is super sketchy. Are you
sure this is actually a kref usage pattern?

Why would this be needed?

Jason


--
Regards,
Maksym Planeta