• P
    [NETFILTER]: {ip,ip6,arp}_tables: return EAGAIN for invalid SO_GET_ENTRIES size · 544473c1
    Patrick McHardy 提交于
    Rule dumping is performed in two steps: first userspace gets the
    ruleset size using getsockopt(SO_GET_INFO) and allocates memory,
    then it calls getsockopt(SO_GET_ENTRIES) to actually dump the
    ruleset. When another process changes the ruleset in between the
    sizes from the first getsockopt call doesn't match anymore and
    the kernel aborts. Unfortunately it returns EAGAIN, as for multiple
    other possible errors, so userspace can't distinguish this case
    from real errors.
    
    Return EAGAIN so userspace can retry the operation.
    
    Fixes (with current iptables SVN version) netfilter bugzilla #104.
    Signed-off-by: NPatrick McHardy <kaber@trash.net>
    544473c1
ip6_tables.c 58.0 KB