1. 10 3月, 2007 1 次提交
  2. 09 3月, 2007 1 次提交
  3. 08 3月, 2007 12 次提交
  4. 07 3月, 2007 8 次提交
  5. 06 3月, 2007 11 次提交
  6. 03 3月, 2007 3 次提交
  7. 01 3月, 2007 4 次提交
    • A
      [TCP]: Fix minisock tcp_create_openreq_child() typo. · a9948a7e
      Arnaldo Carvalho de Melo 提交于
      On 2/28/07, KOVACS Krisztian <hidden@balabit.hu> wrote:
      >
      >   Hi,
      >
      >   While reading TCP minisock code I've found this suspiciously looking
      > code fragment:
      >
      > - 8< -
      > struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req, struct sk_buff *skb)
      > {
      >         struct sock *newsk = inet_csk_clone(sk, req, GFP_ATOMIC);
      >
      >         if (newsk != NULL) {
      >                 const struct inet_request_sock *ireq = inet_rsk(req);
      >                 struct tcp_request_sock *treq = tcp_rsk(req);
      >                 struct inet_connection_sock *newicsk = inet_csk(sk);
      >                 struct tcp_sock *newtp;
      > - 8< -
      >
      >   The above code initializes newicsk to inet_csk(sk), isn't that supposed
      > to be inet_csk(newsk)?  As far as I can tell this might leave
      > icsk_ack.last_seg_size zero even if we do have received data.
      
      Good catch!
      
      David, please apply the attached patch.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a9948a7e
    • P
      [NET]: Fix kfree(skb) · b08d5840
      Patrick McHardy 提交于
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Acked-by: NPaul Moore <paul.moore@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b08d5840
    • P
      [NET]: Handle disabled preemption in gfp_any() · 4498121c
      Patrick McHardy 提交于
      ctnetlink uses netlink_unicast from an atomic_notifier_chain
      (which is called within a RCU read side critical section)
      without holding further locks. netlink_unicast calls netlink_trim
      with the result of gfp_any() for the gfp flags, which are passed
      down to pskb_expand_header. gfp_any() only checks for softirq
      context and returns GFP_KERNEL, resulting in this warning:
      
      BUG: sleeping function called from invalid context at mm/slab.c:3032
      in_atomic():1, irqs_disabled():0
      no locks held by rmmod/7010.
      
      Call Trace:
       [<ffffffff8109467f>] debug_show_held_locks+0x9/0xb
       [<ffffffff8100b0b4>] __might_sleep+0xd9/0xdb
       [<ffffffff810b5082>] __kmalloc+0x68/0x110
       [<ffffffff811ba8f2>] pskb_expand_head+0x4d/0x13b
       [<ffffffff81053147>] netlink_broadcast+0xa5/0x2e0
       [<ffffffff881cd1d7>] :nfnetlink:nfnetlink_send+0x83/0x8a
       [<ffffffff8834f6a6>] :nf_conntrack_netlink:ctnetlink_conntrack_event+0x94c/0x96a
       [<ffffffff810624d6>] notifier_call_chain+0x29/0x3e
       [<ffffffff8106251d>] atomic_notifier_call_chain+0x32/0x60
       [<ffffffff881d266d>] :nf_conntrack:destroy_conntrack+0xa5/0x1d3
       [<ffffffff881d194e>] :nf_conntrack:nf_ct_cleanup+0x8c/0x12c
       [<ffffffff881d4614>] :nf_conntrack:kill_l3proto+0x0/0x13
       [<ffffffff881d482a>] :nf_conntrack:nf_conntrack_l3proto_unregister+0x90/0x94
       [<ffffffff883551b3>] :nf_conntrack_ipv4:nf_conntrack_l3proto_ipv4_fini+0x2b/0x5d
       [<ffffffff8109d44f>] sys_delete_module+0x1b5/0x1e6
       [<ffffffff8105f245>] trace_hardirqs_on_thunk+0x35/0x37
       [<ffffffff8105911e>] system_call+0x7e/0x83
      
      Since netlink_unicast is supposed to be callable from within RCU
      read side critical sections, make gfp_any() check for in_atomic()
      instead of in_softirq().
      
      Additionally nfnetlink_send needs to use gfp_any() as well for the
      call to netlink_broadcast).
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4498121c
    • S
      [BRIDGE]: Fix locking of set path cost. · 6548cda2
      Stephen Hemminger 提交于
      This change goes with earlier change to get rid of
      work queue for path cost. Now stp_set_path_cost does its own
      locking. This is to allow it to call br_path_cost() which calls
      ethtool interfaces (might sleep).
      Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6548cda2