Re: [PATCH V9 01/16] rv: Add Runtime Verification (RV) interface

From: Steven Rostedt
Date: Sun Jul 31 2022 - 13:01:57 EST


On Sun, 31 Jul 2022 12:47:30 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> But Daniel, these checks do need to be updated. Please send patches on
> top of this series to address it.

I believe what Tao is trying to say is this:

If we set RV_PER_TASKS_MONITORS greater than 1 we have:

int rv_enable_monitor(struct rv_monitor_def *mdef)
{
int retval;

lockdep_assert_held(&rv_interface_lock);

if (mdef->monitor->enabled)
return 0;

retval = mdef->monitor->enable(); <- if that returns positive, then things break.

if (!retval)
mdef->monitor->enabled = 1; <- this is not set.

return retval;
}

static int enable_wip(void)
{
int retval;

retval = da_monitor_init_wip(); <- if that returns positive, things break
if (retval)
return retval;



static int da_monitor_init_##name(void) \
{ \
int slot; \
\
slot = rv_get_task_monitor_slot(); <- if this returns positive, things break \
if (slot < 0 || slot >= RV_PER_TASK_MONITOR_INIT) \

And we probably need slot to be negative if it is greater or equal to RV_PER_TASK_MONITOR_INIT.

return slot; \


int rv_get_task_monitor_slot(void)
{
int i;

lockdep_assert_held(&rv_interface_lock);

if (task_monitor_count == RV_PER_TASK_MONITORS)
return -EBUSY;

task_monitor_count++;

for (i = 0; i < RV_PER_TASK_MONITORS; i++) {
if (task_monitor_slots[i] == false) {
task_monitor_slots[i] = true;
return i; <- if RV_PER_TASK_MONITORS > 1 then it can return positive!
}
}

-- Steve