Re: [PATCH v2] RDMA/srpt: Fix srpt_alloc_rw_ctxs() unwind counters

Bart Van Assche <[email protected]> Fri, 17 Jul 2026 15:14:33 -0700
Newsgroups org.kernel.vger.target-devel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-rdma
Message-ID <[email protected]>
On 7/16/26 7:00 PM, kensanya wrote:
> I have a question about restoring n_rw_ctx/n_rdma from local
> snapshots versus clearing them to 0 on the unwind path.
> 
> Looking at the call chain:
>    srpt_handle_new_iu()
>      -> srpt_get_send_ioctx()   /* sets n_rdma = 0, n_rw_ctx = 0 */
>      -> srpt_get_desc_tbl()
>           -> srpt_alloc_rw_ctxs()
> 
> so when srpt_alloc_rw_ctxs() is entered, both counters are already
> 0.  On the current call path, assigning 0 on unwind seems
> equivalent to restoring the values saved at function entry.
> 
> Is the save/restore preferred because the loop starts from
> ioctx->n_rw_ctx (i.e. the function is written as if it may extend
> an existing allocation), or is there another reason to prefer it
> over clearing to 0?

Your analysis seems correct to me. I misremembered how the code works
when I wrote the message you replied to. It was a while ago when I
implemented srpt_get_send_ioctx() - in 2010 according to the git
history of the original implementation
(https://github.com/SCST-project/scst).

Bart.