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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux