• Patrick McHardy's avatar
    netlink: add netlink_skb_set_owner_r() · cf0a018a
    Patrick McHardy authored
    For mmap'ed I/O a netlink specific skb destructor needs to be invoked
    after the final kfree_skb() to clean up state. This doesn't work currently
    since the skb's ownership is transfered to the receiving socket using
    skb_set_owner_r(), which orphans the skb, thereby invoking the destructor
    prematurely.
    
    Since netlink doesn't account skbs to the originating socket, there's no
    need to orphan the skb. Add a netlink specific skb_set_owner_r() variant
    that does not orphan the skb and use a netlink specific destructor to
    call sock_rfree().
    Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cf0a018a
af_netlink.c 49.1 KB