<html><body>
<p><tt>Roland Dreier <rolandd@cisco.com> wrote on 11/07/2005 07:28:33 AM:<br>
<br>
>     Pradeep> Now, sizeof *packet will be different between 32-bit and<br>
>     Pradeep> 64-bit because of the pointers. Because of this, the<br>
>     Pradeep> offset of packet->mad will be incorrect and one might<br>
>     Pradeep> find unexpected data. Would you agree?<br>
> <br>
> I don't understand your point.  packet is a kernel data structure, and<br>
> it doesn't matter that the layout changes if I compile the kernel for<br>
> a different architecture.  What is being copied from userspace is a<br>
> struct ib_user_mad whose does not depend on the word size.<br>
> </tt><br>
<br>
<tt>I have seen applications duplicate the data structure in the kernel. And this is copied across</tt><br>
<tt>the user-kernel space. If a data structure like packet that contains a pointer element were </tt><br>
<tt>copied across the user-kernel boundary one runs into the problem that I was mentioning. </tt><br>
<br>
<tt>In this particular case since ib_user_mad is what is copied across the user-kernel boundary</tt><br>
<tt>it is not an issue. Given that I had already seen this problem in uat.c, I was trying to sound a </tt><br>
<tt>note of caution about this as a potential problem, looking at the kernel data structures.</tt><br>
<br>
<tt>Pradeep</tt><br>
<tt>pradeep@us.ibm.com<br>
<br>
</tt></body></html>