6962670 MSG_EOR is set when a message is not completely received
6973505 (sctp) com/sun/nio/sctp/SctpMultiChannel/SocketOptionTests.java crashes a system
diff --git a/usr/src/uts/common/fs/sockfs/sockcommon_subr.c b/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
index a44d389..00ab44e 100644
--- a/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
+++ b/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
@@ -613,9 +613,10 @@
 
 /*
  * Check flow control on a given sonode.  Must have so_lock held, and
- * this function will release the hold.
+ * this function will release the hold.  Return true if flow control
+ * is cleared.
  */
-void
+boolean_t
 so_check_flow_control(struct sonode *so)
 {
 	ASSERT(MUTEX_HELD(&so->so_lock));
@@ -635,8 +636,10 @@
 		}
 		/* filters can start injecting data */
 		sof_sonode_notify_filters(so, SOF_EV_INJECT_DATA_IN_OK, 0);
+		return (B_TRUE);
 	} else {
 		mutex_exit(&so->so_lock);
+		return (B_FALSE);
 	}
 }
 
@@ -709,7 +712,7 @@
 		so_process_new_message(so, new_msg_head, new_msg_last_head);
 	}
 	savemp = savemptail = NULL;
-	rvalp->r_val1 = 0;
+	rvalp->r_vals = 0;
 	error = 0;
 	mp = so->so_rcv_q_head;
 
@@ -822,7 +825,7 @@
 				 * so_check_flow_control() will drop
 				 * so->so_lock.
 				 */
-				so_check_flow_control(so);
+				rvalp->r_val2 = so_check_flow_control(so);
 			}
 		}
 		if (mp != NULL) { /* more data blocks in msg */
@@ -840,7 +843,8 @@
 					 * so_check_flow_control() will drop
 					 * so->so_lock.
 					 */
-					so_check_flow_control(so);
+					rvalp->r_val2 =
+					    so_check_flow_control(so);
 				}
 			} else if (partial_read && !somsghasdata(mp)) {
 				/*