Author: slavash
Date: Wed Dec  5 13:25:13 2018
New Revision: 341534
URL: https://svnweb.freebsd.org/changeset/base/341534

Log:
  ibcore: Fix clearing of bound device interface.
  
  Binding to a loopback device is not allowed. Make sure the destination
  device address is global by clearing the bound device interface.
  Only do this conditionally, else link local addresses won't work.
  
  Submitted by:   hselasky@
  Approved by:    hselasky (mentor)
  MFC after:      1 week
  Sponsored by:   Mellanox Technologies

Modified:
  head/sys/ofed/drivers/infiniband/core/ib_addr.c

Modified: head/sys/ofed/drivers/infiniband/core/ib_addr.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/ib_addr.c     Wed Dec  5 13:24:43 
2018        (r341533)
+++ head/sys/ofed/drivers/infiniband/core/ib_addr.c     Wed Dec  5 13:25:13 
2018        (r341534)
@@ -649,8 +649,13 @@ static int addr_resolve_neigh(struct ifnet *dev,
        if (dev->if_flags & IFF_LOOPBACK) {
                int ret;
 
-               /* find real device, not loopback one */
-               addr->bound_dev_if = 0;
+               /*
+                * Binding to a loopback device is not allowed. Make
+                * sure the destination device address is global by
+                * clearing the bound device interface:
+                */
+               if (addr->bound_dev_if == dev->if_index)
+                       addr->bound_dev_if = 0;
 
                ret = rdma_translate_ip(dst_in, addr);
                if (ret == 0) {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to