DF-0598 / fix.diff
diff --git a/sys/netproto/smb/smb_conn.c b/sys/netproto/smb/smb_conn.c --- a/sys/netproto/smb/smb_conn.c +++ b/sys/netproto/smb/smb_conn.c @@ -135,8 +135,10 @@ SMBCO_FOREACH(scp, &smb_vclist) { vcp = (struct smb_vc *)scp; error = smb_vc_lock(vcp, LK_EXCLUSIVE); - if (error) + if (error) { + vcp = NULL; continue; + } error = 1; if ((vcp->obj.co_flags & SMBV_PRIVATE) || @@ -171,8 +173,9 @@ break; unlock: smb_vc_unlock(vcp, 0); + vcp = NULL; } - if (vcp) { + if (error == 0 && vcp) { smb_vc_ref(vcp); *vcpp = vcp; } |