[openib-general] [PATCH] SDP headers using unsafe macros

Libor Michalek libor at topspin.com
Fri Feb 18 10:55:03 PST 2005


On Thu, Feb 17, 2005 at 05:46:43PM +0200, Michael S. Tsirkin wrote:
> 
> Some SDP hdeaders defines unsafe macros, which may be
> dangerous to use, e.g. inside an if or while statement.

Thanks Michael, applied and commited.

-Libor

> Signed-off-by: Michael S. Tsirkin <mst at mellanox.co.il>
> 
> Index: sdp_proto.h
> ===================================================================
> --- sdp_proto.h	(revision 1810)
> +++ sdp_proto.h	(working copy)
> @@ -585,15 +585,16 @@
>  #define SDP_EXPECT(expr)
>  #define SDP_CHECK_NULL(value, result)
>  #else
> -#define SDP_EXPECT(expr)                                             \
> -{                                                                    \
> -  if (!(expr)) {                                                     \
> -    sdp_dbg_err("EXCEPT: Internal error check <%s> failed.", #expr); \
> -  }                                                                  \
> -} /* SDP_EXPECT */
> +#define SDP_EXPECT(expr)                                                   \
> +do {                                                                       \
> +	if (!(expr)) {                                                     \
> +		sdp_dbg_err("EXCEPT: Internal error check <%s> failed.",   \
> +			#expr);                                            \
> +	}                                                                  \
> +} while (0) /* SDP_EXPECT */
>  
>  #define SDP_CHECK_NULL(value, result) \
> -        if (NULL == (value)) return (result);
> +        do { if (NULL == (value)) return (result); } while (0)
>  #endif
>  /* --------------------------------------------------------------------- */
>  /* Inline functions.                                                     */
> Index: sdp_conn.h
> ===================================================================
> --- sdp_conn.h	(revision 1810)
> +++ sdp_conn.h	(working copy)
> @@ -102,7 +102,7 @@
>   * transition one of the disconnect pending states to disconnect send
>   */
>  #define SDP_ST_PEND_2_SEND(conn) \
> -        (conn)->state = ((conn)->state + 0x0100) & ~SDP_ST_MASK_DIS_PEND;
> +        ((conn)->state = ((conn)->state + 0x0100) & ~SDP_ST_MASK_DIS_PEND)
>  /*
>   * internal connection structure
>   */
> @@ -130,14 +130,14 @@
>   * connection handle within a socket.
>   */
>  #define SDP_GET_CONN(sk) \
> -       *((struct sdp_opt **)&(sk)->sk_protinfo)
> +       (*((struct sdp_opt **)&(sk)->sk_protinfo))
>  #define SDP_SET_CONN(sk, conn) \
> -       *((struct sdp_opt **)&(sk)->sk_protinfo) = (conn)
> +       (*((struct sdp_opt **)&(sk)->sk_protinfo) = (conn))
>  
>  #define SDP_CONN_SET_ERR(conn, val) \
> -        (conn)->error = (conn)->sk->sk_err = (val)
> +        ((conn)->error = (conn)->sk->sk_err = (val))
>  #define SDP_CONN_GET_ERR(conn) \
> -        (conn)->error
> +        ((conn)->error)
>  /* --------------------------------------------------------------------- */
>  /* state transition information recording                                */
>  /* --------------------------------------------------------------------- */
> @@ -153,7 +153,7 @@
>  }; /* struct sdp_conn_state */
>  
>  #define SDP_CONN_ST_SET(conn, val) \
> -{ \
> +do { \
>    (conn)->state = (val); \
>    if (SDP_CONN_STATE_MAX > (conn)->state_rec.value) { \
>      (conn)->state_rec.state[(conn)->state_rec.value] = (val); \
> @@ -161,10 +161,10 @@
>      (conn)->state_rec.line[(conn)->state_rec.value] = __LINE__; \
>      (conn)->state_rec.value++; \
>    } \
> -} 
> +} while(0)
>  
>  #define SDP_CONN_ST_INIT(conn) \
> -{ \
> +do { \
>    (conn)->state = SDP_CONN_ST_INVALID; \
>    for ((conn)->state_rec.value = 0; \
>         SDP_CONN_STATE_MAX > (conn)->state_rec.value; \
> @@ -174,10 +174,10 @@
>      (conn)->state_rec.line[(conn)->state_rec.value] = 0; \
>    } \
>    (conn)->state_rec.value = 0; \
> -} 
> +} while(0)
>  #else
> -#define SDP_CONN_ST_SET(conn, val) (conn)->state = (val)
> -#define SDP_CONN_ST_INIT(conn)     (conn)->state = SDP_CONN_ST_INVALID
> +#define SDP_CONN_ST_SET(conn, val) ((conn)->state = (val))
> +#define SDP_CONN_ST_INIT(conn)     ((conn)->state = SDP_CONN_ST_INVALID)
>  #endif
>  /*
>   * connection lock
> 
> -- 
> MST - Michael S. Tsirkin
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general



More information about the general mailing list