On Sat, 30 Mar 2024 21:52:29 -0300, Camila Alvarez Inostroza said:

> I've seen two ways of handling the resulting operation, below are a couple
> of examples:
> (1) if (!atomic_dec_and_test(&rd->refcount))
>            return;
>       call_rcu(&rd->rcu, free_rootdomain);
>
> (2)  if (atomic64_dec_and_test(&map->refcnt)) {
>            /* bpf_map_free_id() must be called first */
>            ...
>         }
>
> Is it prefered to use one option over the other? Or is it just personal
> preference?

Yes. :)

Basically, it will depend on what the code logic structure is like.  If the 
logical
way to do it is "if it fails, return now", then you do (1).  If the logical 
structure
is "if it succeeds, do this before continuing", you do (2).  In other cases,
you may want to do the "structured goto" the kernel uses to unwind allocations
and locks that happened before the failure.

The above is not an exhaustive list.

Attachment: pgpfYKDtBDdNk.pgp
Description: PGP signature

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to