Print this page
195 Need replacement for nfs/lockd+klm

*** 22,31 **** --- 22,32 ---- * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ /* * Multithreaded STREAMS Local Transport Provider. *
*** 4250,4260 **** static void tl_connected_cots_addr_req(mblk_t *mp, tl_endpt_t *tep) { ! tl_endpt_t *peer_tep; size_t ack_sz; mblk_t *ackmp; struct T_addr_ack *taa; uchar_t *addr_startp; --- 4251,4261 ---- static void tl_connected_cots_addr_req(mblk_t *mp, tl_endpt_t *tep) { ! tl_endpt_t *peer_tep = tep->te_conp; size_t ack_sz; mblk_t *ackmp; struct T_addr_ack *taa; uchar_t *addr_startp;
*** 4261,4275 **** if (tep->te_closing) { freemsg(mp); return; } ASSERT(tep->te_state >= TS_IDLE); ack_sz = sizeof (struct T_addr_ack); ack_sz += T_ALIGN(tep->te_alen); - peer_tep = tep->te_conp; ack_sz += peer_tep->te_alen; ackmp = tpi_ack_alloc(mp, ack_sz, M_PCPROTO, T_ADDR_ACK); if (ackmp == NULL) { (void) (STRLOG(TL_ID, tep->te_minor, 1, SL_TRACE|SL_ERROR, --- 4262,4280 ---- if (tep->te_closing) { freemsg(mp); return; } + if (peer_tep == NULL || peer_tep->te_closing) { + tl_error_ack(tep->te_wq, mp, TSYSERR, ECONNRESET, T_ADDR_REQ); + return; + } + ASSERT(tep->te_state >= TS_IDLE); ack_sz = sizeof (struct T_addr_ack); ack_sz += T_ALIGN(tep->te_alen); ack_sz += peer_tep->te_alen; ackmp = tpi_ack_alloc(mp, ack_sz, M_PCPROTO, T_ADDR_ACK); if (ackmp == NULL) { (void) (STRLOG(TL_ID, tep->te_minor, 1, SL_TRACE|SL_ERROR,