23 Jan, 2013

2 commits

  • putreg() assumes that the tracee is not running and pt_regs_access() can
    safely play with its stack. However a killed tracee can return from
    ptrace_stop() to the low-level asm code and do RESTORE_REST, this means
    that debugger can actually read/modify the kernel stack until the tracee
    does SAVE_REST again.

    set_task_blockstep() can race with SIGKILL too and in some sense this
    race is even worse, the very fact the tracee can be woken up breaks the
    logic.

    As Linus suggested we can clear TASK_WAKEKILL around the arch_ptrace()
    call, this ensures that nobody can ever wakeup the tracee while the
    debugger looks at it. Not only this fixes the mentioned problems, we
    can do some cleanups/simplifications in arch_ptrace() paths.

    Probably ptrace_unfreeze_traced() needs more callers, for example it
    makes sense to make the tracee killable for oom-killer before
    access_process_vm().

    While at it, add the comment into may_ptrace_stop() to explain why
    ptrace_stop() still can't rely on SIGKILL and signal_pending_state().

    Reported-by: Salman Qazi
    Reported-by: Suleiman Souhlal
    Suggested-by: Linus Torvalds
    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • Cleanup and preparation for the next change.

    signal_wake_up(resume => true) is overused. None of ptrace/jctl callers
    actually want to wakeup a TASK_WAKEKILL task, but they can't specify the
    necessary mask.

    Turn signal_wake_up() into signal_wake_up_state(state), reintroduce
    signal_wake_up() as a trivial helper, and add ptrace_signal_wake_up()
    which adds __TASK_TRACED.

    This way ptrace_signal_wake_up() can work "inside" ptrace_request()
    even if the tracee doesn't have the TASK_WAKEKILL bit set.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     

21 Jan, 2013

