1. 06 1月, 2009 6 次提交
  2. 05 1月, 2009 31 次提交
  3. 30 12月, 2008 3 次提交
    • H
      net: Fix percpu counters deadlock · eb4dea58
      Herbert Xu 提交于
      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: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Tested-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      eb4dea58
    • R
      cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits: net · 0f23174a
      Rusty Russell 提交于
      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: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NMike Travis <travis@sgi.com>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0f23174a
    • J
      drivers/net/usb: use USB API functions rather than constants · f201a8a4
      Julia Lawall 提交于
      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: NJulia Lawall <julia@diku.dk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f201a8a4