1. 15 3月, 2013 1 次提交
    • P
      list: Fix double fetch of pointer in hlist_entry_safe() · f65846a1
      Paul E. McKenney 提交于
      The current version of hlist_entry_safe() fetches the pointer twice,
      once to test for NULL and the other to compute the offset back to the
      enclosing structure.  This is OK for normal lock-based use because in
      that case, the pointer cannot change.  However, when the pointer is
      protected by RCU (as in "rcu_dereference(p)"), then the pointer can
      change at any time.  This use case can result in the following sequence
      of events:
      
      1.	CPU 0 invokes hlist_entry_safe(), fetches the RCU-protected
      	pointer as sees that it is non-NULL.
      
      2.	CPU 1 invokes hlist_del_rcu(), deleting the entry that CPU 0
      	just fetched a pointer to.  Because this is the last entry
      	in the list, the pointer fetched by CPU 0 is now NULL.
      
      3.	CPU 0 refetches the pointer, obtains NULL, and then gets a
      	NULL-pointer crash.
      
      This commit therefore applies gcc's "({ })" statement expression to
      create a temporary variable so that the specified pointer is fetched
      only once, avoiding the above sequence of events.  Please note that
      it is the caller's responsibility to use rcu_dereference() as needed.
      This allows RCU-protected uses to work correctly without imposing
      any additional overhead on the non-RCU case.
      
      Many thanks to Eric Dumazet for spotting root cause!
      Reported-by: NCAI Qian <caiqian@redhat.com>
      Reported-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Tested-by: NLi Zefan <lizefan@huawei.com>
      f65846a1
  2. 11 3月, 2013 1 次提交
  3. 10 3月, 2013 2 次提交
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace · 72932611
      Linus Torvalds 提交于
      Pull namespace bugfixes from Eric Biederman:
       "This is three simple fixes against 3.9-rc1.  I have tested each of
        these fixes and verified they work correctly.
      
        The userns oops in key_change_session_keyring and the BUG_ON triggered
        by proc_ns_follow_link were found by Dave Jones.
      
        I am including the enhancement for mount to only trigger requests of
        filesystem modules here instead of delaying this for the 3.10 merge
        window because it is both trivial and the kind of change that tends to
        bit-rot if left untouched for two months."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
        proc: Use nd_jump_link in proc_ns_follow_link
        fs: Limit sys_mount to only request filesystem modules (Part 2).
        fs: Limit sys_mount to only request filesystem modules.
        userns: Stop oopsing in key_change_session_keyring
      72932611
    • L
      Atmel MXT touchscreen: increase reset timeouts · 8343bce1
      Linus Torvalds 提交于
      There is a more complete atmel patch-series out by Nick Dyer that fixes
      this and other things, but in the meantime this is the minimal thing to
      get the touchscreen going on (at least my) Pixel Chromebook.
      
      Not that I want my dirty fingers near that beautiful screen, but it
      seems that a non-initialized touchscreen will also end up being a
      constant wakeup source, so you have to disable it to go to sleep.  And
      it's easier to just fix the initialization sequence.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8343bce1
  4. 09 3月, 2013 23 次提交
  5. 08 3月, 2013 13 次提交
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 47b3bc90
      Linus Torvalds 提交于
      Pull x86 fixes from Peter Anvin:
       "Several boot fixes (MacBook, legacy EFI bootloaders), another
        please-don't-brick fix, and some minor stuff."
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Do not try to sync identity map for non-mapped pages
        x86, doc: Be explicit about what the x86 struct boot_params requires
        x86: Don't clear efi_info even if the sentinel hits
        x86, mm: Make sure to find a 2M free block for the first mapped area
        x86: Fix 32-bit *_cpu_data initializers
        efivarfs: return accurate error code in efivarfs_fill_super()
        efivars: efivarfs_valid_name() should handle pstore syntax
        efi: be more paranoid about available space when creating variables
        iommu, x86: Add DMA remap fault reason
        x86, smpboot: Remove unused variable
      47b3bc90
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · af2841cd
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Misc radeon, nouveau, mgag200 and intel fixes.
      
        The intel fixes should contain the fix for the touchpad on the
        Chromebook - hey I'm an input maintainer now!"
      
      Hate to pee on your parade, Dave, but I don't think being an input
      maintainer is necessarily something to strive for..
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (25 commits)
        drm/tegra: drop "select DRM_HDMI"
        drm: Documentation typo fixes
        drm/mgag200: Bug fix: Renesas board now selects native resolution.
        drm/mgag200: Reject modes that are too big for VRAM
        drm/mgag200: 'fbdev_list' in 'struct mga_fbdev' is not used
        drm/radeon: don't check mipmap alignment if MIP_ADDRESS is FMASK
        drm/radeon: skip MC reset as it's probably not hung
        drm/radeon: add primary dac adj quirk for R200 board
        drm/radeon: don't set hpd, afmt interrupts when interrupts are disabled
        drm/i915: Turn off hsync and vsync on ADPA when disabling crt
        drm/i915: Fix incorrect definition of ADPA HSYNC and VSYNC bits
        drm/i915: also disable south interrupts when handling them
        drm/i915: enable irqs earlier when resuming
        drm/i915: Increase the RC6p threshold.
        DRM/i915: On G45 enable cursor plane briefly after enabling the display plane.
        drm/nv50-: prevent some races between modesetting and page flipping
        drm/nouveau/i2c: drop parent refcount when creating ports
        drm/nv84: fix regression in page flipping
        drm/nouveau: Fix typo in init_idx_addr_latched().
        drm/nouveau: Disable AGP on PowerPC again.
        ...
      af2841cd
    • L
      Merge tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c89b148f
      Linus Torvalds 提交于
      Pull ACPI and power management fixes from Rafael J Wysocki:
      
       - Two fixes for the new intel_pstate driver from Dirk Brandewie.
      
       - Fix for incorrect usage of the .find_bridge() callback from struct
         acpi_bus_type in the USB core and subsequent removal of that callback
         from Rafael J Wysocki.
      
       - ACPI processor driver cleanups from Chen Gang and Syam Sidhardhan.
      
       - ACPI initialization and error messages fix from Joe Perches.
      
       - Operating Performance Points documentation improvement from Nishanth
         Menon.
      
       - Fixes for memory leaks and potential concurrency issues and sysfs
        attributes leaks during device removal in the core device PM QoS code
        from Rafael J Wysocki.
      
       - Calxeda Highbank cpufreq driver simplification from Emilio López.
      
       - cpufreq comment cleanup from Namhyung Kim.
      
       - Fix for a section mismatch in Calxeda Highbank interprocessor
         communication code from Mark Langsdorf (this is not a PM fix strictly
         speaking, but the code in question went in through the PM tree).
      
      * tag 'pm+acpi-3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq / intel_pstate: Do not load on VM that does not report max P state.
        cpufreq / intel_pstate: Fix intel_pstate_init() error path
        ACPI / glue: Drop .find_bridge() callback from struct acpi_bus_type
        ACPI / glue: Add .match() callback to struct acpi_bus_type
        ACPI / porocessor: Beautify code, pr->id is u32 which is never < 0
        ACPI / processor: Remove redundant NULL check before kfree
        ACPI / Sleep: Avoid interleaved message on errors
        PM / QoS: Remove device PM QoS sysfs attributes at the right place
        PM / QoS: Fix concurrency issues and memory leaks in device PM QoS
        cpufreq: highbank: do not initialize array with a loop
        PM / OPP: improve introductory documentation
        cpufreq: Fix a typo in comment
        mailbox, pl320-ipc: remove __init from probe function
      c89b148f
    • P
      drm/tegra: drop "select DRM_HDMI" · 36c1813b
      Paul Bolle 提交于
      Commit ac24c220 ("drm/tegra: Use generic
      HDMI infoframe helpers") added "select DRM_HDMI" to the DRM_TEGRA
      Kconfig entry. But there is no Kconfig symbol named DRM_HDMI. The select
      statement for that symbol is a nop. Drop it.
      
      What was needed to use HDMI functionality was to select HDMI (which this
      entry already did through depending on DRM) and to include linux/hdmi.h
      (which this commit also did).
      Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
      Acked-by: NThierry Reding <thierry.reding@avionic-design.de>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      36c1813b
    • C
      drm: Documentation typo fixes · 13bcf01b
      Christopher Harvey 提交于
      Signed-off-by: NChristopher Harvey <charvey@matrox.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      13bcf01b
    • J
      drm/mgag200: Bug fix: Renesas board now selects native resolution. · ce495960
      Julia Lemire 提交于
      Renesas boards were consistently defaulting to the 1024x768 resolution,
      regardless of the native resolution of the monitor plugged in.  It was
      determined that the EDID of the monitor was not being read.  Since the
      DAC is a shared line, in order to read from or write to it we must take
      control of the DAC clock.  This can be done by setting the proper
      register to one.
      
      This bug fix sets the register MGA1064_GEN_IO_CTL2 to one.  The DAC
      control line can be used to determine whether or not a new monitor has
      been plugged in.  But since the hotplug feature is not one we will
      support, it has been decided to simply leave the register set to one.
      Signed-off-by: NJulia Lemire <jlemire@matrox.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      ce495960
    • C
      drm/mgag200: Reject modes that are too big for VRAM · 0ba53171
      Christopher Harvey 提交于
      A monitor or a user could request a resolution greater than the
      available VRAM for the backing framebuffer. This change checks the
      required framebuffer size against the max VRAM size and rejects modes
      if they are too big. This change can also remove a mode request passed
      in via the video= parameter.
      Signed-off-by: NChristopher Harvey <charvey@matrox.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      0ba53171
    • C
    • D
      Merge branch 'drm-fixes-3.9' of git://people.freedesktop.org/~agd5f/linux into drm-next · 9d624526
      Dave Airlie 提交于
      Alex writes:
        Radeon fixes pull.  Not much to it.
        - fix some splatter if the interrupt handler isn't registered
        - Add a quirk for an old R200 board to fix washed out colors on the DAC
        - Don't try and soft reset the MC when we reset the GPU.  It usually doesn't
          need it and doesn't always work reliably.
        - A CS checker fix from Marek
      
      * 'drm-fixes-3.9' of git://people.freedesktop.org/~agd5f/linux:
        drm/radeon: don't check mipmap alignment if MIP_ADDRESS is FMASK
        drm/radeon: skip MC reset as it's probably not hung
        drm/radeon: add primary dac adj quirk for R200 board
        drm/radeon: don't set hpd, afmt interrupts when interrupts are disabled
      9d624526
    • L
      Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm · 19cf3edb
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
       "Mainly a group of fixes, the only exception is the wiring up of the
        kcmp syscall now that those patches went in during the last merge
        window."
      
      * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7668/1: fix memset-related crashes caused by recent GCC (4.7.2) optimizations
        ARM: 7667/1: perf: Fix section mismatch on armpmu_init()
        ARM: 7666/1: decompressor: add -mno-single-pic-base for building the decompressor
        ARM: 7665/1: Wire up kcmp syscall
        ARM: 7664/1: perf: remove erroneous semicolon from event initialisation
        ARM: 7663/1: perf: fix ARMv7 EVTYPE_MASK to include NSH bit
        ARM: 7662/1: hw_breakpoint: reset debug logic on secondary CPUs in s2ram resume
        ARM: 7661/1: mm: perform explicit branch predictor maintenance when required
        ARM: 7660/1: tlb: add branch predictor maintenance operations
        ARM: 7659/1: mm: make mm->context.id an atomic64_t variable
        ARM: 7658/1: mm: fix race updating mm->context.id on ASID rollover
        ARM: 7657/1: head: fix swapper and idmap population with LPAE and big-endian
        ARM: 7655/1: smp_twd: make twd_local_timer_of_register() no-op for nosmp
        ARM: 7652/1: mm: fix missing use of 'asid' to get asid value from mm->context.id
        ARM: 7642/1: netx: bump IRQ offset to 64
      19cf3edb
    • H
      Merge tag 'efi-for-3.9-rc2' into x86/urgent · cc677088
      H. Peter Anvin 提交于
      EFI changes for v3.9-rc2,
      
        * Make the EFI variable code more paranoid about running out of
          space in NVRAM, since this is the root cause of the recent issue
          where machines refuse to boot - from Matthew Garrett.
      
        * Some efivarfs patches that fix regressions introduced in v3.9-rc1.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      cc677088
    • D
      x86: Do not try to sync identity map for non-mapped pages · 60f583d5
      Dave Hansen 提交于
      kernel_map_sync_memtype() is called from a variety of contexts.  The
      pat.c code that calls it seems to ensure that it is not called for
      non-ram areas by checking via pat_pagerange_is_ram().  It is important
      that it only be called on the actual identity map because there *IS*
      no map to sync for highmem pages, or for memory holes.
      
      The ioremap.c uses are not as careful as those from pat.c, and call
      kernel_map_sync_memtype() on PCI space which is in the middle of the
      kernel identity map _range_, but is not actually mapped.
      
      This patch adds a check to kernel_map_sync_memtype() which probably
      duplicates some of the checks already in pat.c.  But, it is necessary
      for the ioremap.c uses and shouldn't hurt other callers.
      
      I have reproduced this bug and this patch fixes it for me and the
      original bug reporter:
      
      	https://lkml.org/lkml/2013/2/5/396Signed-off-by: NDave Hansen <dave@linux.vnet.ibm.com>
      Link: http://lkml.kernel.org/r/20130307163151.D9B58C4E@kernel.stglabs.ibm.comSigned-off-by: NDave Hansen <dave@sr71.net>
      Tested-by: NTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      60f583d5
    • L
      Merge tag 'regulator-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · d3452436
      Linus Torvalds 提交于
      Pull regulator fixes from Mark Brown:
       "A few small things here and there, nothing major here really.  The
        conversion of twl4030ldo_ops to get_voltage_sel is a fix, as covered
        in the commit log it fixes inconsistency in handling of the IS_UNSUP()
        feature in the driver."
      
      * tag 'regulator-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: fixed regulator_bulk_enable unwinding code
        regulator: twl: Convert twl4030ldo_ops to get_voltage_sel
        regulator: palmas: fix number of SMPS voltages
        regulator: core: fix documentation error in regulator_allow_bypass
        regulator: core: update kernel documentation for regulator_desc
        regulator: db8500-prcmu - remove incorrect __exit markup
      d3452436