1. 13 Feb, 2013 1 commit
    • Mel Gorman's avatar
      x86/mm: Check if PUD is large when validating a kernel address · 0ee364eb
      Mel Gorman authored
      A user reported the following oops when a backup process reads
      /proc/kcore:
      
       BUG: unable to handle kernel paging request at ffffbb00ff33b000
       IP: [<ffffffff8103157e>] kern_addr_valid+0xbe/0x110
       [...]
      
       Call Trace:
        [<ffffffff811b8aaa>] read_kcore+0x17a/0x370
        [<ffffffff811ad847>] proc_reg_read+0x77/0xc0
        [<ffffffff81151687>] vfs_read+0xc7/0x130
        [<ffffffff811517f3>] sys_read+0x53/0xa0
        [<ffffffff81449692>] system_call_fastpath+0x16/0x1b
      
      Investigation determined that the bug triggered when reading
      system RAM at the 4G mark. On this system, that was the first
      address using 1G pages for the virt->phys direct mapping so the
      PUD is pointing to a physical address, not a PMD page.
      
      The problem is that the page table walker in kern_addr_valid() is
      not checking pud_large() and treats the physical address as if
      it was a PMD.  If it happens to look like pmd_none then it'll
      silently fail, probably returning zeros instead of real data. If
      the data happens to look like a present PMD though, it will be
      walked resulting in the oops above.
      
      This patch adds the necessary pud_large() check.
      
      Unfortunately the problem was not readily reproducible and now
      they are running the backup program without accessing
      /proc/kcore so the patch has not been validated but I think it
      makes sense.
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Reviewed-by: default avatarRik van Riel <riel@redhat.coM>
      Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: stable@vger.kernel.org
      Cc: linux-mm@kvack.org
      Link: http://lkml.kernel.org/r/20130211145236.GX21389@suse.deSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      0ee364eb
  2. 11 Feb, 2013 1 commit
    • Stoney Wang's avatar
      x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems · cb214ede
      Stoney Wang authored
      When a HP ProLiant DL980 G7 Server boots a regular kernel,
      there will be intermittent lost interrupts which could
      result in a hang or (in extreme cases) data loss.
      
      The reason is that this system only supports x2apic physical
      mode, while the kernel boots with a logical-cluster default
      setting.
      
      This bug can be worked around by specifying the "x2apic_phys" or
      "nox2apic" boot option, but we want to handle this system
      without requiring manual workarounds.
      
      The BIOS sets ACPI_FADT_APIC_PHYSICAL in FADT table.
      As all apicids are smaller than 255, BIOS need to pass the
      control to the OS with xapic mode, according to x2apic-spec,
      chapter 2.9.
      
      Current code handle x2apic when BIOS pass with xapic mode
      enabled:
      
      When user specifies x2apic_phys, or FADT indicates PHYSICAL:
      
      1. During madt oem check, apic driver is set with xapic logical
         or xapic phys driver at first.
      
      2. enable_IR_x2apic() will enable x2apic_mode.
      
      3. if user specifies x2apic_phys on the boot line, x2apic_phys_probe()
         will install the correct x2apic phys driver and use x2apic phys mode.
         Otherwise it will skip the driver will let x2apic_cluster_probe to
         take over to install x2apic cluster driver (wrong one) even though FADT
         indicates PHYSICAL, because x2apic_phys_probe does not check
         FADT PHYSICAL.
      
      Add checking x2apic_fadt_phys in x2apic_phys_probe() to fix the
      problem.
      Signed-off-by: default avatarStoney Wang <song-bo.wang@hp.com>
      [ updated the changelog and simplified the code ]
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Cc: stable@kernel.org
      Link: http://lkml.kernel.org/r/1360263182-16226-1-git-send-email-yinghai@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      cb214ede
  3. 08 Feb, 2013 1 commit
    • H. Peter Anvin's avatar
      x86, doc: Add a bootloader ID for OVMF · 686966d8
      H. Peter Anvin authored
      OVMF (an implementation of UEFI based on TianoCore used in virtual
      environments) now has the ability to boot Linux natively; this is used
      for "qemu -kernel" and similar things in a UEFI environment.
      
      Accordingly, assign it a bootloader ID.
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      686966d8
  4. 07 Feb, 2013 1 commit
  5. 06 Feb, 2013 1 commit
  6. 05 Feb, 2013 14 commits
  7. 04 Feb, 2013 10 commits
  8. 03 Feb, 2013 1 commit
  9. 02 Feb, 2013 1 commit
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 8b31849a
      Linus Torvalds authored
      Pull scsi target fixes from Nicholas Bellinger:
       "Here's the current set of v3.8-rc fixes in the target-pending.git
        queue.  Apologies in advance for these missing the -rc6 release, and
        having to be destined for -rc7 code.
      
        The majority of these patches are regression bugfixes specific to
        v3.8-rc code changes, namely the zero-length CDB handling breakage
        after the sense_reason_t conversion, and preventing configfs port
        linking for unconfigured devices after the recent struct
        se_subsystem_dev removal.  These is also one (the divide by zero bug
        for unconfigured devices) that is CC'ed to stable."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        target: Fix divide by zero bug in fabric_max_sectors for unconfigured devices
        target: Fix regression allowing unconfigured devices to fabric port link
        tcm_vhost: fix pr_err on early kick
        target: Fix zero-length READ_CAPACITY_16 regression
        target: Fix zero-length MODE_SENSE regression
        target: Fix zero-length INQUIRY additional sense code regression
      8b31849a
  10. 01 Feb, 2013 5 commits
  11. 31 Jan, 2013 4 commits
    • Dave Airlie's avatar
      Merge branch 'drm-fixes-3.8' of git://people.freedesktop.org/~agd5f/linux · 089c71a7
      Dave Airlie authored
      Alex writes:
      "A few more radeon fixes for 3.8.  Mostly small stuff.  The big
      change is disabling the use of the DMA ring for VM PT updates.  This
      reverts back to the 3.7 behavior.  Problem is we can get huge PT
      updates in certain cases that are too big for the DMA ring.  I've
      got patches to use an IB for this so I can re-enable the use of the
      DMA ring for VM PT updates in 3.9.  This request also includes the
      patches from the last pull request I sent on Monday in case you haven't
      pulled them yet."
      
      * 'drm-fixes-3.8' of git://people.freedesktop.org/~agd5f/linux:
        drm/radeon: switch back to the CP ring for VM PT updates
        drm/radeon: prevent crash in the ring space allocation
        drm/radeon: Calling object_unrefer() when creating fb failure
        drm/radeon/r5xx-r7xx: wait for the MC to settle after MC blackout
        drm/radeon/evergreen+: wait for the MC to settle after MC blackout
        drm/radeon: protect against div by 0 in backend setup
        drm/radeon: fix backend map setup on 1 RB sumo boards
        drm/radeon: add quirk for RV100 board
        drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN
        drm/radeon: fix MC blackout on evergreen+
      089c71a7
    • Nicholas Bellinger's avatar
      target: Fix divide by zero bug in fabric_max_sectors for unconfigured devices · 7a3cf6ca
      Nicholas Bellinger authored
      This patch fixes a possible divide by zero bug when the fabric_max_sectors
      device attribute is written and backend se_device failed to be successfully
      configured -> enabled.
      
      Go ahead and use block_size=512 within se_dev_set_fabric_max_sectors()
      in the event of a target_configure_device() failure case, as no valid
      dev->dev_attrib.block_size value will have been setup yet.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      7a3cf6ca
    • Nicholas Bellinger's avatar
      target: Fix regression allowing unconfigured devices to fabric port link · faa06ab9
      Nicholas Bellinger authored
      This patch fixes a v3.8-rc1 regression bug where an unconfigured se_device
      was incorrectly allowed to perform a fabric port-link.  This bug was
      introduced in commit:
      
        commit 0fd97ccf
        Author: Christoph Hellwig <hch@infradead.org>
        Date:   Mon Oct 8 00:03:19 2012 -0400
      
            target: kill struct se_subsystem_dev
      
      which ended up dropping the original se_subsystem_dev->se_dev_ptr check
      preventing this from happening with pre commit 0fd97ccf code.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      faa06ab9
    • Linus Torvalds's avatar
      Merge branch 'for-3.8/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · cf5425bf
      Linus Torvalds authored
      PullHID fixes from Jiri Kosina:
      
       - fix i2c-hid and hidraw interaction, by Benjamin Tissoires
      
       - a quirk to make a particular device (Formosa IR receiver) work
         properly, by Nicholas Santos
      
      * 'for-3.8/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        HID: i2c-hid: fix i2c_hid_output_raw_report
        HID: usbhid: quirk for Formosa IR receiver
        HID: remove x bit from sensor doc
      cf5425bf