14 Jul, 2014

1 commit

  • Commit b3d681a4fc108f9653bbb44e4f4e72db2b8a5734 ("firewire: Use
    COMPILE_TEST for build testing") added COMPILE_TEST as an alternative
    dependency for the purpose of build testing the firewire core.
    However, this bypasses all other implicit dependencies assumed by PCI,
    like HAS_DMA.

    If NO_DMA=y:

    drivers/built-in.o: In function `fw_iso_buffer_destroy':
    (.text+0x36a096): undefined reference to `dma_unmap_page'
    drivers/built-in.o: In function `fw_iso_buffer_map_dma':
    (.text+0x36a164): undefined reference to `dma_map_page'
    drivers/built-in.o: In function `fw_iso_buffer_map_dma':
    (.text+0x36a172): undefined reference to `dma_mapping_error'
    drivers/built-in.o: In function `sbp2_send_management_orb':
    sbp2.c:(.text+0x36c6b4): undefined reference to `dma_map_single'
    sbp2.c:(.text+0x36c6c8): undefined reference to `dma_mapping_error'
    sbp2.c:(.text+0x36c772): undefined reference to `dma_map_single'
    sbp2.c:(.text+0x36c786): undefined reference to `dma_mapping_error'
    sbp2.c:(.text+0x36c854): undefined reference to `dma_unmap_single'
    sbp2.c:(.text+0x36c872): undefined reference to `dma_unmap_single'
    drivers/built-in.o: In function `sbp2_map_scatterlist':
    sbp2.c:(.text+0x36ccbc): undefined reference to `scsi_dma_map'
    sbp2.c:(.text+0x36cd36): undefined reference to `dma_map_single'
    sbp2.c:(.text+0x36cd4e): undefined reference to `dma_mapping_error'
    sbp2.c:(.text+0x36cd84): undefined reference to `scsi_dma_unmap'
    drivers/built-in.o: In function `sbp2_unmap_scatterlist':
    sbp2.c:(.text+0x36cda6): undefined reference to `scsi_dma_unmap'
    sbp2.c:(.text+0x36cdc6): undefined reference to `dma_unmap_single'
    drivers/built-in.o: In function `complete_command_orb':
    sbp2.c:(.text+0x36d6ac): undefined reference to `dma_unmap_single'
    drivers/built-in.o: In function `sbp2_scsi_queuecommand':
    sbp2.c:(.text+0x36d8e0): undefined reference to `dma_map_single'
    sbp2.c:(.text+0x36d8f6): undefined reference to `dma_mapping_error'

    Add an explicit dependency on HAS_DMA to fix this.

    Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Jean Delvare
    Signed-off-by: Stefan Richter

    Geert Uytterhoeven
     

30 May, 2014

1 commit

  • Commit af0cdf494781 "firewire: ohci: fix regression with VIA VT6315,
    disable MSI" acted upon a report against VT6315 rev 0:
    http://linux.derkeiler.com/Mailing-Lists/Kernel/2010-12/msg02301.html
    $ lspci -nn
    VIA Technologies, Inc. VT6315 Series Firewire Controller [1106:3403]

    I now got a card with
    $ lspci -nn
    VIA Technologies, Inc. VT6315 Series Firewire Controller [1106:3403] (rev 01)
    and this works fine with MSI enabled.

    Second, I tested this VT6315 rev 1 without CYCLE_TIMER quirk flag using
    http://me.in-berlin.de/~s5r6/linux1394/utils/test_cycle_time_v20100125.c
    and found that this chip does in fact access the cycle timer atomically.

    Things I can't test because I don't have the hardware:
    - whether VT6315 rev 0 really needs QUIRK_CYCLE_TIMER,
    - whether the VT6320 PCI device needs QUIRK_CYCLE_TIMER,
    - whether the VT6325 and VT6330 PCIe devices need QUIRK_CYCLE_TIMER
    and QUIRK_NO_MSI.

    Hence, just add a whitelist entry specifically for VT6315 rev >= 1
    without any quirk flags. Before this entry we need an extra entry to
    catch VT6315 rev

    Stefan Richter
     

17 May, 2014

1 commit


12 May, 2014

1 commit


10 May, 2014

2 commits

  • Linus Torvalds
     
  • Pull x86 fixes from Peter Anvin:
    "A somewhat unpleasantly large collection of small fixes. The big ones
    are the __visible tree sweep and a fix for 'earlyprintk=efi,keep'. It
    was using __init functions with predictably suboptimal results.

    Another key fix is a build fix which would produce output that simply
    would not decompress correctly in some configuration, due to the
    existing Makefiles picking up an unfortunate local label and mistaking
    it for the global symbol _end.

    Additional fixes include the handling of 64-bit numbers when setting
    the vdso data page (a latent bug which became manifest when i386
    started exporting a vdso with time functions), a fix to the new MSR
    manipulation accessors which would cause features to not get properly
    unblocked, a build fix for 32-bit userland, and a few new platform
    quirks"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, vdso, time: Cast tv_nsec to u64 for proper shifting in update_vsyscall()
    x86: Fix typo in MSR_IA32_MISC_ENABLE_LIMIT_CPUID macro
    x86: Fix typo preventing msr_set/clear_bit from having an effect
    x86/intel: Add quirk to disable HPET for the Baytrail platform
    x86/hpet: Make boot_hpet_disable extern
    x86-64, build: Fix stack protector Makefile breakage with 32-bit userland
    x86/reboot: Add reboot quirk for Certec BPC600
    asmlinkage: Add explicit __visible to drivers/*, lib/*, kernel/*
    asmlinkage, x86: Add explicit __visible to arch/x86/*
    asmlinkage: Revert "lto: Make asmlinkage __visible"
    x86, build: Don't get confused by local symbols
    x86/efi: earlyprintk=efi,keep fix

    Linus Torvalds
     

09 May, 2014

8 commits

  • With tk->wall_to_monotonic.tv_nsec being a 32-bit value on 32-bit
    systems, (tk->wall_to_monotonic.tv_nsec << tk->shift) in update_vsyscall()
    may lose upper bits or, worse, add them since compiler will do this:
    (u64)(tk->wall_to_monotonic.tv_nsec << tk->shift)
    instead of
    ((u64)tk->wall_to_monotonic.tv_nsec << tk->shift)

    So if, for example, tv_nsec is 0x800000 and shift is 8 we will end up
    with 0xffffffff80000000 instead of 0x80000000. And then we are stuck in
    the subsequent 'while' loop.

    We need an explicit cast.

    Signed-off-by: Boris Ostrovsky
    Link: http://lkml.kernel.org/r/1399648287-15178-1-git-send-email-boris.ostrovsky@oracle.com
    Acked-by: Konrad Rzeszutek Wilk
    Cc: # v3.14
    Signed-off-by: H. Peter Anvin

    Boris Ostrovsky
     
  • The spuriously added semicolon didn't have any effect because the
    macro isn't currently in use.

    c0a639ad0bc6b178b46996bd1f821a04643e2bde

    Signed-off-by: Andres Freund
    Link: http://lkml.kernel.org/r/1399598957-7011-3-git-send-email-andres@anarazel.de
    Cc: Borislav Petkov
    Signed-off-by: H. Peter Anvin

    Andres Freund
     
  • Due to a typo the msr accessor function introduced in
    22085a66c2fab6cf9b9393c056a3600a6b4735de didn't have any lasting
    effects because they accidentally wrote the old value back.

    After c0a639ad0bc6b178b46996bd1f821a04643e2bde this at the very least
    this causes cpuid limits not to be lifted on some cpus leading to
    missing capabilities for those.

    Signed-off-by: Andres Freund
    Link: http://lkml.kernel.org/r/1399598957-7011-2-git-send-email-andres@anarazel.de
    Cc: Borislav Petkov
    Signed-off-by: H. Peter Anvin

    Andres Freund
     
  • Pull xfs fixes from Dave Chinner:
    "The main fix is adding support for default ACLs on O_TMPFILE opened
    inodes to bring XFS into line with other filesystems. Metadata CRCs
    are now also considered well enough tested to be fully supported, so
    we're removing the shouty warnings issued at mount time for
    filesystems with that format. And there's transaction block
    reservation overrun fix.

    Summary:
    - fix a remote attribute size calculation bug that leads to a
    transaction overrun
    - add default ACLs to O_TMPFILE files
    - Remove the EXPERIMENTAL tag from filesystems with metadata CRC
    support"

    * tag 'xfs-for-linus-3.15-rc5' of git://oss.sgi.com/xfs/xfs:
    xfs: remote attribute overwrite causes transaction overrun
    xfs: initialize default acls for ->tmpfile()
    xfs: fully support v5 format filesystems

    Linus Torvalds
     
  • …l/git/rostedt/linux-trace

    Pull tracing fixes from Steven Rostedt:
    "This contains two fixes.

    The first is a long standing bug that causes bogus data to show up in
    the refcnt field of the module_refcnt tracepoint. It was introduced
    by a merge conflict resolution back in 2.6.35-rc days.

    The result should be 'refcnt = incs - decs', but instead it did
    'refcnt = incs + decs'.

    The second fix is to a bug that was introduced in this merge window
    that allowed for a tracepoint funcs pointer to be used after it was
    freed. Moving the location of where the probes are released solved
    the problem"

    * tag 'trace-fixes-v3.15-rc4-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    tracepoint: Fix use of tracepoint funcs after rcu free
    trace: module: Maintain a valid user count

    Linus Torvalds
     
  • Pull input subsystem fixes from Dmitry Torokhov:
    "Just a few fixups to various drivers"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: elantech - fix touchpad initialization on Gigabyte U2442
    Input: tca8418 - fix loading this driver as a module from a device tree
    Input: bma150 - extend chip detection for bma180
    Input: atkbd - fix keyboard not working on some LG laptops
    Input: synaptics - add min/max quirk for ThinkPad Edge E431

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "A bunch of small fixes for USB-audio and HD-audio, where most of them
    are for regressions: USB-audio PM fixes, ratelimit annoyance fix, HDMI
    offline state fix, and a couple of device-specific quirks"

    * tag 'sound-3.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - hdmi: Set converter channel count even without sink
    ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data
    ALSA: usb-audio: Fix deadlocks at resuming
    ALSA: usb-audio: Save mixer status only once at suspend
    ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined
    ALSA: hda - add headset mic detect quirk for a Dell laptop

    Linus Torvalds
     
  • Pull mmc/rtsx revert from Lee Jones.

    * tag 'mfd-mmc-fixes-3.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
    mmc: rtsx: Revert "mmc: rtsx: add support for pre_req and post_req"

    Linus Torvalds
     

08 May, 2014

10 commits

  • Commit de7b2973903c "tracepoint: Use struct pointer instead of name hash
    for reg/unreg tracepoints" introduces a use after free by calling
    release_probes on the old struct tracepoint array before the newly
    allocated array is published with rcu_assign_pointer. There is a race
    window where tracepoints (RCU readers) can perform a
    "use-after-grace-period-after-free", which shows up as a GPF in
    stress-tests.

    Link: http://lkml.kernel.org/r/53698021.5020108@oracle.com
    Link: http://lkml.kernel.org/p/1399549669-25465-1-git-send-email-mathieu.desnoyers@efficios.com

    Reported-by: Sasha Levin
    CC: Oleg Nesterov
    CC: Dave Jones
    Fixes: de7b2973903c "tracepoint: Use struct pointer instead of name hash for reg/unreg tracepoints"
    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Steven Rostedt

    Mathieu Desnoyers
     
  • The replacement of the 'count' variable by two variables 'incs' and
    'decs' to resolve some race conditions during module unloading was done
    in parallel with some cleanup in the trace subsystem, and was integrated
    as a merge.

    Unfortunately, the formula for this replacement was wrong in the tracing
    code, and the refcount in the traces was not usable as a result.

    Use 'count = incs - decs' to compute the user count.

    Link: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com

    Acked-by: Ingo Molnar
    Cc: Rusty Russell
    Cc: Frederic Weisbecker
    Cc: stable@vger.kernel.org # 2.6.35
    Fixes: c1ab9cab7509 "merge conflict resolution"
    Signed-off-by: Romain Izard
    Signed-off-by: Steven Rostedt

    Romain Izard
     
  • This reverts commit c42deffd5b53c9e583d83c7964854ede2f12410d.

    commit did use
    mutex_unlock() in tasklet, but mutex_unlock() can't be used in
    tasklet(atomic context). The driver needs to use mutex to avoid
    concurrency, so we can't use tasklet here, the patch need to be
    removed.

    The spinlock host->lock and pcr->lock may deadlock, one way to solve
    the deadlock is remove host->lock in sd_isr_done_transfer(), but if
    using workqueue the we can avoid using the spinlock and also avoid
    the problem.

    Signed-off-by: Micky Ching
    Acked-by: Ulf Hansson
    Signed-off-by: Lee Jones

    Micky Ching
     
  • HPET on current Baytrail platform has accuracy problem to be
    used as reliable clocksource/clockevent, so add a early quirk to
    disable it.

    Signed-off-by: Feng Tang
    Cc: Clemens Ladisch
    Cc: John Stultz
    Cc: Linus Torvalds
    Link: http://lkml.kernel.org/r/1398327498-13163-2-git-send-email-feng.tang@intel.com
    Signed-off-by: Ingo Molnar

    Feng Tang
     
  • HPET on some platform has accuracy problem. Making
    "boot_hpet_disable" extern so that we can runtime disable
    the HPET timer by using quirk to check the platform.

    Signed-off-by: Feng Tang
    Cc: Clemens Ladisch
    Cc: John Stultz
    Cc: Linus Torvalds
    Link: http://lkml.kernel.org/r/1398327498-13163-1-git-send-email-feng.tang@intel.com
    Signed-off-by: Ingo Molnar

    Feng Tang
     
  • Pull MTD fix from Brian Norris:
    "A single update for Keystone SoC's, whose NAND controller does not
    support subpage programming"

    * tag 'for-linus-20140507' of git://git.infradead.org/linux-mtd:
    mtd: davinci-nand: disable subpage write for keystone-nand

    Linus Torvalds
     
  • Pull HID fixes from Jiri Kosina:

    - fix a small bug in computation of report size, which might cause some
    devices (Atmel touchpad found on the Samsung Ativ 9) to reject
    reports with otherwise valid contents

    - a few device-ID specific quirks/additions piggy-backing on top of it

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    HID: sensor-hub: Add in quirk for sensor hub in Lenovo Ideapad Yogas
    HID: add NO_INIT_REPORTS quirk for Synaptics Touch Pad V 103S
    HID: core: fix computation of the report size
    HID: multitouch: add support of EliteGroup 05D8 panels

    Linus Torvalds
     
  • Pull radeon mullins support from Dave Airlie:
    "This is support for the new AMD mullins APU, it pretty much just adds
    support to the driver in the all the right places, and is pretty low
    risk wrt other GPUs"

    Oh well. I guess it ends up fitting under "support new hardware" for
    merging late.

    * 'drm-radeon-mullins' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon: add pci ids for Mullins
    drm/radeon: add Mullins VCE support
    drm/radeon: modesetting updates for Mullins.
    drm/radeon: dpm updates for KV/KB
    drm/radeon: add Mullins dpm support.
    drm/radeon: add Mullins UVD support.
    drm/radeon: update cik init for Mullins.
    drm/radeon: add Mullins chip family

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "radeon, i915 and nouveau fixes, all fixes for regressions or black
    screens, or possible oopses"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon: lower the ref * post PLL maximum
    drm/radeon: check that we have a clock before PLL setup
    drm/radeon: drm/radeon: add missing radeon_semaphore_free to error path
    drm/radeon: Fix num_banks calculation for SI
    agp: info leak in agpioc_info_wrap()
    drm/gm107/gr: bump attrib cb size quite a bit
    drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip
    drm/nouveau/bios: fix shadowing from PROM on big-endian systems
    drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi
    drm/radeon/dp: check for errors in dpcd reads
    drm/radeon: avoid high jitter with small frac divs
    drm/radeon: check buffer relocation offset
    drm/radeon: use pflip irq on R600+ v2
    drm/radeon/uvd: use lower clocks on old UVD to boot v2
    drm/i915: don't try DP_LINK_BW_5_4 on HSW ULX
    drm/i915: Sanitize the enable_ppgtt module option once
    drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc()

    Linus Torvalds
     
  • If you are using a 64-bit kernel with 32-bit userland, then
    scripts/gcc-x86_64-has-stack-protector.sh invokes 32-bit gcc
    with -mcmodel=kernel, which produces:

    :1:0: error: code model 'kernel' not supported in the 32 bit mode

    and trips the "broken compiler" test at arch/x86/Makefile:120.

    There are several places a fix is possible, but the following seems
    cleanest. (But it's minimal; it would also be possible to factor
    out a bunch of stuff from the two branches of the if.)

    Signed-off-by: George Spelvin
    Link: http://lkml.kernel.org/r/20140507210552.7581.qmail@ns.horizon.com
    Cc: # v3.14
    Signed-off-by: H. Peter Anvin

    George Spelvin
     

07 May, 2014

16 commits

  • Certec BPC600 needs reboot=pci to actually reboot.

    Signed-off-by: Christian Gmeiner
    Cc: Matthew Garrett
    Cc: Li Aubrey
    Cc: Andrew Morton
    Cc: Dave Jones
    Cc: Fenghua Yu
    Cc: Linus Torvalds
    Link: http://lkml.kernel.org/r/1399446114-2147-1-git-send-email-christian.gmeiner@gmail.com
    Signed-off-by: Ingo Molnar

    Christian Gmeiner
     
  • Add Mullins chips support.

    * 'mullins' of git://people.freedesktop.org/~deathsimple/linux:
    drm/radeon: add pci ids for Mullins
    drm/radeon: add Mullins VCE support
    drm/radeon: modesetting updates for Mullins.
    drm/radeon: dpm updates for KV/KB
    drm/radeon: add Mullins dpm support.
    drm/radeon: add Mullins UVD support.
    drm/radeon: update cik init for Mullins.
    drm/radeon: add Mullins chip family

    Dave Airlie
     
  • …ux-2.6 into drm-fixes

    nouveau fixes.

    * 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
    drm/gm107/gr: bump attrib cb size quite a bit
    drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip
    drm/nouveau/bios: fix shadowing from PROM on big-endian systems
    drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi

    Dave Airlie
     
  • Some more i915 fixes. There's still some DP issues we are looking into,
    but wanted to get these moving.

    * tag 'topc/core-stuff-2014-05-05' of git://anongit.freedesktop.org/drm-intel:
    drm/i915: don't try DP_LINK_BW_5_4 on HSW ULX
    drm/i915: Sanitize the enable_ppgtt module option once
    drm/i915: Break encoder->crtc link separately in intel_sanitize_crtc()

    Dave Airlie
     
  • this is the next pull quested for stashed up radeon fixes for 3.15. As discussed support for Mullins was separated out and will get it's own pull request. Remaining highlights are:
    1. Some more patches to better handle PLL limits.
    2. Making use of the PFLIP additional to the VBLANK interrupt, otherwise we sometimes miss page flip events.
    3. Fix for the UVD command stream parser.
    4. Fix for bootup UVD clocks on RV7xx systems.
    5. Adding missing error check on dpcd reads.
    6. Fixes number of banks calculation on SI.

    * 'drm-fixes-3.15' of git://people.freedesktop.org/~deathsimple/linux:
    drm/radeon: lower the ref * post PLL maximum
    drm/radeon: check that we have a clock before PLL setup
    drm/radeon: drm/radeon: add missing radeon_semaphore_free to error path
    drm/radeon: Fix num_banks calculation for SI
    drm/radeon/dp: check for errors in dpcd reads
    drm/radeon: avoid high jitter with small frac divs
    drm/radeon: check buffer relocation offset
    drm/radeon: use pflip irq on R600+ v2
    drm/radeon/uvd: use lower clocks on old UVD to boot v2

    Dave Airlie
     
  • Merge misc fixes from Andrew Morton:
    "13 fixes"

    * emailed patches from Andrew Morton :
    agp: info leak in agpioc_info_wrap()
    fs/affs/super.c: bugfix / double free
    fanotify: fix -EOVERFLOW with large files on 64-bit
    slub: use sysfs'es release mechanism for kmem_cache
    revert "mm: vmscan: do not swap anon pages just because free+file is low"
    autofs: fix lockref lookup
    mm: filemap: update find_get_pages_tag() to deal with shadow entries
    mm/compaction: make isolate_freepages start at pageblock boundary
    MAINTAINERS: zswap/zbud: change maintainer email address
    mm/page-writeback.c: fix divide by zero in pos_ratio_polynom
    hugetlb: ensure hugepage access is denied if hugepages are not supported
    slub: fix memcg_propagate_slab_attrs
    drivers/rtc/rtc-pcf8523.c: fix month definition

    Linus Torvalds
     
  • On 64 bit systems the agp_info struct has a 4 byte hole between
    ->agp_mode and ->aper_base. We need to clear it to avoid disclosing
    stack information to userspace.

    Signed-off-by: Dan Carpenter
    Cc: David Airlie
    Cc: Daniel Vetter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Commit 842a859db26b ("affs: use ->kill_sb() to simplify ->put_super()
    and failure exits of ->mount()") adds .kill_sb which frees sbi but
    doesn't remove sbi free in case of parse_options error causing double
    free+random crash.

    Signed-off-by: Fabian Frederick
    Cc: Alexander Viro
    Cc: [3.14.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fabian Frederick
     
  • On 64-bit systems, O_LARGEFILE is automatically added to flags inside
    the open() syscall (also openat(), blkdev_open(), etc). Userspace
    therefore defines O_LARGEFILE to be 0 - you can use it, but it's a
    no-op. Everything should be O_LARGEFILE by default.

    But: when fanotify does create_fd() it uses dentry_open(), which skips
    all that. And userspace can't set O_LARGEFILE in fanotify_init()
    because it's defined to 0. So if fanotify gets an event regarding a
    large file, the read() will just fail with -EOVERFLOW.

    This patch adds O_LARGEFILE to fanotify_init()'s event_f_flags on 64-bit
    systems, using the same test as open()/openat()/etc.

    Addresses https://bugzilla.redhat.com/show_bug.cgi?id=696821

    Signed-off-by: Will Woods
    Acked-by: Eric Paris
    Reviewed-by: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Woods
     
  • debugobjects warning during netfilter exit:

    ------------[ cut here ]------------
    WARNING: CPU: 6 PID: 4178 at lib/debugobjects.c:260 debug_print_object+0x8d/0xb0()
    ODEBUG: free active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x20
    Modules linked in:
    CPU: 6 PID: 4178 Comm: kworker/u16:2 Tainted: G W 3.11.0-next-20130906-sasha #3984
    Workqueue: netns cleanup_net
    Call Trace:
    dump_stack+0x52/0x87
    warn_slowpath_common+0x8c/0xc0
    warn_slowpath_fmt+0x46/0x50
    debug_print_object+0x8d/0xb0
    __debug_check_no_obj_freed+0xa5/0x220
    debug_check_no_obj_freed+0x15/0x20
    kmem_cache_free+0x197/0x340
    kmem_cache_destroy+0x86/0xe0
    nf_conntrack_cleanup_net_list+0x131/0x170
    nf_conntrack_pernet_exit+0x5d/0x70
    ops_exit_list+0x5e/0x70
    cleanup_net+0xfb/0x1c0
    process_one_work+0x338/0x550
    worker_thread+0x215/0x350
    kthread+0xe7/0xf0
    ret_from_fork+0x7c/0xb0

    Also during dcookie cleanup:

    WARNING: CPU: 12 PID: 9725 at lib/debugobjects.c:260 debug_print_object+0x8c/0xb0()
    ODEBUG: free active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x20
    Modules linked in:
    CPU: 12 PID: 9725 Comm: trinity-c141 Not tainted 3.15.0-rc2-next-20140423-sasha-00018-gc4ff6c4 #408
    Call Trace:
    dump_stack (lib/dump_stack.c:52)
    warn_slowpath_common (kernel/panic.c:430)
    warn_slowpath_fmt (kernel/panic.c:445)
    debug_print_object (lib/debugobjects.c:262)
    __debug_check_no_obj_freed (lib/debugobjects.c:697)
    debug_check_no_obj_freed (lib/debugobjects.c:726)
    kmem_cache_free (mm/slub.c:2689 mm/slub.c:2717)
    kmem_cache_destroy (mm/slab_common.c:363)
    dcookie_unregister (fs/dcookies.c:302 fs/dcookies.c:343)
    event_buffer_release (arch/x86/oprofile/../../../drivers/oprofile/event_buffer.c:153)
    __fput (fs/file_table.c:217)
    ____fput (fs/file_table.c:253)
    task_work_run (kernel/task_work.c:125 (discriminator 1))
    do_notify_resume (include/linux/tracehook.h:196 arch/x86/kernel/signal.c:751)
    int_signal (arch/x86/kernel/entry_64.S:807)

    Sysfs has a release mechanism. Use that to release the kmem_cache
    structure if CONFIG_SYSFS is enabled.

    Only slub is changed - slab currently only supports /proc/slabinfo and
    not /sys/kernel/slab/*. We talked about adding that and someone was
    working on it.

    [akpm@linux-foundation.org: fix CONFIG_SYSFS=n build]
    [akpm@linux-foundation.org: fix CONFIG_SYSFS=n build even more]
    Signed-off-by: Christoph Lameter
    Reported-by: Sasha Levin
    Tested-by: Sasha Levin
    Acked-by: Greg KH
    Cc: Thomas Gleixner
    Cc: Pekka Enberg
    Cc: Russell King
    Cc: Bart Van Assche
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • This reverts commit 0bf1457f0cfc ("mm: vmscan: do not swap anon pages
    just because free+file is low") because it introduced a regression in
    mostly-anonymous workloads, where reclaim would become ineffective and
    trap every allocating task in direct reclaim.

    The problem is that there is a runaway feedback loop in the scan balance
    between file and anon, where the balance tips heavily towards a tiny
    thrashing file LRU and anonymous pages are no longer being looked at.
    The commit in question removed the safe guard that would detect such
    situations and respond with forced anonymous reclaim.

    This commit was part of a series to fix premature swapping in loads with
    relatively little cache, and while it made a small difference, the cure
    is obviously worse than the disease. Revert it.

    Signed-off-by: Johannes Weiner
    Reported-by: Christian Borntraeger
    Acked-by: Christian Borntraeger
    Acked-by: Rafael Aquini
    Cc: Rik van Riel
    Cc: [3.12+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • autofs needs to be able to see private data dentry flags for its dentrys
    that are being created but not yet hashed and for its dentrys that have
    been rmdir()ed but not yet freed. It needs to do this so it can block
    processes in these states until a status has been returned to indicate
    the given operation is complete.

    It does this by keeping two lists, active and expring, of dentrys in
    this state and uses ->d_release() to keep them stable while it checks
    the reference count to determine if they should be used.

    But with the recent lockref changes dentrys being freed sometimes don't
    transition to a reference count of 0 before being freed so autofs can
    occassionally use a dentry that is invalid which can lead to a panic.

    Signed-off-by: Ian Kent
    Cc: Al Viro
    Cc: Linus Torvalds
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Dave Jones reports the following crash when find_get_pages_tag() runs
    into an exceptional entry:

    kernel BUG at mm/filemap.c:1347!
    RIP: find_get_pages_tag+0x1cb/0x220
    Call Trace:
    find_get_pages_tag+0x36/0x220
    pagevec_lookup_tag+0x21/0x30
    filemap_fdatawait_range+0xbe/0x1e0
    filemap_fdatawait+0x27/0x30
    sync_inodes_sb+0x204/0x2a0
    sync_inodes_one_sb+0x19/0x20
    iterate_supers+0xb2/0x110
    sys_sync+0x44/0xb0
    ia32_do_call+0x13/0x13

    1343 /*
    1344 * This function is never used on a shmem/tmpfs
    1345 * mapping, so a swap entry won't be found here.
    1346 */
    1347 BUG();

    After commit 0cd6144aadd2 ("mm + fs: prepare for non-page entries in
    page cache radix trees") this comment and BUG() are out of date because
    exceptional entries can now appear in all mappings - as shadows of
    recently evicted pages.

    However, as Hugh Dickins notes,

    "it is truly surprising for a PAGECACHE_TAG_WRITEBACK (and probably
    any other PAGECACHE_TAG_*) to appear on an exceptional entry.

    I expect it comes down to an occasional race in RCU lookup of the
    radix_tree: lacking absolute synchronization, we might sometimes
    catch an exceptional entry, with the tag which really belongs with
    the unexceptional entry which was there an instant before."

    And indeed, not only is the tree walk lockless, the tags are also read
    in chunks, one radix tree node at a time. There is plenty of time for
    page reclaim to swoop in and replace a page that was already looked up
    as tagged with a shadow entry.

    Remove the BUG() and update the comment. While reviewing all other
    lookup sites for whether they properly deal with shadow entries of
    evicted pages, update all the comments and fix memcg file charge moving
    to not miss shmem/tmpfs swapcache pages.

    Fixes: 0cd6144aadd2 ("mm + fs: prepare for non-page entries in page cache radix trees")
    Signed-off-by: Johannes Weiner
    Reported-by: Dave Jones
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • The compaction freepage scanner implementation in isolate_freepages()
    starts by taking the current cc->free_pfn value as the first pfn. In a
    for loop, it scans from this first pfn to the end of the pageblock, and
    then subtracts pageblock_nr_pages from the first pfn to obtain the first
    pfn for the next for loop iteration.

    This means that when cc->free_pfn starts at offset X rather than being
    aligned on pageblock boundary, the scanner will start at offset X in all
    scanned pageblock, ignoring potentially many free pages. Currently this
    can happen when

    a) zone's end pfn is not pageblock aligned, or

    b) through zone->compact_cached_free_pfn with CONFIG_HOLES_IN_ZONE
    enabled and a hole spanning the beginning of a pageblock

    This patch fixes the problem by aligning the initial pfn in
    isolate_freepages() to pageblock boundary. This also permits replacing
    the end-of-pageblock alignment within the for loop with a simple
    pageblock_nr_pages increment.

    Signed-off-by: Vlastimil Babka
    Reported-by: Heesub Shin
    Acked-by: Minchan Kim
    Cc: Mel Gorman
    Acked-by: Joonsoo Kim
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Michal Nazarewicz
    Cc: Naoya Horiguchi
    Cc: Christoph Lameter
    Acked-by: Rik van Riel
    Cc: Dongjun Shin
    Cc: Sunghwan Yun
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     
  • sjenning@linux.vnet.ibm.com is no longer a viable entity.

    Signed-off-by: Seth Jennings
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Seth Jennings
     
  • It is possible for "limit - setpoint + 1" to equal zero, after getting
    truncated to a 32 bit variable, and resulting in a divide by zero error.

    Using the fully 64 bit divide functions avoids this problem. It also
    will cause pos_ratio_polynom() to return the correct value when
    (setpoint - limit) exceeds 2^32.

    Also uninline pos_ratio_polynom, at Andrew's request.

    Signed-off-by: Rik van Riel
    Reviewed-by: Michal Hocko
    Cc: Aneesh Kumar K.V
    Cc: Mel Gorman
    Cc: Nishanth Aravamudan
    Cc: Luiz Capitulino
    Cc: Masayoshi Mizuma
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rik van Riel