Curiously, kexec_load uses compat on x32/n32, so its parameters should
be 4 bytes in size on these ABIs.

* kexec.c (SYS_FUNC(kexec_load)): Use widen_to_ulong for casting
parameters to proper size on x32/n32.
---
 kexec.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kexec.c b/kexec.c
index d27bfe1..bf84db9 100644
--- a/kexec.c
+++ b/kexec.c
@@ -81,15 +81,16 @@ print_kexec_segments(struct tcb *tcp, const unsigned long 
addr,
 SYS_FUNC(kexec_load)
 {
        /* entry, nr_segments */
-       printaddr(tcp->u_arg[0]);
-       tprintf(", %lu, ", tcp->u_arg[1]);
+       printaddr(widen_to_ulong(tcp->u_arg[0]));
+       tprintf(", %lu, ", widen_to_ulong(tcp->u_arg[1]));
 
        /* segments */
-       print_kexec_segments(tcp, tcp->u_arg[2], tcp->u_arg[1]);
+       print_kexec_segments(tcp, widen_to_ulong(tcp->u_arg[2]),
+                            widen_to_ulong(tcp->u_arg[1]));
        tprints(", ");
 
        /* flags */
-       unsigned long n = tcp->u_arg[3];
+       unsigned long n = widen_to_ulong(tcp->u_arg[3]);
        printxval_long(kexec_arch_values, n & KEXEC_ARCH_MASK, 
"KEXEC_ARCH_???");
        n &= ~(unsigned long) KEXEC_ARCH_MASK;
        if (n) {
-- 
1.7.10.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to