Re: [PATCH v2] scsi: target: copy iSCSI ISID before unmapping the PR OUT buffer

From: James Bottomley

Date: Tue Jun 09 2026 - 07:42:10 EST


On Tue, 2026-06-09 at 09:50 +0100, John Garry wrote:
> > @@ -1808,9 +1809,11 @@ core_scsi3_decode_spec_i_port(
> >     core_scsi3_tpg_undepend_item(dest_tpg);
> >     }
> >
> > + kfree(iport_ptr);
> >     return 0;
> >    out_unmap:
> >     transport_kunmap_data_sg(cmd);
> > + kfree(iport_ptr);
>
> sorry for suggesting this change, but this is worse than what you had
> originally, as we have so many paths to call kfree() [which means
> more bugs possible]
>
> it's hard to make good suggestions for this target code as the
> functions are so large and complex.

Given that it's allocated in a function called by the routine but never
actually retained by anything what about defining it as

chat *iport_ptr __free(kfree) = NULL;

? That way we don't need to care about freeing it in the error legs.
Even if the value were retained under some conditions, you just signal
retention by setting iport_ptr to NULL to prevent the kfree on exit.

Regards,

James