1. 06 Jan, 2009 6 commits
  2. 05 Jan, 2009 31 commits
  3. 30 Dec, 2008 3 commits
    • Herbert Xu's avatar
      net: Fix percpu counters deadlock · eb4dea58
      Herbert Xu authored
      When we converted the protocol atomic counters such as the orphan
      count and the total socket count deadlocks were introduced due to
      the mismatch in BH status of the spots that used the percpu counter
      operations.
      
      Based on the diagnosis and patch by Peter Zijlstra, this patch
      fixes these issues by disabling BH where we may be in process
      context.
      Reported-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Tested-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eb4dea58
    • Rusty Russell's avatar
      cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits: net · 0f23174a
      Rusty Russell authored
      In future all cpumask ops will only be valid (in general) for bit
      numbers < nr_cpu_ids.  So use that instead of NR_CPUS in iterators
      and other comparisons.
      
      This is always safe: no cpu number can be >= nr_cpu_ids, and
      nr_cpu_ids is initialized to NR_CPUS at boot.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarMike Travis <travis@sgi.com>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0f23174a
    • Julia Lawall's avatar
      drivers/net/usb: use USB API functions rather than constants · f201a8a4
      Julia Lawall authored
      This set of patches introduces calls to the following set of functions:
      
      usb_endpoint_dir_in(epd)
      usb_endpoint_dir_out(epd)
      usb_endpoint_is_bulk_in(epd)
      usb_endpoint_is_bulk_out(epd)
      usb_endpoint_is_int_in(epd)
      usb_endpoint_is_int_out(epd)
      usb_endpoint_num(epd)
      usb_endpoint_type(epd)
      usb_endpoint_xfer_bulk(epd)
      usb_endpoint_xfer_control(epd)
      usb_endpoint_xfer_int(epd)
      usb_endpoint_xfer_isoc(epd)
      
      In some cases, introducing one of these functions is not possible, and it
      just replaces an explicit integer value by one of the following constants:
      
      USB_ENDPOINT_XFER_BULK
      USB_ENDPOINT_XFER_CONTROL
      USB_ENDPOINT_XFER_INT
      USB_ENDPOINT_XFER_ISOC
      
      In drivers/net/wireless/zd1211rw/zd_usb.c the code:
      
      (endpoint->bEndpointAddress & USB_TYPE_MASK) == USB_DIR_OUT
      
      is suspicious.  If it is intended to use USB_ENDPOINT_DIR_MASK rather than
      USB_TYPE_MASK, then the whole conditional test could be converted to a call
      to usb_endpoint_is_bulk_in.
      
      An extract of the semantic patch that makes these changes is as follows:
      (http://www.emn.fr/x-info/coccinelle/)
      
      // <smpl>
      @r1@ struct usb_endpoint_descriptor *epd; @@
      
      - ((epd->bmAttributes & \(USB_ENDPOINT_XFERTYPE_MASK\|3\)) ==
      - \(USB_ENDPOINT_XFER_CONTROL\|0\))
      + usb_endpoint_xfer_control(epd)
      
      @r5@ struct usb_endpoint_descriptor *epd; @@
      
      - ((epd->bEndpointAddress & \(USB_ENDPOINT_DIR_MASK\|0x80\)) ==
      -  \(USB_DIR_IN\|0x80\))
      + usb_endpoint_dir_in(epd)
      
      @inc@
      @@
      
      #include <linux/usb.h>
      
      @depends on !inc && (r1||r5)@
      @@
      
      + #include <linux/usb.h>
        #include <linux/usb/...>
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f201a8a4