@@ -474,12 +474,18 @@ static ssize_t dbgfs_target_ids_write(st
/* remove previously set targets */
dbgfs_set_targets(ctx, 0, NULL);
+ if (!nr_targets) {
+ ret = count;
+ goto unlock_out;
+ }
/* Configure the context for the address space type */
if (id_is_pid)
- damon_va_set_operations(ctx);
+ ret = damon_select_ops(ctx, DAMON_OPS_VADDR);
else
- damon_pa_set_operations(ctx);
+ ret = damon_select_ops(ctx, DAMON_OPS_PADDR);
+ if (ret)
+ goto unlock_out;
ret = dbgfs_set_targets(ctx, nr_targets, target_pids);
if (!ret)
@@ -735,7 +741,11 @@ static struct damon_ctx *dbgfs_new_ctx(v
if (!ctx)
return NULL;
- damon_va_set_operations(ctx);
+ if (damon_select_ops(ctx, DAMON_OPS_VADDR) && damon_select_ops(ctx,
+ DAMON_OPS_PADDR)) {
+ damon_destroy_ctx(ctx);
+ return NULL;
+ }
ctx->callback.before_terminate = dbgfs_before_terminate;
return ctx;
}