From: Jan Beulich Date: Tue, 25 Jun 2024 09:36:59 +0000 (+0200) Subject: xen: re-add type checking to {,__}copy_from_guest_offset() X-Git-Tag: 4.19.0-rc1~18 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=735865f88486814dd6ae255f13a7f70cd3b01d4f;p=xen.git xen: re-add type checking to {,__}copy_from_guest_offset() When re-working them to avoid UB on guest address calculations, I failed to add explicit type checks in exchange for the implicit ones that until then had happened in assignments that were there anyway. Fixes: 43d5c5d5f70b ("xen: avoid UB in guest handle arithmetic") Signed-off-by: Jan Beulich Acked-by: Andrew Cooper Release-Acked-by: Oleksii Kurochko --- diff --git a/xen/include/xen/guest_access.h b/xen/include/xen/guest_access.h index 96dbef2e02..a2146749e3 100644 --- a/xen/include/xen/guest_access.h +++ b/xen/include/xen/guest_access.h @@ -86,6 +86,7 @@ #define copy_from_guest_offset(ptr, hnd, off, nr) ({ \ unsigned long s_ = (unsigned long)(hnd).p; \ typeof(*(ptr)) *_d = (ptr); \ + (void)((hnd).p == _d); \ raw_copy_from_guest(_d, \ (const void *)(s_ + (off) * sizeof(*_d)), \ (nr) * sizeof(*_d)); \ @@ -140,6 +141,7 @@ #define __copy_from_guest_offset(ptr, hnd, off, nr) ({ \ unsigned long s_ = (unsigned long)(hnd).p; \ typeof(*(ptr)) *_d = (ptr); \ + (void)((hnd).p == _d); \ __raw_copy_from_guest(_d, \ (const void *)(s_ + (off) * sizeof(*_d)), \ (nr) * sizeof(*_d)); \