lkml.org 
[lkml]   [2014]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH v2] netfilter: release skbuf when nlmsg put fail
    Houcheng Lin <houcheng@gmail.com> wrote:
    > When system is under heavy loading, the __nfulnl_send() may may failed
    > to put nlmsg into skbuf of nfulnl_instance. If not clear the skbuff on failed,
    > the __nfulnl_send() will still try to put next nlmsg onto this half-full skbuf
    > and cause the user program can never receive packet.
    >
    > This patch fix this issue by releasing skbuf immediately after nlmst put
    > failed.

    Could you please try this patch on top of this one and see if the
    WARN_ON goes away?

    Thanks

    diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
    --- a/net/netfilter/nfnetlink_log.c
    +++ b/net/netfilter/nfnetlink_log.c
    @@ -649,7 +649,8 @@ nfulnl_log_packet(struct net *net,
    + nla_total_size(sizeof(u_int32_t)) /* gid */
    + nla_total_size(plen) /* prefix */
    + nla_total_size(sizeof(struct nfulnl_msg_packet_hw))
    - + nla_total_size(sizeof(struct nfulnl_msg_packet_timestamp));
    + + nla_total_size(sizeof(struct nfulnl_msg_packet_timestamp))
    + + nla_total_size(sizeof(struct nfgenmsg)); /* NLMSG_DONE */

    if (in && skb_mac_header_was_set(skb)) {
    size += nla_total_size(skb->dev->hard_header_len)
    @@ -692,8 +693,7 @@ nfulnl_log_packet(struct net *net,
    goto unlock_and_release;
    }

    - if (inst->skb &&
    - size > skb_tailroom(inst->skb) - sizeof(struct nfgenmsg)) {
    + if (inst->skb && size > skb_tailroom(inst->skb)) {
    /* either the queue len is too high or we don't have
    * enough room in the skb left. flush to userspace. */
    __nfulnl_flush(inst);

    \
     
     \ /
      Last update: 2014-10-14 13:21    [W:4.093 / U:0.676 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site