• D
    raw: Raw socket leak. · 22dd4850
    Denis V. Lunev 提交于
    The program below just leaks the raw kernel socket
    
    int main() {
            int fd = socket(PF_INET, SOCK_RAW, IPPROTO_UDP);
            struct sockaddr_in addr;
    
            memset(&addr, 0, sizeof(addr));
            inet_aton("127.0.0.1", &addr.sin_addr);
            addr.sin_family = AF_INET;
            addr.sin_port = htons(2048);
            sendto(fd,  "a", 1, MSG_MORE, &addr, sizeof(addr));
            return 0;
    }
    
    Corked packet is allocated via sock_wmalloc which holds the owner socket,
    so one should uncork it and flush all pending data on close. Do this in the
    same way as in UDP.
    Signed-off-by: NDenis V. Lunev <den@openvz.org>
    Acked-by: NAlexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    22dd4850
raw.c 23.3 KB