On 13/05/2026 17:58, Boris Brezillon wrote:
> Right now panthor is mixed bag of manual locks and guards. Let's
> make that more consitent and thus encourage new submissions to go
> for guards.

I'm fine with encouraging guards for future code - but I'm a little wary
of a big change like this - it's hard to review it and check that
everything works the same. And it's a little dubious that the mechanical
refactoring produces more readable code in some cases.

That said I asked my friendly AI bot...

[...]

> @@ -3142,48 +3126,44 @@ panthor_mmu_reclaim_priv_bos(struct panthor_device 
> *ptdev,
>       LIST_HEAD(remaining_vms);
>       LIST_HEAD(vms);
>  
> -     mutex_lock(&ptdev->reclaim.lock);
> -     list_splice_init(&ptdev->reclaim.vms, &vms);
> +     scoped_guard(mutex, &ptdev->reclaim.lock)
> +             list_splice_init(&ptdev->reclaim.vms, &vms);
>  
>       while (freed < nr_to_scan) {
>               struct panthor_vm *vm;
>  
> -             vm = list_first_entry_or_null(&vms, typeof(*vm),
> -                                           reclaim.lru_node);
> -             if (!vm)
> -                     break;
> -
> -             if (!kref_get_unless_zero(&vm->base.kref)) {
> -                     list_del_init(&vm->reclaim.lru_node);
> -                     continue;
> +             scoped_guard(mutex, &ptdev->reclaim.lock) {
> +                     vm = list_first_entry_or_null(&vms, typeof(*vm),
> +                                                   reclaim.lru_node);
> +                     if (vm && !kref_get_unless_zero(&vm->base.kref)) {
> +                             list_del_init(&vm->reclaim.lru_node);
> +                             vm = NULL;
> +                     }
>               }
>  
> -             mutex_unlock(&ptdev->reclaim.lock);
> +             if (!vm)
> +                     break;

... and it said the above has changed behaviour.

In the !kref_get_unless_zero() case you now assign vm = NULL which then
leads to the 'break' case above. Previously we 'continue'd.

Thanks,
Steve

Reply via email to