On Mon, Mar 17 2025 at 09:57, James Bottomley wrote: > On Mon, 2025-03-17 at 14:29 +0100, Thomas Gleixner wrote: >> +#define retain_ptr(p) \ >> + __get_and_null(p, NULL) > > This doesn't score very highly on the Rusty API design scale because it > can be used anywhere return_ptr() should be used. To force the > distinction between the two cases at the compiler level, should there > be a cast to void in the above to prevent using the return value? Indeed. Delta patch below seems to do the trick. Thanks, tglx --- diff --git a/include/linux/cleanup.h b/include/linux/cleanup.h index 6537f8dfe1bb..859b06d4ad7a 100644 --- a/include/linux/cleanup.h +++ b/include/linux/cleanup.h @@ -231,8 +231,7 @@ const volatile void * __must_check_fn(const volatile void *val) * retain_ptr(f); * return ret; */ -#define retain_ptr(p) \ - __get_and_null(p, NULL) +#define retain_ptr(p) ((void)__get_and_null(p, NULL)) /* * DEFINE_CLASS(name, type, exit, init, init_args...):