Mercurial > illumos > illumos-gate
changeset 11229:07f907eb950a
6904984 capability negotiation race with ipif_up_done() which could cause no capabilities set
author | Cathy Zhou <Cathy.Zhou@Sun.COM> |
---|---|
date | Wed, 02 Dec 2009 15:13:47 -0800 |
parents | c43ac3e928b8 |
children | 2b035c8f8f48 |
files | usr/src/uts/common/inet/ip/ip_if.c |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/ip_if.c Wed Dec 02 13:50:23 2009 -0800 +++ b/usr/src/uts/common/inet/ip/ip_if.c Wed Dec 02 15:13:47 2009 -0800 @@ -1450,8 +1450,12 @@ /* * If no ipif was brought up over this ill, this DL_CAPABILITY_REQ/ACK * is only to get the VRRP capability. - */ - if (ill->ill_ipif_up_count == 0) { + * + * 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_dl_up) { if (subp->dl_cap == DL_CAPAB_VRRP) ill_capability_vrrp_ack(ill, mp, subp); return;