Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Oct 2009 05:05:54 +0000 (UTC)
From:      Kip Macy <kmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r198019 - user/kmacy/releng_8_fcs/sys/kern
Message-ID:  <200910130505.n9D55sfo095477@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmacy
Date: Tue Oct 13 05:05:54 2009
New Revision: 198019
URL: http://svn.freebsd.org/changeset/base/198019

Log:
  crdup without sockbuf held

Modified:
  user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c

Modified: user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c
==============================================================================
--- user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c	Tue Oct 13 04:54:13 2009	(r198018)
+++ user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c	Tue Oct 13 05:05:54 2009	(r198019)
@@ -3525,14 +3525,15 @@ sendfile_task_func(void *context, int pe
 	so = sock_fp->f_data;
 	sb = &so->so_snd;
 	SOCKBUF_UNLOCK_ASSERT(sb);
+	if (sr->sr_ucred == NULL &&
+	    (sr->sr_ucred = crdup(sr->sr_proc->p_ucred)) == NULL) {
+		SOCKBUF_LOCK(sb);
+		goto done;
+	}
 	SOCKBUF_LOCK(sb);
 	if ((so->so_state & SS_ISCONNECTED) == 0)
 		goto done;
 
-	if (sr->sr_ucred == NULL &&
-	    (sr->sr_ucred = crdup(sr->sr_proc->p_ucred)) == NULL)
-		goto done;
-
 	sb->sb_flags &= ~(SB_SENDING|SB_SENDING_TASK);
 	if (sb->sb_state & SBS_CANTSENDMORE) {
 		CTR1(KTR_SPARE2, "SBS_CANTSENDMORE - socket %p", so);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910130505.n9D55sfo095477>