Author: hselasky
Date: Mon Dec  4 09:36:47 2017
New Revision: 326513
URL: https://svnweb.freebsd.org/changeset/base/326513

Log:
  MFC r326392:
  Properly define the VLAN_XXX() function macros to avoid miscompilation when
  used inside "if" statements comparing with another value.
  
  Detailed explanation:
  "if (a ? b : c != 0)" is not the same like "if ((a ? b : c) != 0)"
  which is the expected behaviour of a function macro.
  
  Affects:
  toecore, linuxkpi and ibcore.
  
  Reviewed by:  kib
  Sponsored by: Mellanox Technologies

Modified:
  stable/9/sys/net/if_vlan_var.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/net/   (props changed)

Modified: stable/9/sys/net/if_vlan_var.h
==============================================================================
--- stable/9/sys/net/if_vlan_var.h      Mon Dec  4 09:27:36 2017        
(r326512)
+++ stable/9/sys/net/if_vlan_var.h      Mon Dec  4 09:36:47 2017        
(r326513)
@@ -132,16 +132,16 @@ struct    vlanreq {
 } while (0)
 
 #define        VLAN_TRUNKDEV(_ifp)                                     \
-       (_ifp)->if_type == IFT_L2VLAN ? (*vlan_trunkdev_p)((_ifp)) : NULL
+       ((_ifp)->if_type == IFT_L2VLAN ? (*vlan_trunkdev_p)((_ifp)) : NULL)
 #define        VLAN_TAG(_ifp, _tag)                                    \
-       (_ifp)->if_type == IFT_L2VLAN ? (*vlan_tag_p)((_ifp), (_tag)) : EINVAL
+       ((_ifp)->if_type == IFT_L2VLAN ? (*vlan_tag_p)((_ifp), (_tag)) : EINVAL)
 #define        VLAN_COOKIE(_ifp)                                       \
-       (_ifp)->if_type == IFT_L2VLAN ? (*vlan_cookie_p)((_ifp)) : NULL
+       ((_ifp)->if_type == IFT_L2VLAN ? (*vlan_cookie_p)((_ifp)) : NULL)
 #define        VLAN_SETCOOKIE(_ifp, _cookie)                           \
-       (_ifp)->if_type == IFT_L2VLAN ?                         \
-           (*vlan_setcookie_p)((_ifp), (_cookie)) : EINVAL
+       ((_ifp)->if_type == IFT_L2VLAN ?                        \
+           (*vlan_setcookie_p)((_ifp), (_cookie)) : EINVAL)
 #define        VLAN_DEVAT(_ifp, _tag)                                  \
-       (_ifp)->if_vlantrunk != NULL ? (*vlan_devat_p)((_ifp), (_tag)) : NULL
+       ((_ifp)->if_vlantrunk != NULL ? (*vlan_devat_p)((_ifp), (_tag)) : NULL)
 
 extern void (*vlan_trunk_cap_p)(struct ifnet *);
 extern struct ifnet *(*vlan_trunkdev_p)(struct ifnet *);
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to