Fix to comm buffer leak for upstream-going messages

Joel Welling <[email protected]> Sat, 06 Nov 2004 23:54:11 -0500
Newsgroups gmane.comp.graphics.chromium.devel
Message-ID <[email protected]>
Hi folks;
  It looks to me like every time a CR_MESSAGE_READ_PIXELS, WRITEBACK, or 
READBACK is sent upstream the communications buffer is never freed.  I have a 
patch to packspu_net.c, replicatespu_net.c, tilesortspu_net.c, and net.c where 
crNetFree(conn,buf); is added after the appropriate bit of the case 
statements.  For example, in packspu_net.c the code becomes:

  		case CR_MESSAGE_READ_PIXELS:
  			packspuReadPixels( &(msg->readPixels), len );
  			crNetFree(conn,buf);
  			break;
  		case CR_MESSAGE_WRITEBACK:
  			packspuWriteback( &(msg->writeback) );
  			crNetFree(conn,buf);
  			break;
  		case CR_MESSAGE_READBACK:
  			packspuReadback( &(msg->readback), len );
  			crNetFree(conn,buf);
  			break;
  		default:
  			/*crWarning( "Why is the pack SPU getting a message of type 0x%x?", msg->
type ); */

  Before I check this in, can someone who knows the network layer look at this 
and verify that I'm talking sense?  I know this fix allows my application to 
run on Quadrics without running out of Quadrics card memory.

Thanks,
-Joel
 [email protected]



-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click