On 04/23/2010 01:20 PM, Alexander Graf wrote:
I would say the reason is that if we did not convert the user-space pointer to a "void *" kvm_get_dirty_log() would end up copying the dirty log to (log->dirty_bitmap<< 32) | 0x00000000Well yes, that was the problem. If we always set the __u64 value to the pointer we're safe though. union { void *p; __u64 q; } void x(void *r) { // breaks: p = r; // works: q = (ulong)r; }
In that case it's better to avoid p altogether, since users will naturally assign to the pointer.
Using a 64-bit integer avoids the problem (though perhaps not sufficient for s390, Arnd?)
-- Do not meddle in the internals of kernels, for they are subtle and quick to panic. -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
