Mike Rapoport <[email protected]> writes: > On Mon, 22 Jun 2026 22:57:35 +0000, Tarun Sahu <[email protected]> wrote: >> Adding KHOSER_COPY_TYPESAFE and KHOSER_COPY_TYPEUNSAFE to copy one >> serializeable pointer to another. It basically allows copy of phys val >> of the serializeable pointer. > > Please update the commit message :) > >> >> >> diff --git a/include/linux/kho/abi/kexec_handover.h >> b/include/linux/kho/abi/kexec_handover.h >> index 5e2eb8519bda..c1b61d875dcc 100644 >> --- a/include/linux/kho/abi/kexec_handover.h >> +++ b/include/linux/kho/abi/kexec_handover.h >> @@ -139,6 +139,17 @@ >> (typeof((s).ptr))((s).phys ? phys_to_virt((s).phys) : NULL); \ >> }) >> >> +/* Copies one serializable pointer to another. */ >> +#define KHOSER_COPY_PTR(dest, src) \ >> + ({ \ >> + static_assert( \ >> + __builtin_types_compatible_p(typeof((dest).ptr), >> typeof((src).ptr)) || \ >> + __builtin_types_compatible_p(typeof((dest).ptr), void >> *) || \ >> + __builtin_types_compatible_p(typeof((src).ptr), void >> *), \ >> + "pointer type mismatch in KHOSER_COPY_PTR" \ >> + ); \ >> + (dest).phys = (src).phys; \ >> + }) > > I'd suggest declaring local variables for the pointers and verifying > their compatibility. E.g. > > ({ \ > typeof((dest).ptr) __dst; \ > typeof((src).ptr) __src; \ > static_assert( \ > __builtin_types_compatible_p(__dst, __src)) || \ > __builtin_types_compatible_p(__dst, void *) || \ > __builtin_types_compatible_p(__src, void *), \ > "pointer type mismatch in KHOSER_COPY_PTR" \ > ); \ > (dest).phys = (src).phys; \ > }) > > IMO it's easier to decipher this way.
Okay, Will update in next revision. Thanks for reviewing. ~Tarun > > -- > Sincerely yours, > Mike.
