20 Aug, 2010

1 commit


12 May, 2010

3 commits


20 Apr, 2010

1 commit


01 Apr, 2010

1 commit

  • xt_hashlimit uses a central lock per hash table and suffers from
    contention on some workloads. (Multiqueue NIC or if RPS is enabled)

    After RCU conversion, central lock is only used when a writer wants to
    add or delete an entry.

    For 'readers', updating an existing entry, they use an individual lock
    per entry.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Patrick McHardy

    Eric Dumazet
     

26 Mar, 2010

2 commits


25 Mar, 2010

4 commits


18 Mar, 2010

3 commits


17 Mar, 2010

1 commit


08 Mar, 2010

1 commit


18 Feb, 2010

1 commit

  • Commit 2eff25c18c3d332d3c4dd98f2ac9b7114e9771b0
    (netfilter: xt_hashlimit: fix race condition and simplify locking)
    added a mutex deadlock :
    htable_create() is called with hashlimit_mutex already locked

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

15 Feb, 2010

1 commit


09 Feb, 2010

1 commit

  • In particular, several occurances of funny versions of 'success',
    'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address',
    'beginning', 'desirable', 'separate' and 'necessary' are fixed.

    Signed-off-by: Daniel Mack
    Cc: Joe Perches
    Cc: Junio C Hamano
    Signed-off-by: Jiri Kosina

    Daniel Mack
     

03 Feb, 2010

1 commit

  • As noticed by Shin Hong , there is a race between
    htable_find_get() and htable_put():

    htable_put(): htable_find_get():

    spin_lock_bh(&hashlimit_lock);

    atomic_dec_and_test(&hinfo->use)
    atomic_inc(&hinfo->use)
    spin_unlock_bh(&hashlimit_lock)
    return hinfo;
    spin_lock_bh(&hashlimit_lock);
    hlist_del(&hinfo->node);
    spin_unlock_bh(&hashlimit_lock);
    htable_destroy(hinfo);

    The entire locking concept is overly complicated, tables are only
    created/referenced and released in process context, so a single
    mutex works just fine. Remove the hashinfo_spinlock and atomic
    reference count and use the mutex to protect table lookups/creation
    and reference count changes.

    Signed-off-by: Patrick McHardy

    Patrick McHardy
     

18 Jan, 2010

2 commits


04 Jan, 2010

1 commit


22 Sep, 2009

1 commit

  • Sizing of memory allocations shouldn't depend on the number of physical
    pages found in a system, as that generally includes (perhaps a huge amount
    of) non-RAM pages. The amount of what actually is usable as storage
    should instead be used as a basis here.

    Some of the calculations (i.e. those not intending to use high memory)
    should likely even use (totalram_pages - totalhigh_pages).

    Signed-off-by: Jan Beulich
    Acked-by: Rusty Russell
    Acked-by: Ingo Molnar
    Cc: Dave Airlie
    Cc: Kyle McMartin
    Cc: Jeremy Fitzhardinge
    Cc: Pekka Enberg
    Cc: Hugh Dickins
    Cc: "David S. Miller"
    Cc: Patrick McHardy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Beulich
     

27 May, 2009

1 commit


24 Feb, 2009

1 commit

  • Commit 784544739a25c30637397ace5489eeb6e15d7d49
    (netfilter: iptables: lock free counters) broke xt_hashlimit netfilter module :

    This module was storing a pointer inside its xt_hashlimit_info, and this pointer
    is not relocated when we temporarly switch tables (iptables -L).

    This hack is not not needed at all (probably a leftover from
    ancient time), as each cpu should and can access to its own copy.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Patrick McHardy

    Eric Dumazet
     

20 Feb, 2009

1 commit


31 Oct, 2008

1 commit


30 Oct, 2008

1 commit


29 Oct, 2008

1 commit


08 Oct, 2008

5 commits


31 Jul, 2008

1 commit

  • Deleting a timer with del_timer doesn't guarantee, that the
    timer function is not running at the moment of deletion. Thus
    in the xt_hashlimit case we can get into a ticklish situation
    when the htable_gc rearms the timer back and we'll actually
    delete an entry with a pending timer.

    Fix it with using del_timer_sync().

    AFAIK del_timer_sync checks for the timer to be pending by
    itself, so I remove the check.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: Patrick McHardy
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

02 May, 2008

1 commit


10 Apr, 2008

1 commit


28 Mar, 2008

1 commit