[rds-commits] zab commits r138 - trunk/linux/net/rds

svn-commits@oss.oracle.com svn-commits at oss.oracle.com
Wed Jul 26 19:21:37 CDT 2006


Author: zab
Date: 2006-07-26 19:21:36 -0500 (Wed, 26 Jul 2006)
New Revision: 138

Modified:
   trunk/linux/net/rds/ib_recv.c
Log:
Don't parse partial IB headers.

The previous header length check didn't actually stop the headers from being
processed.


Modified: trunk/linux/net/rds/ib_recv.c
===================================================================
--- trunk/linux/net/rds/ib_recv.c	2006-07-27 00:09:12 UTC (rev 137)
+++ trunk/linux/net/rds/ib_recv.c	2006-07-27 00:21:36 UTC (rev 138)
@@ -323,7 +323,6 @@
 	 */ 
 	if (ibinc == NULL) {
 		if (byte_len < sizeof(struct rds_header)) {
-			rds_ib_recv_unmap_page(ic, recv);
 			if (!ic->i_wc_err) {
 				ic->i_wc_err = 1;
 				printk(KERN_WARNING "RDS/IB: incoming message "
@@ -333,6 +332,7 @@
 				       NIPQUAD(conn->c_faddr));
 				queue_work(rds_wq, &conn->c_shutdown_work);
 			}
+			return;
 		}
 
 		ibinc = recv->r_ibinc;
@@ -379,7 +379,7 @@
 			 be32_to_cpu(wc.imm_data));
 
 		recv = &ic->i_recvs[rds_ib_ring_oldest(&ic->i_recv_ring)];
-		if (wc.status == IB_WC_SUCCESS)
+		if (wc.status == IB_WC_SUCCESS && !ic->i_wc_err)
 			rds_ib_process_recv(conn, recv, wc.byte_len);
 
 		rds_ib_ring_free(&ic->i_recv_ring, 1);




More information about the rds-commits mailing list