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