Skip to content
  1. May 11, 2012
  2. May 10, 2012
  3. May 09, 2012
  4. May 08, 2012
  5. May 07, 2012
    • Bjørn Mork's avatar
      cdc_ether: Ignore bogus union descriptor for RNDIS devices · 6eddcb4c
      Bjørn Mork authored
      
      
      Some RNDIS devices include a bogus CDC Union descriptor pointing
      to non-existing interfaces.  The RNDIS code is already prepared
      to handle devices without a CDC Union descriptor by hardwiring
      the driver to use interfaces 0 and 1, which is correct for the
      devices with the bogus descriptor as well. So we can reuse the
      existing workaround.
      
      Cc: Markus Kolb <linux-201011@tower-net.de>
      Cc: Iker Salmón San Millán <shaola@esdebian.org>
      Cc: Jonathan Nieder <jrnieder@gmail.com>
      Cc: Oliver Neukum <oliver@neukum.org>
      Cc: 655387@bugs.debian.org
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6eddcb4c
    • Ariel Elior's avatar
      bnx2x: bug fix when loading after SAN boot · 24f06716
      Ariel Elior authored
      
      
      This is a bug fix for an "interface fails to load" issue.
      The issue occurs when bnx2x driver loads after UNDI driver was previously
      loaded over the chip. In such a scenario the UNDI driver is loaded and operates
      in the pre-boot kernel, within its own specific host memory address range.
      When the pre-boot stage is complete, the real kernel is loaded, in a new and
      distinct host memory address range. The transition from pre-boot stage to boot
      is asynchronous from UNDI point of view.
      
      A race condition occurs when UNDI driver triggers a DMAE transaction to valid
      host addresses in the pre-boot stage, when control is diverted to the real
      kernel. This results in access to illegal addresses by our HW as the addresses
      which were valid in the preboot stage are no longer considered valid.
      Specifically, the 'was_error' bit in the pci glue of our device is set. This
      causes all following pci transactions from chip to host to timeout (in
      accordance to the pci spec).
      
      Signed-off-by: default avatarAriel Elior <ariele@broadcom.com>
      Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      24f06716
  6. May 05, 2012
  7. May 04, 2012
    • David S. Miller's avatar
    • Andrei Emeltchenko's avatar
      e1000: Silence sparse warnings by correcting type · dd7f5c9e
      Andrei Emeltchenko authored
      
      
      Silence sparse warnings shown below:
      ...
      drivers/net/ethernet/intel/e1000/e1000_main.c:3435:17: warning:
      	cast to restricted __le64
      drivers/net/ethernet/intel/e1000/e1000_main.c:3435:17: warning:
      	cast to restricted __le64
      ...
      
      Signed-off-by: default avatarAndrei Emeltchenko <andrei.emeltchenko@intel.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      dd7f5c9e
    • John Fastabend's avatar
      igb, ixgbe: netdev_tx_reset_queue incorrectly called from tx init path · dad8a3b3
      John Fastabend authored
      
      
      igb and ixgbe incorrectly call netdev_tx_reset_queue() from
      i{gb|xgbe}_clean_tx_ring() this sort of works in most cases except
      when the number of real tx queues changes. When the number of real
      tx queues changes netdev_tx_reset_queue() only gets called on the
      new number of queues so when we reduce the number of queues we risk
      triggering the watchdog timer and repeated device resets.
      
      So this is not only a cosmetic issue but causes real bugs. For
      example enabling/disabling DCB or FCoE in ixgbe will trigger this.
      
      CC: Alexander Duyck <alexander.h.duyck@intel.com>
      Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarJohn Bishop <johnx.bishop@intel.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      dad8a3b3
    • Ansis Atteka's avatar
      openvswitch: Release rtnl_lock if ovs_vport_cmd_build_info() failed. · 4cb6e116
      Ansis Atteka authored
      
      
      This patch fixes a possible lock-up bug where rtnl_lock might not
      get released.
      
      Signed-off-by: default avatarAnsis Atteka <aatteka@nicira.com>
      Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
      4cb6e116
    • Linus Torvalds's avatar
      Merge tag 'mfd-for-linus-3.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 · 0a6ba092
      Linus Torvalds authored
      Pull second set of MFD fixes from Samuel Ortiz:
       "This time we only have a one liner fixing an omap-usb build error."
      
      * tag 'mfd-for-linus-3.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
        mfd: Fix build breakage in omap-usb-host.c
      0a6ba092
    • Linus Torvalds's avatar
      Merge branch 'efi-vars' from Matthew Garrett · 65e62b50
      Linus Torvalds authored
      * efi-vars:
        efivars: Improve variable validation
      65e62b50
    • Matthew Garrett's avatar
      efivars: Improve variable validation · 54b3a4d3
      Matthew Garrett authored
      
      
      Ben Hutchings pointed out that the validation in efivars was inadequate -
      most obviously, an entry with size 0 would server as a DoS against the
      kernel. Improve this based on his suggestions.
      
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      54b3a4d3
    • Linus Torvalds's avatar
      Merge tag 'tag/upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · 6b4c555a
      Linus Torvalds authored
      Pull libata fixes from Jeff Garzik:
      
      1) Fix regression that could cause a misdiagnosis, which in turn could
         lead to an erroneous 3.0 Gbps -> 1.5 downshift, particularly when hotplug
         and suspend/resume is involved.
      
      2) Fix a regression that led to ata%d controller ids being numbered one
         larger than in <= 3.4-rc3 (oh, the horror!).  Controller ids should now be
         as expected.
      
      3) add some DT, PCI id's
      
      4) ata/pata_arasan_cf: minor cpp fixing/cleaning
      
      * tag 'tag/upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        ata: ahci_platform: Add synopsys ahci controller in DT's compatible list
        ata/pata_arasan_cf: Move arasan_cf_pm_ops out of #ifdef, #endif macros
        libata: init ata_print_id to 0
        ahci: Detect Marvell 88SE9172 SATA controller
        libata: skip old error history when counting probe trials
      6b4c555a
    • Linus Torvalds's avatar
      Merge branch 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux · 4e78f002
      Linus Torvalds authored
      Pull i2c embedded fixes from Wolfram Sang:
       "Here are some typical i2c driver bugfixes for 3.4.  Missed clock
        handling, improper timeout fixes, hardware wrokarounds...  All
        patches have been in linux-next for a few days, too."
      
      * 'i2c-embedded/for-current' of git://git.pengutronix.de/git/wsa/linux:
        i2c: mxs: disable QUEUE when sending is done
        i2c: mxs: handle spurious interrupt
        i2c-eg20t: Modify MODULE_AUTHOR's email address
        i2c-eg20t: change timeout value 50msec to 1000msec
        i2c: tegra: Add delay before resetting the controller after NACK
        i2c: pnx: Disable clk in suspend
      4e78f002
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · f5645b59
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Just some regression fixes from Ben along with a variable that gcc
        failed to spot is uninitialised."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        nouveau: initialise has_optimus variable.
        drm/nv10/gpio: fix thinko in mask for gpio lines 2-9
        nvc0/fb: shut up PMFB interrupt after the first occurrence
        drm/nouveau/hdmi: use correct hdmi regs for nvaa/nvac
        drm/nouveau/bios: fix regression on some nv4x board
      f5645b59
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · c42f1d4b
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Transfer padding was wrong for full-speed USB in ASIX driver, fix
          from Ingo van Lil.
      
       2) Propagate the negative packet offset fix into the PowerPC BPF JIT.
          From Jan Seiffert.
      
       3) dl2k driver's private ioctls were letting unprivileged tasks make
          MII writes and other ugly bits like that.  Fix from Jeff Mahoney.
      
       4) Fix TX VLAN and RX packet drops in ucc_geth, from Joakim Tjernlund.
      
       5) OOPS and network namespace fixes in IPVS from Hans Schillstrom and
          Julian Anastasov.
      
       6) Fix races and sleeping in locked context bugs in drop_monitor, from
          Neil Horman.
      
       7) Fix link status indication in smsc95xx driver, from Paolo Pisati.
      
       8) Fix bridge netfilter OOPS, from Peter Huang.
      
       9) L2TP sendmsg can return on error conditions with the socket lock
          held, oops.  Fix from Sasha Levin.
      
      10) udp_diag should return meaningful values for socket memory usage,
          from Shan Wei.
      
      11) Eric Dumazet is so awesome he gets his own section:
      
             Socket memory cgroup code (I never should have applied those
             patches, grumble...) made erroneous changes to
             sk_sockets_allocated_read_positive().  It was changed to
             use percpu_counter_sum_positive (which requires BH disabling)
             instead of percpu_counter_read_positive (which does not).
             Revert back to avoid crashes and lockdep warnings.
      
             Adjust the default tcp_adv_win_scale and tcp_rmem[2] values
             to fix throughput regressions.  This is necessary as a result
             of our more precise skb->truesize tracking.
      
             Fix SKB leak in netem packet scheduler.
      
      12) New device IDs for various bluetooth devices, from Manoj Iyer,
          AceLan Kao, and Steven Harms.
      
      13) Fix command completion race in ipw2200, from Stanislav Yakovlev.
      
      14) Fix rtlwifi oops on unload, from Larry Finger.
      
      15) Fix hard_mtu when adjusting hard_header_len in smsc95xx driver.
          From Stephane Fillod.
      
      16) ehea driver registers it's IRQ before all the necessary state is
          setup, resulting in crashes.  Fix from Thadeu Lima de Souza
          Cascardo.
      
      17) Fix PHY connection failures in davinci_emac driver, from Anatolij
          Gustschin.
      
      18) Missing break; in switch statement in bluetooth's
          hci_cmd_complete_evt().  Fix from Szymon Janc.
      
      19) Fix queue programming in iwlwifi, from Johannes Berg.
      
      20) Interrupt throttling defaults not being actually programmed into the
          hardware, fix from Jeff Kirsher and Ying Cai.
      
      21) TLAN driver SKB encoding in descriptor busted on 64-bit, fix from
          Benjamin Poirier.
      
      22) Fix blind status block RX producer pointer deref in TG3 driver, from
          Matt Carlson.
      
      23) Promisc and multicast are busted on ehea, fixes from Thadeu Lima de
          Souza Cascardo.
      
      24) Fix crashes in 6lowpan, from Alexander Smirnov.
      
      25) tcp_complete_cwr() needs to be careful to not rewind the CWND to
          ssthresh if ssthresh has the "infinite" value.  Fix from Yuchung
          Cheng.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (81 commits)
        sungem: Fix WakeOnLan
        tcp: change tcp_adv_win_scale and tcp_rmem[2]
        net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg
        drop_monitor: prevent init path from scheduling on the wrong cpu
        usbnet: fix failure handling in usbnet_probe
        usbnet: fix leak of transfer buffer of dev->interrupt
        ucc_geth: Add 16 bytes to max TX frame for VLANs
        net: ucc_geth, increase no. of HW RX descriptors
        netem: fix possible skb leak
        sky2: fix receive length error in mixed non-VLAN/VLAN traffic
        sky2: propogate rx hash when packet is copied
        net: fix two typos in skbuff.h
        cxgb3: Don't call cxgb_vlan_mode until q locks are initialized
        ixgbe: fix calling skb_put on nonlinear skb assertion bug
        ixgbe: Fix a memory leak in IEEE DCB
        igbvf: fix the bug when initializing the igbvf
        smsc75xx: enable mac to detect speed/duplex from phy
        smsc75xx: declare smsc75xx's MII as GMII capable
        smsc75xx: fix phy interrupt acknowledge
        smsc75xx: fix phy init reset loop
        ...
      c42f1d4b
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 913a9041
      Linus Torvalds authored
      Pull hwmon fixes from Guenter Roeck:
       "Fix OOPS seen in coretemp driver if the CPU core ID is too large"
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (coretemp) Increase CPU core limit
        hwmon: (coretemp) fix oops on cpu unplug
      913a9041
    • Viresh Kumar's avatar
      ata: ahci_platform: Add synopsys ahci controller in DT's compatible list · 5f098a3e
      Viresh Kumar authored
      
      
      SPEAr13xx series of SoCs contain Synopsys AHCI SATA Controller which shares
      ahci_platform driver with other controller versions.
      
      This patch updates DT compatible list for ahci_platform. It also updates and
      renames binding documentation to more generic name.
      
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      5f098a3e
    • Viresh Kumar's avatar
      ata/pata_arasan_cf: Move arasan_cf_pm_ops out of #ifdef, #endif macros · fb9751d4
      Viresh Kumar authored
      
      
      #ifdef, #endif is not required in definition/usage of arasan_cf_pm_ops. So, move
      this definition and its usage outside of them.
      
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      fb9751d4
    • Tero Roponen's avatar
      libata: init ata_print_id to 0 · a78f57af
      Tero Roponen authored
      When comparing the dmesg between 3.4-rc3 and 3.4-rc4 I found the
      following differences:
      
       -ata1: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff100 irq 47
       -ata2: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff180 irq 47
       -ata3: DUMMY
       +ata2: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff100 irq 47
       +ata3: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff180 irq 47
        ata4: DUMMY
        ata5: DUMMY
       -ata6: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff380 irq 47
       +ata6: DUMMY
       +ata7: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff380 irq 47
      
      The change of numbering comes from commit 85d6725b
      
       ("libata:
      make ata_print_id atomic") that changed lines like
      
      	ap->print_id = ata_print_id++;
      		to
      	ap->print_id = atomic_inc_return(&ata_print_id);
      
      As the latter behaves like ++ata_print_id, we must initialize
      it to zero to start the numbering from one.
      
      Signed-off-by: default avatarTero Roponen <tero.roponen@gmail.com>
      Acked-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      a78f57af
    • Matt Johnson's avatar
      ahci: Detect Marvell 88SE9172 SATA controller · 642d8925
      Matt Johnson authored
      
      
      The Marvell 88SE9172 SATA controller (PCI ID 1b4b 917a) already worked
      once it was detected, but was missing an ahci_pci_tbl entry.
      
      Boot tested on a Gigabyte Z68X-UD3H-B3 motherboard.
      
      Signed-off-by: default avatarMatt Johnson <johnso87@illinois.edu>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      642d8925
    • Lin Ming's avatar
      libata: skip old error history when counting probe trials · 6868225e
      Lin Ming authored
      Commit d9027470
      
      ("[libata] Add ATA transport class") introduced
      ATA_EFLAG_OLD_ER to mark entries in the error ring as cleared.
      
      But ata_count_probe_trials_cb() didn't check this flag and it still
      counts the old error history. So wrong probe trials count is returned
      and it causes problem, for example, SATA link speed is slowed down from
      3.0Gbps to 1.5Gbps.
      
      Fix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb().
      
      Cc: stable <stable@vger.kernel.org> # 2.6.37+
      Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      6868225e
  8. May 03, 2012
    • John W. Linville's avatar
      Merge branch 'master' of... · 3c3052ea
      John W. Linville authored
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
      3c3052ea
    • Eric Dumazet's avatar
      iwlwifi: fix skb truesize underestimation · ed90542b
      Eric Dumazet authored
      
      
      By default, iwlwifi uses order-1 pages (8 KB) to store incoming frames,
      but doesnt say so in skb->truesize.
      
      This makes very possible to exhaust kernel memory since these skb evade
      normal socket memory accounting.
      
      As struct ieee80211_hdr is going to be pulled before calling IP stack,
      there is no need to use dev_alloc_skb() to reserve NET_SKB_PAD bytes.
      alloc_skb() is ok in this driver, allowing more tailroom.
      
      Pull beginning of frame in skb header, in the hope we can reuse order-1
      pages in the driver immediately for small frames and reduce their
      truesize to the minimum (linear skbs)
      
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Cc: Wey-Yi Guy <wey-yi.w.guy@intel.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ed90542b
    • John Fastabend's avatar
      ixgbe: dcb: BIT_APP_UPCHG not set by ixgbe_copy_dcb_cfg() · f525c6d2
      John Fastabend authored
      After this commit:
      
      commit aacc1bea
      
      
      Author: Multanen, Eric W <eric.w.multanen@intel.com>
      Date:   Wed Mar 28 07:49:09 2012 +0000
      
          ixgbe: driver fix for link flap
      
      The BIT_APP_UPCHG bit is no longer set when ixgbe_dcbnl_set_all() is
      called. This results in the FCoE app user priority never getting set
      and the driver will not configure the tx_rings correctly for FCoE
      packets which use the SAN MTU and FCoE offloads.
      
      We resolve this regression by fixing ixgbe_copy_dcb_cfg() to also
      check for FCoE application changes. Additionally, we can drop the
      IEEE variants of get_dcb_app() because this path is never called
      with the IEEE mode enabled.
      
      Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      f525c6d2
    • Don Skidmore's avatar
      ixgbe: fix race condition with shutdown · ab6039a7
      Don Skidmore authored
      
      
      It was possible for shutdown to pull the rug out from other driver entry
      points.  Now we just grab the rtnl lock before taking everything apart.
      Thanks to Hariharan for noticing this tight race condition.
      
      Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
      Cc: Hariharan Nagarajan <hanagara@cisco.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ab6039a7
    • Dave Airlie's avatar
      nouveau: initialise has_optimus variable. · addde4ec
      Dave Airlie authored
      
      
      We should initialise this to 0 really to avoid getting false positives.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      addde4ec
    • Gerard Lledo's avatar
      sungem: Fix WakeOnLan · 5a8887d3
      Gerard Lledo authored
      
      
      WakeOnLan was broken in this driver because gp->asleep_wol is a 1-bit
      bitfield and it was being assigned WAKE_MAGIC, which is (1 << 5).
      gp->asleep_wol remains 0 and the machine never wakes up.  Fixed by casting
      gp->wake_on_lan to bool.  Tested on an iBook G4.
      
      Signed-off-by: default avatarGerard Lledo <gerard.lledo@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a8887d3
    • Eric Dumazet's avatar
      tcp: change tcp_adv_win_scale and tcp_rmem[2] · b49960a0
      Eric Dumazet authored
      
      
      tcp_adv_win_scale default value is 2, meaning we expect a good citizen
      skb to have skb->len / skb->truesize ratio of 75% (3/4)
      
      In 2.6 kernels we (mis)accounted for typical MSS=1460 frame :
      1536 + 64 + 256 = 1856 'estimated truesize', and 1856 * 3/4 = 1392.
      So these skbs were considered as not bloated.
      
      With recent truesize fixes, a typical MSS=1460 frame truesize is now the
      more precise :
      2048 + 256 = 2304. But 2304 * 3/4 = 1728.
      So these skb are not good citizen anymore, because 1460 < 1728
      
      (GRO can escape this problem because it build skbs with a too low
      truesize.)
      
      This also means tcp advertises a too optimistic window for a given
      allocated rcvspace : When receiving frames, sk_rmem_alloc can hit
      sk_rcvbuf limit and we call tcp_prune_queue()/tcp_collapse() too often,
      especially when application is slow to drain its receive queue or in
      case of losses (netperf is fast, scp is slow). This is a major latency
      source.
      
      We should adjust the len/truesize ratio to 50% instead of 75%
      
      This patch :
      
      1) changes tcp_adv_win_scale default to 1 instead of 2
      
      2) increase tcp_rmem[2] limit from 4MB to 6MB to take into account
      better truesize tracking and to allow autotuning tcp receive window to
      reach same value than before. Note that same amount of kernel memory is
      consumed compared to 2.6 kernels.
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b49960a0
    • Sasha Levin's avatar
      net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg · 84768edb
      Sasha Levin authored
      l2tp_ip_sendmsg could return without releasing socket lock, making it all the
      way to userspace, and generating the following warning:
      
      [  130.891594] ================================================
      [  130.894569] [ BUG: lock held when returning to user space! ]
      [  130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G        W
      [  130.900336] ------------------------------------------------
      [  130.902996] trinity/8384 is leaving the kernel with locks still held!
      [  130.906106] 1 lock held by trinity/8384:
      [  130.907924]  #0:  (sk_lock-AF_INET){+.+.+.}, at: [<ffffffff82b9503f>] l2tp_ip_sendmsg+0x2f/0x550
      
      Introduced by commit 2f16270f
      
       ("l2tp: Fix locking in l2tp_ip.c").
      
      Signed-off-by: default avatarSasha Levin <levinsasha928@gmail.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84768edb
    • Neil Horman's avatar
      drop_monitor: prevent init path from scheduling on the wrong cpu · 4fdcfa12
      Neil Horman authored
      
      
      I just noticed after some recent updates, that the init path for the drop
      monitor protocol has a minor error.  drop monitor maintains a per cpu structure,
      that gets initalized from a single cpu.  Normally this is fine, as the protocol
      isn't in use yet, but I recently made a change that causes a failed skb
      allocation to reschedule itself .  Given the current code, the implication is
      that this workqueue reschedule will take place on the wrong cpu.  If drop
      monitor is used early during the boot process, its possible that two cpus will
      access a single per-cpu structure in parallel, possibly leading to data
      corruption.
      
      This patch fixes the situation, by storing the cpu number that a given instance
      of this per-cpu data should be accessed from.  In the case of a need for a
      reschedule, the cpu stored in the struct is assigned the rescheule, rather than
      the currently executing cpu
      
      Tested successfully by myself.
      
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: David Miller <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4fdcfa12