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

From: Jason Gunthorpe
Date: Mon Jul 22 2019 - 11:29:52 EST


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