summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorCathy Zhou <Cathy.Zhou@Sun.COM>2009-12-02 15:13:47 -0800
committerCathy Zhou <Cathy.Zhou@Sun.COM>2009-12-02 15:13:47 -0800
commit10abae1df8b85dc08f4611a2d43950f65cea722b (patch)
tree07515d3d8f5600a2b3a9e92d1d05da6381d27671 /usr/src
parentac23bf836b7aa423b14eafd726f921e705676f80 (diff)
downloadillumos-joyent-10abae1df8b85dc08f4611a2d43950f65cea722b.tar.gz
6904984 capability negotiation race with ipif_up_done() which could cause no capabilities set
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/inet/ip/ip_if.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/ip/ip_if.c b/usr/src/uts/common/inet/ip/ip_if.c
index 879a5d59a1..07ee336d48 100644
--- a/usr/src/uts/common/inet/ip/ip_if.c
+++ b/usr/src/uts/common/inet/ip/ip_if.c
@@ -1450,8 +1450,12 @@ ill_capability_dispatch(ill_t *ill, mblk_t *mp, dl_capability_sub_t *subp)
/*
* If no ipif was brought up over this ill, this DL_CAPABILITY_REQ/ACK
* is only to get the VRRP capability.
+ *
+ * Note that we cannot check ill_ipif_up_count here since
+ * ill_ipif_up_count is only incremented when the resolver is setup.
+ * That is done asynchronously, and can race with this function.
*/
- if (ill->ill_ipif_up_count == 0) {
+ if (!ill->ill_dl_up) {
if (subp->dl_cap == DL_CAPAB_VRRP)
ill_capability_vrrp_ack(ill, mp, subp);
return;