svn commit: r198019 - user/kmacy/releng_8_fcs/sys/kern

Kip Macy kmacy at FreeBSD.org
Tue Oct 13 05:05:55 UTC 2009


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);


More information about the svn-src-user mailing list