1. 18 8月, 2006 13 次提交
  2. 14 8月, 2006 8 次提交
  3. 10 8月, 2006 2 次提交
  4. 09 8月, 2006 3 次提交
    • D
      [NET]: add_timer -> mod_timer() in dst_run_gc() · 7c91767a
      Dmitry Mishin 提交于
      Patch from Dmitry Mishin <dim@openvz.org>:
      
      Replace add_timer() by mod_timer() in dst_run_gc
      in order to avoid BUG message.
      
             CPU1                            CPU2
      dst_run_gc()  entered           dst_run_gc() entered
      spin_lock(&dst_lock)                   .....
      del_timer(&dst_gc_timer)         fail to get lock
             ....                         mod_timer() <--- puts 
                                                       timer back
                                                       to the list
      add_timer(&dst_gc_timer) <--- BUG because timer is in list already.
      
      Found during OpenVZ internal testing.
      
      At first we thought that it is OpenVZ specific as we
      added dst_run_gc(0) call in dst_dev_event(),
      but as Alexey pointed to me it is possible to trigger
      this condition in mainstream kernel.
      
      F.e. timer has fired on CPU2, but the handler was preeempted
      by an irq before dst_lock is tried.
      Meanwhile, someone on CPU1 adds an entry to gc list and
      starts the timer.
      If CPU2 was preempted long enough, this timer can expire
      simultaneously with resuming timer handler on CPU1, arriving
      exactly to the situation described.
      Signed-off-by: NDmitry Mishin <dim@openvz.org>
      Signed-off-by: NKirill Korotaev <dev@openvz.org>
      Signed-off-by: NAlexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7c91767a
    • S
      [IPX]: Another nonlinear receive fix · 7b1ba8de
      Stephen Hemminger 提交于
      Need to check some more cases in IPX receive.  If the skb is purely
      fragments, the IPX header needs to be extracted. The function
      pskb_may_pull() may in theory invalidate all the pointers in the skb,
      so references to ipx header must be refreshed.
      Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7b1ba8de
    • D
      [RTNETLINK]: Fix IFLA_ADDRESS handling. · 70f8e78e
      David S. Miller 提交于
      The ->set_mac_address handlers expect a pointer to a
      sockaddr which contains the MAC address, whereas
      IFLA_ADDRESS provides just the MAC address itself.
      
      So whip up a sockaddr to wrap around the netlink
      attribute for the ->set_mac_address call.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      70f8e78e
  5. 08 8月, 2006 6 次提交
  6. 06 8月, 2006 2 次提交
    • N
      [PATCH] knfsd: fix race related problem when adding items to and svcrpc auth cache · 2f34931f
      Neil Brown 提交于
      If we don't find the item we are lookng for, we allocate a new one, and
      then grab the lock again and search to see if it has been added while we
      did the alloc.  If it had been added we need to 'cache_put' the newly
      created item that we are never going to use.  But as it hasn't been
      initialised properly, putting it can cause an oops.
      
      So move the ->init call earlier to that it will always be fully initilised
      if we have to put it.
      
      Thanks to Philipp Matthias Hahn <pmhahn@svs.Informatik.Uni-Oldenburg.de>
      for reporting the problem.
      Signed-off-by: NNeil Brown <neilb@suse.de>
      Cc: <stable@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2f34931f
    • D
      [LAPB]: Fix windowsize check · 558e10a5
      Diego Calleja 提交于
      In bug #6954, Norbert Reinartz reported the following issue:
      
      "Function lapb_setparms() in file net/lapb/lapb_iface.c checks if the given
      parameters are valid. If the given window size is in the range of 8 .. 127,
      lapb_setparms() fails and returns an error value of LAPB_INVALUE, even if bit
      LAPB_EXTENDED in parms->mode is set.
      If bit LAPB_EXTENDED in parms->mode is set and the window size is in the range
      of 8 .. 127, the first check "(parms->mode & LAPB_EXTENDED)" results true  and
      the second check "(parms->window < 1 || parms->window > 127)" results false.
      Both checks in conjunction result to false, thus the third check "(parms->window
      < 1 || parms->window > 7)" is done by fault.
      This third check results true, so that we leave lapb_setparms() by 'goto out_put'.
      Seems that this bug doesn't cause any problems, because lapb_setparms() isn't
      used to change the default values of LAPB. We are using kernel lapb in our
      software project and also change the default parameters of lapb, so we found
      this bug"
      
      He also pasted a fix, that I've transformated into a patch:
      Signed-off-by: NDiego Calleja <diegocg@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      558e10a5
  7. 05 8月, 2006 5 次提交
  8. 04 8月, 2006 1 次提交