IB/core - ib_umad can cause address alignment fault
In user_mad.c, the definition for struct ib_umad_packet includes
struct ib_user_mad at an odd 32-bit offset. When ib_umad_write()
tries to assign rmpp_mad->mad_hdr.tid, there is an alignment fault on
architectures which have strict alignment for load/stores.
This patch fixes the problem by changing the offset on which
struct ib_user_mad is defined within struct ib_umad_packet.
Thanks go to John W. Marland <[EMAIL PROTECTED]> for finding this.
Signed-off-by: Ralph Campbell <[EMAIL PROTECTED]>
diff -r b1128b48dc99 drivers/infiniband/core/user_mad.c
--- a/drivers/infiniband/core/user_mad.c Fri Jan 12 20:00:03 2007 +0000
+++ b/drivers/infiniband/core/user_mad.c Wed Jan 17 14:09:37 2007 -0800
@@ -125,7 +125,7 @@ struct ib_umad_packet {
struct ib_mad_send_buf *msg;
struct ib_mad_recv_wc *recv_wc;
struct list_head list;
- int length;
+ long length;
struct ib_user_mad mad;
};
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general