On Fri, 18 Sep 2015 11:57:29 +0100 Kapileshwar Singh <[email protected]> wrote: \ > @@ -3754,7 +3754,24 @@ static void print_str_arg(struct trace_seq *s, void > *data, int size, > */ > if (!(field->flags & FIELD_IS_ARRAY) && > field->size == pevent->long_size) { > - addr = *(unsigned long *)(data + field->offset); > + > + /* Handle heterogeneous recording and processing > + * architectures > + * > + * CASE I: > + * Traces recorded on 32-bit devices (32-bit > + * addressing) and processed on 64-bit devices: > + * In this case, the higher 32-bits of the address > + * need to be ignored. > + * > + * CASE II: > + * Traces recorded on 64 bit devices and processed > + * on 32-bit devices. > + * In this case the pointer must be 64-bit long > + */ > + addr = *(uint64_t *)(data + field->offset) & > + ((1ULL << pevent->long_size * 8) - 1);
As I already replied. The above has two bugs in it. -- Steve > + > /* Check if it matches a print format */ > printk = find_printk(pevent, addr); > if (printk) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

