1. 14 Apr, 2013 2 commits
  2. 13 Apr, 2013 2 commits
    • Suleiman Souhlal's avatar
      vfs: Revert spurious fix to spinning prevention in prune_icache_sb · 5b55d708
      Suleiman Souhlal authored
      Revert commit 62a3ddef ("vfs: fix spinning prevention in prune_icache_sb").
      
      This commit doesn't look right: since we are looking at the tail of the
      list (sb->s_inode_lru.prev) if we want to skip an inode, we should put
      it back at the head of the list instead of the tail, otherwise we will
      keep spinning on it.
      
      Discovered when investigating why prune_icache_sb came top in perf
      reports of a swapping load.
      Signed-off-by: default avatarSuleiman Souhlal <suleiman@google.com>
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Cc: stable@vger.kernel.org # v3.2+
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5b55d708
    • Linus Torvalds's avatar
      kobject: fix kset_find_obj() race with concurrent last kobject_put() · a49b7e82
      Linus Torvalds authored
      Anatol Pomozov identified a race condition that hits module unloading
      and re-loading.  To quote Anatol:
      
       "This is a race codition that exists between kset_find_obj() and
        kobject_put().  kset_find_obj() might return kobject that has refcount
        equal to 0 if this kobject is freeing by kobject_put() in other
        thread.
      
        Here is timeline for the crash in case if kset_find_obj() searches for
        an object tht nobody holds and other thread is doing kobject_put() on
        the same kobject:
      
          THREAD A (calls kset_find_obj())     THREAD B (calls kobject_put())
          splin_lock()
                                               atomic_dec_return(kobj->kref), counter gets zero here
                                               ... starts kobject cleanup ....
                                               spin_lock() // WAIT thread A in kobj_kset_leave()
          iterate over kset->list
          atomic_inc(kobj->kref) (counter becomes 1)
          spin_unlock()
                                               spin_lock() // taken
                                               // it does not know that thread A increased counter so it
                                               remove obj from list
                                               spin_unlock()
                                               vfree(module) // frees module object with containing kobj
      
          // kobj points to freed memory area!!
          kobject_put(kobj) // OOPS!!!!
      
        The race above happens because module.c tries to use kset_find_obj()
        when somebody unloads module.  The module.c code was introduced in
        commit 6494a93d"
      
      Anatol supplied a patch specific for module.c that worked around the
      problem by simply not using kset_find_obj() at all, but rather than make
      a local band-aid, this just fixes kset_find_obj() to be thread-safe
      using the proper model of refusing the get a new reference if the
      refcount has already dropped to zero.
      
      See examples of this proper refcount handling not only in the kref
      documentation, but in various other equivalent uses of this pattern by
      grepping for atomic_inc_not_zero().
      
      [ Side note: the module race does indicate that module loading and
        unloading is not properly serialized wrt sysfs information using the
        module mutex.  That may require further thought, but this is the
        correct fix at the kobject layer regardless. ]
      Reported-analyzed-and-tested-by: default avatarAnatol Pomozov <anatol.pomozov@gmail.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a49b7e82
  3. 12 Apr, 2013 15 commits
    • Dave Hansen's avatar
      x86-32: Fix possible incomplete TLB invalidate with PAE pagetables · 1de14c3c
      Dave Hansen authored
      This patch attempts to fix:
      
      	https://bugzilla.kernel.org/show_bug.cgi?id=56461
      
      The symptom is a crash and messages like this:
      
      	chrome: Corrupted page table at address 34a03000
      	*pdpt = 0000000000000000 *pde = 0000000000000000
      	Bad pagetable: 000f [#1] PREEMPT SMP
      
      Ingo guesses this got introduced by commit 611ae8e3 ("x86/tlb:
      enable tlb flush range support for x86") since that code started to free
      unused pagetables.
      
      On x86-32 PAE kernels, that new code has the potential to free an entire
      PMD page and will clear one of the four page-directory-pointer-table
      (aka pgd_t entries).
      
      The hardware aggressively "caches" these top-level entries and invlpg
      does not actually affect the CPU's copy.  If we clear one we *HAVE* to
      do a full TLB flush, otherwise we might continue using a freed pmd page.
      (note, we do this properly on the population side in pud_populate()).
      
      This patch tracks whenever we clear one of these entries in the 'struct
      mmu_gather', and ensures that we follow up with a full tlb flush.
      
      BTW, I disassembled and checked that:
      
      	if (tlb->fullmm == 0)
      and
      	if (!tlb->fullmm && !tlb->need_flush_all)
      
      generate essentially the same code, so there should be zero impact there
      to the !PAE case.
      Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Cc: Peter Anvin <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Artem S Tashkinov <t.artem@mailcity.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1de14c3c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · bf81710c
      Linus Torvalds authored
      Pull SCSI target fixes from Nicholas Bellinger:
       "Here are remaining target-pending items for v3.9-rc7 code.
      
        The tcm_vhost patches are more than I'd usually include in a -rc7
        pull, but are changes required for v3.9 to work correctly with the
        pending vhost-scsi-pci QEMU upstream series merge.  (Paolo CC'ed)
      
        Plus Asias's conversion to use vhost_virtqueue->private_data + RCU for
        managing vhost-scsi endpoints has gotten alot of review + testing over
        the past weeks, and MST has ACKed the full series.
      
        Also, there is a target patch to fix a long-standing bug within
        control CDB handling with Standby/Offline/Transition ALUA port access
        states, that had been incorrectly rejecting the control CDBs required
        for LUN scan to work during these port group states.  CC'ing to
        stable."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition CDBs
        tcm_vhost: Send bad target to guest when cmd fails
        tcm_vhost: Add vhost_scsi_send_bad_target() helper
        tcm_vhost: Fix tv_cmd leak in vhost_scsi_handle_vq
        tcm_vhost: Remove double check of response
        tcm_vhost: Initialize vq->last_used_idx when set endpoint
        tcm_vhost: Use vq->private_data to indicate if the endpoint is setup
        tcm_vhost: Use ACCESS_ONCE for vs->vs_tpg[target] access
      bf81710c
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 90f340e2
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "This is a set of ten bug fixes (and two consisting of copyright year
        update and version number change) pretty much all of which involve
        either a crash or a hang except the removal of the random sleep from
        the qla2xxx driver (which is a coding error so bad, we want it gone
        before anyone has a chance to copy it)."
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        [SCSI] lpfc: fix potential NULL pointer dereference in lpfc_sli4_rq_put()
        [SCSI] libsas: fix handling vacant phy in sas_set_ex_phy()
        [SCSI] ibmvscsi: Fix slave_configure deadlock
        [SCSI] qla2xxx: Update the driver version to 8.04.00.13-k.
        [SCSI] qla2xxx: Remove debug code that msleeps for random duration.
        [SCSI] qla2xxx: Update copyright dates information in LICENSE.qla2xxx file.
        [SCSI] qla2xxx: Fix crash during firmware dump procedure.
        [SCSI] Revert "qla2xxx: Add setting of driver version string for vendor application."
        [SCSI] ipr: dlpar failed when adding an adapter back
        [SCSI] ipr: fix addition of abort command to HRRQ free queue
        [SCSI] st: Take additional queue ref in st_probe
        [SCSI] libsas: use right function to alloc smp response
        [SCSI] ipr: ipr_test_msi() fails when running with msi-x enabled adapter
      90f340e2
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6 · 0b1fd266
      Linus Torvalds authored
      Pull CIFS fix from Steve French:
       "Fixes a regression in cifs in which a password which begins with a
        comma is parsed incorrectly as a blank password"
      
      * 'for-next' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Allow passwords which begin with a delimitor
      0b1fd266
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section · 7f49ef69
      Steven Rostedt (Red Hat) authored
      As ftrace_filter_lseek is now used with ftrace_pid_fops, it needs to
      be moved out of the #ifdef CONFIG_DYNAMIC_FTRACE section as the
      ftrace_pid_fops is defined when DYNAMIC_FTRACE is not.
      
      Cc: stable@vger.kernel.org
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      7f49ef69
    • Namhyung Kim's avatar
      tracing: Fix possible NULL pointer dereferences · 6a76f8c0
      Namhyung Kim authored
      Currently set_ftrace_pid and set_graph_function files use seq_lseek
      for their fops.  However seq_open() is called only for FMODE_READ in
      the fops->open() so that if an user tries to seek one of those file
      when she open it for writing, it sees NULL seq_file and then panic.
      
      It can be easily reproduced with following command:
      
        $ cd /sys/kernel/debug/tracing
        $ echo 1234 | sudo tee -a set_ftrace_pid
      
      In this example, GNU coreutils' tee opens the file with fopen(, "a")
      and then the fopen() internally calls lseek().
      
      Link: http://lkml.kernel.org/r/1365663302-2170-1-git-send-email-namhyung@kernel.org
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Namhyung Kim <namhyung.kim@lge.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      6a76f8c0
    • Linus Torvalds's avatar
      Merge tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 6074fffb
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "This contains a few small ASoC fixes (wm8903, wm5102, samsung-i2s,
        tegra, and soc-compress) and an endian fix for NI USB-audio devices,
        update for Mark's e-mail address.
      
        No scary changes, AFAIS."
      
      * tag 'sound-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        MAINTAINERS: Update e-mail address
        ASoC: wm5102: Correct lookup of arizona struct in SYSCLK event
        ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is running
        ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_*
        ASoC: tegra: Don't claim to support PCM pause and resume
        ASoC: Samsung: set drvdata before adding secondary device
        ASoC: Samsung: return error if drvdata is not set
        ASoC: compress: Cancel delayed power down if needed
        ASoC: core: Fix to check return value of snd_soc_update_bits_locked()
      6074fffb
    • Takashi Iwai's avatar
      Merge tag 'asoc-maintainers-v3.9-rc6' of... · c5a4698d
      Takashi Iwai authored
      Merge tag 'asoc-maintainers-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      MAINTAINERS: Update e-mail address
      
      Update the e-mail address I use for subsystems.
      c5a4698d
    • Mark Brown's avatar
      MAINTAINERS: Update e-mail address · b02e48f2
      Mark Brown authored
      Update the e-mail address I use for subsystems.
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      b02e48f2
    • Takashi Iwai's avatar
      Merge tag 'asoc-v3.9-rc6' of... · 232a73dd
      Takashi Iwai authored
      Merge tag 'asoc-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Updates for v3.9
      
      A few updates, more than I'd like, fixing some relatively small issues
      but mostly driver specific ones.  Nothing wildly exciting so if it
      doesn't make v3.9 it won't be the end of the world but it'd be nice.
      232a73dd
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma · cfb63baf
      Linus Torvalds authored
      Pull slave-dmaengine fixes from Vinod Koul:
       "The first one fixes issue in pl330 to check for DT compatible and
        the second one fixes omap-dma to start without delay"
      
      * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: omap-dma: Start DMA without delay for cyclic channels
        DMA: PL330: Add check if device tree compatible
      cfb63baf
    • Linus Torvalds's avatar
      Merge tag 'pm-3.9-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · a3ab02b4
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
      
       - System reboot/halt fix related to CPU offline ordering from Huacai
         Chen.
      
       - intel_pstate driver fix for a delay time computation error
         occasionally crashing systems using it from Dirk Brandewie.
      
      * tag 'pm-3.9-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM / reboot: call syscore_shutdown() after disable_nonboot_cpus()
        cpufreq / intel_pstate: Set timer timeout correctly
      a3ab02b4
    • Linus Torvalds's avatar
      Merge tag 'regmap-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · 89a132ac
      Linus Torvalds authored
      Pull regmap revert from Mark Brown:
       "regmap: Back out work buffer fix
      
        This reverts commit bc8ce4 (regmap: don't corrupt work buffer in
        _regmap_raw_write()) since it turns out that it can cause issues when
        taken in isolation from the other changes in -next that lead to its
        discovery.  On the basis that nobody noticed the problems for quite
        some time without that subsequent work let's drop it from v3.9."
      
      * tag 'regmap-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: Back out work buffer fix
      89a132ac
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · ee8b890e
      Linus Torvalds authored
      Pull GPIO fix from Linus Walleij:
       "Oneliner fix for the PCA 953x driver."
      
      * tag 'gpio-fixes-v3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
        gpio: pca953x: fix irq_domain_add_simple usage
      ee8b890e
    • Linus Torvalds's avatar
      Merge tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ce6fbaf1
      Linus Torvalds authored
      Pull ARM SoC bug fixes from Arnd Bergmann:
       "A little later during the week than the last few pull requests, since
        there was very little that came in before 3.9-rc6.  At least things
        have calmed down again here.
      
        Some important bug fixes that came in over the last 10 days, mostly
        mvebu and imx:
      
         - Multiple regressions on i.mx following the conversion of the clock
           code, hopefully the last we are seeing of those.
         - a regression in the mvebu irq handling code
         - An incorrect register offset in the rewritten s3c24xx irq code.
         - Two bugs in setting up the iomega_ix2_200 machine
         - Turning on an extra bus clock on imx
         - A MAINTAINERS file entry for Roland Stigge"
      
      * tag 'arm-soc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        arm: mvebu: Fix the irq map function in SMP mode
        Fix GE0/GE1 init on ix2-200 as GE0 has no PHY
        ARM: S3C24XX: Fix interrupt pending register offset of the EINT controller
        ARM: S3C24XX: Correct NR_IRQS definition for s3c2440
        ARM i.MX6: Fix ldb_di clock selection
        ARM: imx: provide twd clock lookup from device tree
        ARM: imx35 Bugfix admux clock
        ARM: clk-imx35: Bugfix iomux clock
        ARM: mxs: Slow down the I2C clock speed
        MAINTAINERS: Add maintainer for LPC32xx
        ARM: Kirkwood: Fix typo in the definition of ix2-200 rebuild LED
      ce6fbaf1
  4. 11 Apr, 2013 13 commits
  5. 10 Apr, 2013 8 commits