• Tom Herbert's avatar
    kcm: Add memory limit for receive message construction · 7ced95ef
    Tom Herbert authored
    Message assembly is performed on the TCP socket. This is logically
    equivalent of an application that performs a peek on the socket to find
    out how much memory is needed for a receive buffer. The receive socket
    buffer also provides the maximum message size which is checked.
    
    The receive algorithm is something like:
    
       1) Receive the first skbuf for a message (or skbufs if multiple are
          needed to determine message length).
       2) Check the message length against the number of bytes in the TCP
          receive queue (tcp_inq()).
    	- If all the bytes of the message are in the queue (incluing the
    	  skbuf received), then proceed with message assembly (it should
    	  complete with the tcp_read_sock)
            - Else, mark the psock with the number of bytes needed to
    	  complete the message.
       3) In TCP data ready function, if the psock indicates that we are
          waiting for the rest of the bytes of a messages, check the number
          of queued bytes against that.
            - If there are still not enough bytes for the message, just
    	  return
            - Else, clear the waiting bytes and proceed to receive the
    	  skbufs.  The message should now be received in one
    	  tcp_read_sock
    Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7ced95ef
kcmproc.c 9.25 KB