On Tue, 2026-07-14 at 16:33 +0800, liqiang wrote:
> The slot array already tracks allocation and task_monitor_count
> duplicates that state. On an invalid second release, the old code
> warns but still decrements the counter, corrupting later allocations.
> 
> Use the slot array as the sole source of truth. Return after warning
> about an unused slot, and return -EBUSY when no slot is free.
> 
> Signed-off-by: liqiang <[email protected]>

Thanks for the patch! It looks good to me:

Reviewed-by: Gabriele Monaco <[email protected]>

However, your signoff should include a "known identity" [1]. For most people
this is an official name and surname (Li Qiang ?).

You could probably just reply with the new signoff, but it's probably better you
send a V2 with it updated. Feel free to also include my review tag.

I suggest you configure git accordingly e.g.:

  git config set user.name "Name Surname"
  git commit --amend --reset-author --signoff
  # will open an editor from there remove the old signoff and add the review tag

Thanks,
Gabriele

[1] -
https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin

> ---
>  kernel/trace/rv/rv.c | 18 +++++-------------
>  1 file changed, 5 insertions(+), 13 deletions(-)
> 
> diff --git a/kernel/trace/rv/rv.c b/kernel/trace/rv/rv.c
> index ee4e68102f17..187d87d5991c 100644
> --- a/kernel/trace/rv/rv.c
> +++ b/kernel/trace/rv/rv.c
> @@ -164,7 +164,6 @@ struct dentry *get_monitors_root(void)
>   */
>  LIST_HEAD(rv_monitors_list);
>  
> -static int task_monitor_count;
>  static bool task_monitor_slots[CONFIG_RV_PER_TASK_MONITORS];
>  
>  int rv_get_task_monitor_slot(void)
> @@ -173,21 +172,14 @@ int rv_get_task_monitor_slot(void)
>  
>       lockdep_assert_held(&rv_interface_lock);
>  
> -     if (task_monitor_count == CONFIG_RV_PER_TASK_MONITORS)
> -             return -EBUSY;
> -
> -     task_monitor_count++;
> -
>       for (i = 0; i < CONFIG_RV_PER_TASK_MONITORS; i++) {
> -             if (task_monitor_slots[i] == false) {
> +             if (!task_monitor_slots[i]) {
>                       task_monitor_slots[i] = true;
>                       return i;
>               }
>       }
>  
> -     WARN_ONCE(1, "RV task_monitor_count and slots are out of sync\n");
> -
> -     return -EINVAL;
> +     return -EBUSY;
>  }
>  
>  void rv_put_task_monitor_slot(int slot)
> @@ -199,10 +191,10 @@ void rv_put_task_monitor_slot(int slot)
>               return;
>       }
>  
> -     WARN_ONCE(!task_monitor_slots[slot], "RV releasing unused
> task_monitor_slots: %d\n",
> -               slot);
> +     if (WARN_ONCE(!task_monitor_slots[slot],
> +                   "RV releasing unused task monitor slot: %d\n", slot))
> +             return;
>  
> -     task_monitor_count--;
>       task_monitor_slots[slot] = false;
>  }
>  


Reply via email to