decrypt in place move buffer ref. +----------------+ (no copy) +------------+ (no copy) +------------+ | receive buffer +--=-------------->| plain text +--=--------------->| disk cache | +----------------+ | buffer | +------+-----+ ^ +------------+ | | read() on socket write() to file | | (copy) (copy) | ---=----|---------------------------------=---------------------------------|--=---- | kernel space | | v +-------+--------+ +-------------------+ | socket kernel | | kernel page cache | | buffer | | | +----------------+ +-------------------+