9 commits

  • Pull drm fixes from Dave Airlie:
    "A bunch of intel and radeon fixes, along with two fixes to TTM code.

    The correct fix for the Intel ironlake failure is in this, and should
    make things more stable, along with some misc radeon fixes."

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    ttm: on move memory failure don't leave a node dangling
    ttm: don't destroy old mm_node on memcpy failure
    Revert "drm/radeon: do not move bo to different placement at each cs"
    drm/i915: fix FORCEWAKE posting reads
    drm/i915: Invalidate the relocation presumed_offsets along the slow path
    drm/i915/eDP: do not write power sequence registers for ghost eDP
    drm/radeon: improve semaphore debugging on lockup
    drm/radeon: allow FP16 color clear registers on r500
    drm/radeon: clear reset flags if engines are idle
    drm/i915: Record DERRMR, FORCEWAKE and RING_CTL in error-state

    Linus Torvalds
     
  • Commit 1fb9341ac348 ("module: put modules in list much earlier") moved
    some of the module initialization code around, and in the process
    changed the exit paths too. But for the duplicate export symbol error
    case the change made the ddebug_cleanup path jump to after the module
    mutex unlock, even though it happens with the mutex held.

    Rusty has some patches to split this function up into some helper
    functions, hopefully the mess of complex goto targets will go away
    eventually.

    Reported-by: Dan Carpenter
    Cc: Rusty Russell
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • if we have a move notify callback, when moving fails, we call move notify
    the opposite way around, however this ends up with *mem containing the mm_node
    from the bo, which means we double free it. This is a follow on to the previous
    fix.

    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • When we are using memcpy to move objects around, and we fail to memcpy
    due to lack of memory to populate or failure to finish the copy, we don't
    want to destroy the mm_node that has been copied into old_copy.

    While working on a new kms driver that uses memcpy, if I overallocated bo's
    up to the memory limits, and eviction failed, then machine would oops soon
    after due to having an active bo with an already freed drm_mm embedded in it,
    freeing it a second time didn't end well.

    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • More important fixes for 3.9:
    - error_state improvements to help debug the new scanline wait code added
    for gen6+ - bug reports started popping up :( patch from Chris Wilson.
    - fix a panel power sequence confusion between the eDP and lvds detection
    code resulting in black screens - regression introduce in 3.8 (Jani
    Nikula)
    - Chris fixed the root-cause of the ilk relocation vs. evict bug.
    - Another piece of cargo-culted rc6 lore from Jani, fixes up a regression
    where a system refused to go into rc6 after suspend sometimes.

    * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
    drm/i915: fix FORCEWAKE posting reads
    drm/i915: Invalidate the relocation presumed_offsets along the slow path
    drm/i915/eDP: do not write power sequence registers for ghost eDP
    drm/i915: Record DERRMR, FORCEWAKE and RING_CTL in error-state

    Dave Airlie
     
  • A number of fixes, and one revert for a patch having some wierd side effects.

    * 'drm-fixes-3.8' of git://people.freedesktop.org/~agd5f/linux:
    Revert "drm/radeon: do not move bo to different placement at each cs"
    drm/radeon: improve semaphore debugging on lockup
    drm/radeon: allow FP16 color clear registers on r500
    drm/radeon: clear reset flags if engines are idle

    Dave Airlie
     
  • Pull module fixes and a virtio block fix from Rusty Russell:
    "Various minor fixes, but a slightly more complex one to fix the
    per-cpu overload problem introduced recently by kvm id changes."

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    module: put modules in list much earlier.
    module: add new state MODULE_STATE_UNFORMED.
    module: prevent warning when finit_module a 0 sized file
    virtio-blk: Don't free ida when disk is in use

    Linus Torvalds
     
  • Pull misc syscall fixes from Al Viro:

    - compat syscall fixes (discussed back in December)

    - a couple of "make life easier for sigaltstack stuff by reducing
    inter-tree dependencies"

    - fix up compiler/asmlinkage calling convention disagreement of
    sys_clone()

    - misc

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal:
    sys_clone() needs asmlinkage_protect
    make sure that /linuxrc has std{in,out,err}
    x32: fix sigtimedwait
    x32: fix waitid()
    switch compat_sys_wait4() and compat_sys_waitid() to COMPAT_SYSCALL_DEFINE
    switch compat_sys_sigaltstack() to COMPAT_SYSCALL_DEFINE
    CONFIG_GENERIC_SIGALTSTACK build breakage with asm-generic/syscalls.h
    Ensure that kernel_init_freeable() is not inlined into non __init code

    Linus Torvalds
     
  • The ia64 function "thread_matches()" has no users since commit
    e868a55c2a8c ("[IA64] remove find_thread_for_addr()"). Remove it.

    This allows us to make ptrace_check_attach() static to kernel/ptrace.c,
    which is good since we'll need to change the semantics of it and fix up
    all the callers.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     

20 Jan, 2013

2 commits


19 Jan, 2013

7 commits

  • Pull USB fixes from Greg Kroah-Hartman:
    "Here are 3 USB patches for 3.8-rc4. Two of them are new device id
    patches, and the third fixes a reported oops in the io_ti USB serial
    driver"

    * tag 'usb-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: io_ti: Fix NULL dereference in chase_port()
    USB: option: add TP-LINK HSUPA Modem MA180
    USB: option: blacklist network interface on ONDA MT8205 4G LTE

    Linus Torvalds
     
  • Pull tty/serial fixes from Greg Kroah-Hartman:
    "Here are a few tty/serial driver fixes for 3.8-rc4 that resolve a
    number of problems that people have been having, including the ptys
    ioctl issue that is a regression fix"

    * tag 'tty-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    8250/16?50: Add support for Broadcom TruManage redirected serial port
    pty: return EINVAL for TIOCGPTN for BSD ptys
    serial:ifx6x60:Keep word size accordance with SPI controller
    tty: 8250_dw: Fix inverted arguments to serial_out in IRQ handler
    serial: samsung: remove redundant setting of line config during port reset
    serial:ifx6x60:Delete SPI timer when shut down port
    tty/8250: The correct device id for this card is 0x0022
    tty/8250: pbn_b0_8_1152000_200 is supposed to be an 8 port definition
    tty: serial: vt8500: fix return value check in vt8500_serial_probe()
    serial: mxs-auart: Index is unsigned
    mxs: uart: fix setting RTS from software

    Linus Torvalds
     
  • Pull staging driver bugfixes from Greg Kroah-Hartman:
    "Here are some bugfixes for the drivers/staging tree for 3.8-rc4.

    Nothing major, just a number of small fixes for problems that people
    have reported, including finally tracking down the root of the 64/32
    bit problem with the vt6656 that has been driving people crazy for a
    while"

    * tag 'staging-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging/sb105x: PARPORT config is not good enough must use PARPORT_PC
    staging: wlan-ng: Fix clamping of returned SSID length
    staging: vt6656: Fix inconsistent structure packing
    staging:iio:adis16080: Perform sign extension
    iio: mxs-lradc: indexes are unsigned

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg Kroah-Hartman:
    "Here are two hyperv patches for 3.8-rc4 that fix some reported
    problems hv_balloon driver"

    * tag 'char-misc-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    Drivers: hv: balloon: Fix a memory leak
    Drivers: hv: balloon: Fix a bug in the definition of struct dm_info_msg

    Linus Torvalds
     
  • Pull Xen fixes from Konrad Rzeszutek Wilk:
    - CVE-2013-0190/XSA-40 (or stack corruption for 32-bit PV kernels)
    - Fix racy vma access spotted by Al Viro
    - Fix mmap batch ioctl potentially resulting in large O(n) page allcations.
    - Fix vcpu online/offline BUG:scheduling while atomic..
    - Fix unbound buffer scanning for more than 32 vCPUs.
    - Fix grant table being incorrectly initialized
    - Fix incorrect check in pciback
    - Allow privcmd in backend domains.

    Fix up whitespace conflict due to ugly merge resolution in Xen tree in
    arch/arm/xen/enlighten.c

    * tag 'stable/for-linus-3.8-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS guests.
    Revert "xen/smp: Fix CPU online/offline bug triggering a BUG: scheduling while atomic."
    xen/gntdev: remove erronous use of copy_to_user
    xen/gntdev: correctly unmap unlinked maps in mmu notifier
    xen/gntdev: fix unsafe vma access
    xen/privcmd: Fix mmap batch ioctl.
    Xen: properly bound buffer access when parsing cpu/*/availability
    xen/grant-table: correctly initialize grant table version 1
    x86/xen : Fix the wrong check in pciback
    xen/privcmd: Relax access control in privcmd_ioctl_mmap

    Linus Torvalds
     
  • Pull m68knommu arch fixes from Greg Ungerer:
    "This contains a couple of fixes, both affecting compilation of non-mmu
    m68k targets."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
    m68k: fix conditional use of init_pointer_table
    m68knommu: add KMAP definitions for non-MMU definitions

    Linus Torvalds
     
  • Commit 816422ad7647 ("asm-generic, mm: pgtable: consolidate zero page
    helpers") broke the compile on MIPS if SPARSEMEM is enabled. We get
    this:

    In file included from arch/mips/include/asm/pgtable.h:552,
    from include/linux/mm.h:44,
    from arch/mips/kernel/asm-offsets.c:14:
    include/asm-generic/pgtable.h: In function 'my_zero_pfn':
    include/asm-generic/pgtable.h:466: error: implicit declaration of function 'page_to_section'
    In file included from arch/mips/kernel/asm-offsets.c:14:
    include/linux/mm.h: At top level:
    include/linux/mm.h:738: error: conflicting types for 'page_to_section'
    include/asm-generic/pgtable.h:466: note: previous implicit declaration of 'page_to_section' was here

    Due header files inter-dependencies, the only way I see to fix it is
    convert my_zero_pfn() for __HAVE_COLOR_ZERO_PAGE to macros.

    Signed-off-by: Kirill A. Shutemov
    Tested-by: Aaro Koskinen
    Acked-by: David Daney
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

18 Jan, 2013

14 commits

  • Linus Torvalds
     
  • The tty is NULL when the port is hanging up.
    chase_port() needs to check for this.

    This patch is intended for stable series.
    The behavior was observed and tested in Linux 3.2 and 3.7.1.

    Johan Hovold submitted a more elaborate patch for the mainline kernel.

    [ 56.277883] usb 1-1: edge_bulk_in_callback - nonzero read bulk status received: -84
    [ 56.278811] usb 1-1: USB disconnect, device number 3
    [ 56.278856] usb 1-1: edge_bulk_in_callback - stopping read!
    [ 56.279562] BUG: unable to handle kernel NULL pointer dereference at 00000000000001c8
    [ 56.280536] IP: [] _raw_spin_lock_irqsave+0x19/0x35
    [ 56.281212] PGD 1dc1b067 PUD 1e0f7067 PMD 0
    [ 56.282085] Oops: 0002 [#1] SMP
    [ 56.282744] Modules linked in:
    [ 56.283512] CPU 1
    [ 56.283512] Pid: 25, comm: khubd Not tainted 3.7.1 #1 innotek GmbH VirtualBox/VirtualBox
    [ 56.283512] RIP: 0010:[] [] _raw_spin_lock_irqsave+0x19/0x35
    [ 56.283512] RSP: 0018:ffff88001fa99ab0 EFLAGS: 00010046
    [ 56.283512] RAX: 0000000000000046 RBX: 00000000000001c8 RCX: 0000000000640064
    [ 56.283512] RDX: 0000000000010000 RSI: ffff88001fa99b20 RDI: 00000000000001c8
    [ 56.283512] RBP: ffff88001fa99b20 R08: 0000000000000000 R09: 0000000000000000
    [ 56.283512] R10: 0000000000000000 R11: ffffffff812fcb4c R12: ffff88001ddf53c0
    [ 56.283512] R13: 0000000000000000 R14: 00000000000001c8 R15: ffff88001e19b9f4
    [ 56.283512] FS: 0000000000000000(0000) GS:ffff88001fd00000(0000) knlGS:0000000000000000
    [ 56.283512] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 56.283512] CR2: 00000000000001c8 CR3: 000000001dc51000 CR4: 00000000000006e0
    [ 56.283512] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 56.283512] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [ 56.283512] Process khubd (pid: 25, threadinfo ffff88001fa98000, task ffff88001fa94f80)
    [ 56.283512] Stack:
    [ 56.283512] 0000000000000046 00000000000001c8 ffffffff810578ec ffffffff812fcb4c
    [ 56.283512] ffff88001e19b980 0000000000002710 ffffffff812ffe81 0000000000000001
    [ 56.283512] ffff88001fa94f80 0000000000000202 ffffffff00000001 0000000000000296
    [ 56.283512] Call Trace:
    [ 56.283512] [] ? add_wait_queue+0x12/0x3c
    [ 56.283512] [] ? usb_serial_port_work+0x28/0x28
    [ 56.283512] [] ? chase_port+0x84/0x2d6
    [ 56.283512] [] ? try_to_wake_up+0x199/0x199
    [ 56.283512] [] ? tty_ldisc_hangup+0x222/0x298
    [ 56.283512] [] ? edge_close+0x64/0x129
    [ 56.283512] [] ? __wake_up+0x35/0x46
    [ 56.283512] [] ? should_resched+0x5/0x23
    [ 56.283512] [] ? tty_port_shutdown+0x39/0x44
    [ 56.283512] [] ? usb_serial_port_work+0x28/0x28
    [ 56.283512] [] ? __tty_hangup+0x307/0x351
    [ 56.283512] [] ? usb_hcd_flush_endpoint+0xde/0xed
    [ 56.283512] [] ? _raw_spin_lock_irqsave+0x14/0x35
    [ 56.283512] [] ? usb_serial_disconnect+0x57/0xc2
    [ 56.283512] [] ? usb_unbind_interface+0x5c/0x131
    [ 56.283512] [] ? __device_release_driver+0x7f/0xd5
    [ 56.283512] [] ? device_release_driver+0x1a/0x25
    [ 56.283512] [] ? bus_remove_device+0xd2/0xe7
    [ 56.283512] [] ? device_del+0x119/0x167
    [ 56.283512] [] ? usb_disable_device+0x6a/0x180
    [ 56.283512] [] ? usb_disconnect+0x81/0xe6
    [ 56.283512] [] ? hub_thread+0x577/0xe82
    [ 56.283512] [] ? __schedule+0x490/0x4be
    [ 56.283512] [] ? abort_exclusive_wait+0x79/0x79
    [ 56.283512] [] ? usb_remote_wakeup+0x2f/0x2f
    [ 56.283512] [] ? usb_remote_wakeup+0x2f/0x2f
    [ 56.283512] [] ? kthread+0x81/0x89
    [ 56.283512] [] ? __kthread_parkme+0x5c/0x5c
    [ 56.283512] [] ? ret_from_fork+0x7c/0xb0
    [ 56.283512] [] ? __kthread_parkme+0x5c/0x5c
    [ 56.283512] Code: 8b 7c 24 08 e8 17 0b c3 ff 48 8b 04 24 48 83 c4 10 c3 53 48 89 fb 41 50 e8 e0 0a c3 ff 48 89 04 24 e8 e7 0a c3 ff ba 00 00 01 00
    0f c1 13 48 8b 04 24 89 d1 c1 ea 10 66 39 d1 74 07 f3 90 66
    [ 56.283512] RIP [] _raw_spin_lock_irqsave+0x19/0x35
    [ 56.283512] RSP
    [ 56.283512] CR2: 00000000000001c8
    [ 56.283512] ---[ end trace 49714df27e1679ce ]---

    Signed-off-by: Wolfgang Frisch
    Cc: Johan Hovold
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Wolfgang Frisch
     
  • The driver description files gives these names to the vendor specific
    functions on this modem:

    Diagnostics VID_2357&PID_0201&MI_00
    NMEA VID_2357&PID_0201&MI_01
    Modem VID_2357&PID_0201&MI_03
    Networkcard VID_2357&PID_0201&MI_04

    Reported-by: Thomas Schäfer
    Signed-off-by: Bjørn Mork
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • The driver description files gives these names to the vendor specific
    functions on this modem:

    Diag VID_19D2&PID_0265&MI_00
    NMEA VID_19D2&PID_0265&MI_01
    AT cmd VID_19D2&PID_0265&MI_02
    Modem VID_19D2&PID_0265&MI_03
    Net VID_19D2&PID_0265&MI_04

    Signed-off-by: Bjørn Mork
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Bjørn Mork
     
  • The sb105x driver calls parport_pc_probe_port() which isn't defined if
    PARPORT_PC isn't enabled. Protecting it with CONFIG_PARPORT is not good
    enough, must protect it with CONFIG_PARPORT_PC.

    Reported-by: Randy Dunlap
    Acked-by: Randy Dunlap
    Signed-off-by: Steven Rostedt
    Signed-off-by: Greg Kroah-Hartman

    Steven Rostedt
     
  • Commit 2e254212 broke listing of available network names, since it
    clamped the length of the returned SSID to WLAN_BSSID_LEN (6) instead of
    WLAN_SSID_MAXLEN (32).

    https://bugzilla.kernel.org/show_bug.cgi?id=52501

    Signed-off-by: Tormod Volden
    Cc: stable # 3.4+
    Signed-off-by: Greg Kroah-Hartman

    Tormod Volden
     
  • …jic23/iio into staging-linus

    Jonathan writes:

    Second round of fixes for IIO post 3.8-rc1

    Two tiny fixes
    * A build warning fix due to signed / unsigned comparison
    * Missing sign extension in adis16080

    Greg Kroah-Hartman
     
  • Add support for the UART device present in Broadcom TruManage capable
    NetXtreme chips (ie: 5761m 5762, and 5725).

    This implementation has a hidden transmit FIFO, so running in single-byte
    interrupt mode results in too many interrupts. The UART_CAP_HFIFO
    capability was added to track this. It continues to reload the THR as long
    as the THRE and TSRE bits are set in the LSR up to a specified limit (1024
    is used here).

    Signed-off-by: Stephen Hurd
    Signed-off-by: Michael Chan
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Stephen Hurd
     
  • Commit bbb63c514a3464342967237a51a21ea8f61ab951 (drivers:tty:fix up
    ENOIOCTLCMD error handling) changed the default return value from tty
    ioctl to be ENOTTY and not EINVAL. This is appropriate.

    But in case of TIOCGPTN for the old BSD ptys glibc started failing
    because it expects EINVAL to be returned. Only then it continues to
    obtain the pts name the other way around.

    So fix this case by explicit return of EINVAL in this case.

    Signed-off-by: Jiri Slaby
    Reported-by: Florian Westphal
    Cc: Alan Cox
    Cc: stable # 3.7+
    Signed-off-by: Greg Kroah-Hartman

    Jiri Slaby
     
  • vt6656 has several headers that use the #pragma pack(1) directive to
    enable structure packing, but never disable it. The layout of
    structures defined in other headers can then depend on which order the
    various headers are included in, breaking the One Definition Rule.

    In practice this resulted in crashes on x86_64 until the order of header
    inclusion was changed for some files in commit 11d404cb56ecd ('staging:
    vt6656: fix headers and add cfg80211.'). But we need a proper fix that
    won't be affected by future changes to the order of inclusion.

    This removes the #pragma pack(1) directives and adds __packed to the
    structure definitions for which packing appears to have been intended.

    Reported-and-tested-by: Malcolm Priestley
    Signed-off-by: Ben Hutchings
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     
  • The send buffer was being leaked; fix it.

    Signed-off-by: K. Y. Srinivasan
    Reviewed-by: Haiyang Zhang
    Reported-by: Jason Wang
    Acked-by: Jason Wang
    Signed-off-by: Greg Kroah-Hartman

    K. Y. Srinivasan
     
  • There is bug in the definition of struct dm_info_msg. This patch fixes
    the definition of this structure and makes the corresponding adjustments.

    Signed-off-by: K. Y. Srinivasan
    Reviewed-by: Haiyang Zhang
    Signed-off-by: Greg Kroah-Hartman

    K. Y. Srinivasan
     
  • This reverts commit d025e9e2b890db679f1246037bf65bd4be512627.

    This causes corruption for a number of users and needs further
    investigation in the next cycle.
    https://bugzilla.kernel.org/show_bug.cgi?id=52491
    https://bugs.freedesktop.org/show_bug.cgi?id=58659
    http://lists.freedesktop.org/archives/dri-devel/2013-January/032961.html

    Signed-off-by: Alex Deucher

    Alex Deucher
     
  • Pull more s390 patches from Martin Schwidefsky:
    "A couple of bug fixes: one of the transparent huge page primitives is
    broken, the sched_clock function overflows after 417 days, the XFS
    module has grown too large for -fpic and the new pci code has broken
    normal channel subsystem notifications."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/chsc: fix SEI usage
    s390/time: fix sched_clock() overflow
    s390: use -fPIC for module compile
    s390/mm: fix pmd_pfn() for thp

    Linus Torvalds
     

17 Jan, 2013

6 commits

  • We stopped reading FORCEWAKE for posting reads in

    commit 8dee3eea3ccd3b6c00a8d3a08dd715d6adf737dd
    Author: Ben Widawsky
    Date: Sat Sep 1 22:59:50 2012 -0700

    drm/i915: Never read FORCEWAKE

    and started using something from the same cacheline instead. On the
    bug reporter's machine this broke entering rc6 states after a
    suspend/resume cycle. It turns out reading ECOBUS as posting read
    worked fine, while GTFIFODBG did not, preventing RC6 states after
    suspend/resume per the bug report referenced below. It's not entirely
    clear why, but clearly GTFIFODBG was nowhere near the same cacheline
    or address range as FORCEWAKE.

    Trying out various registers for posting reads showed that all tested
    registers for which NEEDS_FORCE_WAKE() (in i915_drv.c) returns true
    work. Conversely, most (but not quite all) registers for which
    NEEDS_FORCE_WAKE() returns false do not work. Details in the referenced
    bug.

    Based on the above, add posting reads on ECOBUS where GTFIFODBG was
    previously relied on.

    In true cargo cult spirit, add posting reads for FORCEWAKE_VLV writes as
    well, but instead of ECOBUS, use FORCEWAKE_ACK_VLV which is in the same
    address range as FORCEWAKE_VLV.

    v2: Add more details to the commit message. No functional changes.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=52411
    Reported-and-tested-by: Alexander Bersenev
    CC: Ben Widawsky
    Signed-off-by: Jani Nikula
    Reviewed-by: Chris Wilson
    Cc: stable@vger.kernel.org
    [danvet: add cc: stable and make the commit message a bit clearer that
    this is a regression fix and what exactly broke.]
    Signed-off-by: Daniel Vetter

    Jani Nikula
     
  • Pull xfs bugfixes from Ben Myers:

    - fix(es) for compound buffers

    - fix for dquot soft timer asserts due to overflow of d_blk_softlimit

    - fix for regression in dir v2 code introduced in commit 20f7e9f3726a
    ("xfs: factor dir2 block read operations")

    * tag 'for-linus-v3.8-rc4' of git://oss.sgi.com/xfs/xfs:
    xfs: recalculate leaf entry pointer after compacting a dir2 block
    xfs: remove int casts from debug dquot soft limit timer asserts
    xfs: fix the multi-segment log buffer format
    xfs: fix segment in xfs_buf_item_format_segment
    xfs: rename bli_format to avoid confusion with bli_formats
    xfs: use b_maps[] for discontiguous buffers

    Linus Torvalds
     
  • Pull ACPI and power management fixes from Rafael Wysocki:

    - cpuidle regression fix related to the initialization of state
    kobjects from Krzysztof Mazur.

    - cpuidle fix removing some not very useful code and making some
    user-visible problems go away at the same time. From Daniel Lezcano.

    - ACPI build fix from Yinghai Lu.

    * tag 'pm+acpi-for-3.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpuidle: remove the power_specified field in the driver
    ACPI / glue: Fix build with ACPI_GLUE_DEBUG set
    cpuidle: fix number of initialized/destroyed states

    Linus Torvalds
     
  • Dave Jones hit this assert when doing a compile on recent git, with
    CONFIG_XFS_DEBUG enabled:

    XFS: Assertion failed: (char *)dup - (char *)hdr == be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup)), file: fs/xfs/xfs_dir2_data.c, line: 828

    Upon further digging, the tag found by xfs_dir2_data_unused_tag_p(dup)
    contained "2" and not the proper offset, and I found that this value was
    changed after the memmoves under "Use a stale leaf for our new entry."
    in xfs_dir2_block_addname(), i.e.

    memmove(&blp[mid + 1], &blp[mid],
    (highstale - mid) * sizeof(*blp));

    overwrote it.

    What has happened is that the previous call to xfs_dir2_block_compact()
    has rearranged things; it changes btp->count as well as the
    blp array. So after we make that call, we must recalculate the
    proper pointer to the leaf entries by making another call to
    xfs_dir2_block_leaf_p().

    Dave provided a metadump image which led to a simple reproducer
    (create a particular filename in the affected directory) and this
    resolves the testcase as well as the bug on his live system.

    Thanks also to dchinner for looking at this one with me.

    Signed-off-by: Eric Sandeen
    Tested-by: Dave Jones
    Reviewed-by: Dave Chinner
    Reviewed-by: Mark Tinguely
    Signed-off-by: Ben Myers

    Eric Sandeen
     
  • The int casts here make it easy to trigger an assert with a large
    soft limit. For example, set a >4TB soft limit on an empty volume
    to reproduce a (0 > -x) comparison due to an overflow of
    d_blk_softlimit.

    Signed-off-by: Brian Foster
    Reviewed-by: Ben Myers
    Signed-off-by: Ben Myers

    Brian Foster
     
  • Per Dave Chinner suggestion, this patch:
    1) Corrects the detection of whether a multi-segment buffer is
    still tracking data.
    2) Clears all the buffer log formats for a multi-segment buffer.

    Signed-off-by: Mark Tinguely
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Dave Chinner
    Signed-off-by: Ben Myers

    Mark Tinguely