Here's a patch to replace explicit cast to sdp_opt with container_of, removing assumptions on structure layout. As a side note, wouldnt sk_to_sdp and sdp_to_sk be better names for sdp_sk and sk_sdp?
--- Use container_of in place of cast to sdp_opt. Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]> Index: ulp/sdp/sdp_actv.c =================================================================== --- ulp/sdp/sdp_actv.c (revision 2665) +++ ulp/sdp/sdp_actv.c (working copy) @@ -343,7 +343,7 @@ { struct ib_cm_req_param param; struct sdp_msg_hello *hello_msg; - struct sdp_opt *conn = (struct sdp_opt *) arg; + struct sdp_opt *conn = arg; struct sdpc_buff *buff; int result = 0; /* Index: ulp/sdp/sdp_conn.h =================================================================== --- ulp/sdp/sdp_conn.h (revision 2665) +++ ulp/sdp/sdp_conn.h (working copy) @@ -109,16 +109,6 @@ */ #define SDP_MSG_EVENT_TABLE_SIZE 0x20 -static inline struct sdp_opt *sdp_sk(struct sock *sk) -{ - return (struct sdp_opt *)sk; -} - -static inline struct sock *sk_sdp(struct sdp_opt *conn) -{ - return (struct sock *)conn; -} - #define SDP_CONN_SET_ERR(conn, val) \ ((conn)->error = sk_sdp(conn)->sk_err = (val)) #define SDP_CONN_GET_ERR(conn) \ @@ -182,11 +172,6 @@ * SDP Connection structure. */ struct sdp_opt { - /* - * inet_sock must be first member of sdp_opt - * NOTE: this depends on inet_sock having struct sock as its - * first member - */ struct inet_sock in; __s32 hashent; /* connection ID/hash entry */ atomic_t refcnt; /* connection reference count. */ @@ -386,6 +371,16 @@ #endif }; +static inline struct sdp_opt *sdp_sk(struct sock *sk) +{ + return container_of(sk, struct sdp_opt, in.sk); +} + +static inline struct sock *sk_sdp(struct sdp_opt *conn) +{ + return &conn->in.sk; +} + #define SDP_WRAP_GT(x, y) ((signed int)((x) - (y)) > 0) #define SDP_WRAP_LT(x, y) ((signed int)((x) - (y)) < 0) #define SDP_WRAP_GTE(x, y) ((signed int)((x) - (y)) >= 0) -- MST _______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general