mm/damon/core: document damos_commit_dests() failure semantics

Add a kernel-doc-like comment to damos_commit_dests() documenting its
allocation failure contract: on -ENOMEM, the destination structure is left
in a partially torn-down state that is safe to deallocate via
damon_destroy_scheme(), but must not be reused for further commits.

This was unclear from the code alone and led to a separate patch [1]
attempting to reset nr_dests on failure.  Make the intended usage explicit
so future readers do not repeat the confusion.

Link: https://lkml.kernel.org/r/20260320143648.91673-1-sj@kernel.org
Link: https://lore.kernel.org/20260318214939.36100-1-objecting@objecting.org [1]
Signed-off-by: Josh Law <objecting@objecting.org>
Reviewed-by: SeongJae Park <sj@kernel.org>
Signed-off-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Josh Law 2026-03-20 07:36:45 -07:00 committed by Andrew Morton
parent a6a8c087dc
commit cc4555fc6d

View File

@ -1060,6 +1060,23 @@ static void damos_set_filters_default_reject(struct damos *s)
damos_filters_default_reject(&s->ops_filters);
}
/*
* damos_commit_dests() - Copy migration destinations from @src to @dst.
* @dst: Destination structure to update.
* @src: Source structure to copy from.
*
* If the number of destinations has changed, the old arrays in @dst are freed
* and new ones are allocated. On success, @dst contains a full copy of
* @src's arrays and count.
*
* On allocation failure, @dst is left in a partially torn-down state: its
* arrays may be NULL and @nr_dests may not reflect the actual allocation
* sizes. The structure remains safe to deallocate via damon_destroy_scheme(),
* but callers must not reuse @dst for further commits it should be
* discarded.
*
* Return: 0 on success, -ENOMEM on allocation failure.
*/
static int damos_commit_dests(struct damos_migrate_dests *dst,
struct damos_migrate_dests *src)
{