1. 02 2月, 2007 1 次提交
    • P
      [NET_SCHED]: act_ipt: fix regression in ipt action · 239a87c8
      Patrick McHardy 提交于
      The x_tables patch broke target module autoloading in the ipt action
      by replacing the ipt_find_target call (which does autoloading) by
      xt_find_target (which doesn't do autoloading). Additionally xt_find_target
      may return ERR_PTR values in case of an error, which are not handled.
      
      Use xt_request_find_target, which does both autoloading and ERR_PTR
      handling properly. Also don't forget to drop the target module reference
      again when xt_check_target fails.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      239a87c8
  2. 09 12月, 2006 2 次提交
  3. 07 12月, 2006 1 次提交
  4. 03 12月, 2006 14 次提交
  5. 08 11月, 2006 1 次提交
  6. 01 11月, 2006 1 次提交
  7. 23 10月, 2006 1 次提交
  8. 12 10月, 2006 1 次提交
  9. 04 10月, 2006 2 次提交
  10. 29 9月, 2006 3 次提交
    • P
      [NET_SCHED]: Fix fallout from dev->qdisc RCU change · 85670cc1
      Patrick McHardy 提交于
      The move of qdisc destruction to a rcu callback broke locking in the
      entire qdisc layer by invalidating previously valid assumptions about
      the context in which changes to the qdisc tree occur.
      
      The two assumptions were:
      
      - since changes only happen in process context, read_lock doesn't need
        bottem half protection. Now invalid since destruction of inner qdiscs,
        classifiers, actions and estimators happens in the RCU callback unless
        they're manually deleted, resulting in dead-locks when read_lock in
        process context is interrupted by write_lock_bh in bottem half context.
      
      - since changes only happen under the RTNL, no additional locking is
        necessary for data not used during packet processing (f.e. u32_list).
        Again, since destruction now happens in the RCU callback, this assumption
        is not valid anymore, causing races while using this data, which can
        result in corruption or use-after-free.
      
      Instead of "fixing" this by disabling bottem halfs everywhere and adding
      new locks/refcounting, this patch makes these assumptions valid again by
      moving destruction back to process context. Since only the dev->qdisc
      pointer is protected by RCU, but ->enqueue and the qdisc tree are still
      protected by dev->qdisc_lock, destruction of the tree can be performed
      immediately and only the final free needs to happen in the rcu callback
      to make sure dev_queue_xmit doesn't access already freed memory.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      85670cc1
    • P
      [NET_SCHED]: HTB: fix incorrect use of RB_EMPTY_NODE · 787e0617
      Patrick McHardy 提交于
      Fix incorrect use of RB_EMPTY_NODE in htb_safe_rb_erase, which makes it
      skip nodes within the rbtree instead of nodes not in the tree, resulting
      in crashes later on.
      
      The root cause for this seems to be the very counter-intuitive behaviour
      of the RB_EMPTY_NODE macro, which returns _false_ when the node is empty.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      787e0617
    • K
      [PKT_SCHED] cls_basic: Use unsigned int when generating handle · 658270a0
      Kim Nordlund 提交于
      Prevents filters from being added if the first generated
      handle already exists.
      Signed-off-by: NKim Nordlund <kim.nordlund@nokia.com>
      Signed-off-by: NThomas Graf <tgraf@suug.ch>
      658270a0
  11. 23 9月, 2006 13 次提交