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.
pgpfYKDtBDdNk.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies