[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen stable-4.18] altcall: fix __alt_call_maybe_initdata so it's safe for livepatch



commit 8bdcb0b98b53140102031ceca0611f22190227fd
Author:     Roger Pau Monné <roger.pau@xxxxxxxxxx>
AuthorDate: Mon Apr 29 09:35:21 2024 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Apr 29 09:35:21 2024 +0200

    altcall: fix __alt_call_maybe_initdata so it's safe for livepatch
    
    Setting alternative call variables as __init is not safe for use with
    livepatch, as livepatches can rightfully introduce new alternative calls to
    structures marked as __alt_call_maybe_initdata (possibly just indirectly 
due to
    replacing existing functions that use those).  Attempting to resolve those
    alternative calls then results in page faults as the variable that holds the
    function pointer address has been freed.
    
    When livepatch is supported use the __ro_after_init attribute instead of
    __initdata for __alt_call_maybe_initdata.
    
    Fixes: f26bb285949b ('xen: Implement xen/alternative-call.h for use in 
common code')
    Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    master commit: af4cd0a6a61cdb03bc1afca9478b05b0c9703599
    master date: 2024-04-11 18:51:36 +0100
---
 xen/include/xen/alternative-call.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/alternative-call.h 
b/xen/include/xen/alternative-call.h
index 5c6b9a562b..10f7d7637e 100644
--- a/xen/include/xen/alternative-call.h
+++ b/xen/include/xen/alternative-call.h
@@ -50,7 +50,12 @@
 
 #include <asm/alternative.h>
 
-#define __alt_call_maybe_initdata __initdata
+#ifdef CONFIG_LIVEPATCH
+/* Must keep for livepatches to resolve alternative calls. */
+# define __alt_call_maybe_initdata __ro_after_init
+#else
+# define __alt_call_maybe_initdata __initdata
+#endif
 
 #else
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.18



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.