13 Aug, 2015

7 commits

  • Support HighPoint RR36xx HBAs which are based on Marvell Frey.
    Support SAS tape and SAS media changer.

    [jejb: remove now unused label]
    Signed-off-by: HighPoint Linux Team
    Reviewed-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    linux
     
  • This patch changes the st driver to use attribute groups so
    driver sysfs files are created automatically. See the
    following for reference:

    http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/

    Signed-off-by: Shane Seymour
    Reviewed-by: Greg Kroah-Hartman
    Acked-by: Kai Mäkisara
    Signed-off-by: James Bottomley

    Seymour, Shane M
     
  • Resources allocated within bfad_im_port_index idr are not deallocated
    on module unload. The patch adds idr_destroy() in exit function.

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Alexey Khoroshilov
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: James Bottomley

    Alexey Khoroshilov
     
  • Signed-off-by: Bart Van Assche
    Signed-off-by: Vasu Dev
    Signed-off-by: James Bottomley

    Bart Van Assche
     
  • In case pci_resource_start() or pci_resource_len() reutrn 0, mvsas_ioremap
    returns without doing an iounmap() of mvi->regs_ex.

    Found by the cocinelle tool.

    Signed-off-by: Johannes Thumshirn
    Reviewed-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Johannes Thumshirn
     
  • Commit f3ddac1918fe963bcbf8d407a3a3c0881b47248b ("[SCSI] qla2xxx:
    Disable adapter when we encounter a PCI disconnect.") has introduced a
    code that disables the board, releasing some resources, when reading
    0xffffffff.

    In case this happens when there is an EEH, this read will trigger EEH
    detection and set PCI channel offline. EEH will be able to recover the
    card from this state by doing a reset, so it's a better option than
    simply disabling the card.

    Since eeh_check_failure will mark the channel as offline before
    returning the read value, in case there really was an EEH, we can simply
    check for pci_channel_offline, preventing the board_disable code from
    running if it's true.

    Without this patch, EEH code will try to access those same resources
    that board_disable will try to free. This race can cause EEH recovery to
    fail.

    [ 504.370577] EEH: Notify device driver to resume
    [ 504.370580] qla2xxx [0001:07:00.0]-9002:2: The device failed to resume I/O from slot/link_reset.

    Signed-off-by: Thadeu Lima de Souza Cascardo
    Acked-by: Himanshu Madhani
    Signed-off-by: James Bottomley

    Thadeu Lima de Souza Cascardo
     
  • Signed-off-by: Suresh Thiagarajan
    Signed-off-by: Viswas G
    Acked-by: Jack Wang
    Signed-off-by: James Bottomley

    Suresh Thiagarajan
     

31 Jul, 2015

11 commits

  • SCSI device driver to support filesystem access on the IBM CXL Flash adapter.

    Supported-by: Stephen Bates
    Reviewed-by: Michael Neuling
    Signed-off-by: Matthew R. Ochs
    Signed-off-by: Manoj N. Kumar
    Reviewed-by: Brian King
    Signed-off-by: James Bottomley

    Matthew R. Ochs
     
  • The string "cmd %d RESET FAILED, new lockup detected" is not quite
    large enough so the sprintf() will overflow. I have increased the size
    of the buffer and also changed the sprintf calls to snprintf.

    Fixes: 73153fe533bc ('hpsa: use block layer tag for command allocation')
    Signed-off-by: Dan Carpenter
    Acked-by: Don Brace
    Signed-off-by: James Bottomley

    Dan Carpenter
     
  • The iSCSI session recovery_tmo setting is writeable in sysfs, but it's
    also set every time a connection is established when parameters are set
    from iscsid over netlink. That results in the timeout being reset to
    the default value after every recovery.

    The DM multipath tools want to use the sysfs interface to lower the
    default timeout when there are multiple paths to fail over. It has
    caused confusion that we have a writeable sysfs value that seem to keep
    resetting itself.

    This patch adds an in-kernel flag that gets set once a sysfs write
    occurs, and then ignores netlink parameter setting once it's been
    modified via the sysfs interface. My thinking here is that the sysfs
    interface is much simpler for external tools to influence the session
    timeout, but if we're going to allow it to be modified directly we
    should ensure that setting is maintained.

    Signed-off-by: Chris Leech
    Reviewed-by: Mike Christie
    Signed-off-by: James Bottomley

    Chris Leech
     
  • Signed-off-by: Brian King
    Signed-off-by: James Bottomley

    Brian King
     
  • Some misc fixes for endianness checking with sparse so sparse with
    endian checking now runs clean. Fixes a minor bug in the process
    which was uncovered by sparse which would result in unnecessary
    error recovery for check conditions.

    Signed-off-by: Brian King
    Reviewed-by: Wen Xiong
    Signed-off-by: James Bottomley

    Brian King
     
  • On LE system, users see the wrong device_id attribute. This patch
    does necessary byte swapping for device_id attribute and works on
    both of LE and BE systems.

    Signed-off-by: Wen Xiong
    Signed-off-by: Brian King
    Signed-off-by: James Bottomley

    Wen Xiong
     
  • The 'sd' driver is calling scsi_mode_sense() to figure out
    internal details. But scsi_mode_sense() never checks for
    any pending unit attentions, so we're getting annoying error
    messages like:

    MODE SENSE: unimplemented page/subpage: 0x00/0x00

    and a possible wrong decision for device cache handling.

    Reviewed-by: Ewan Milne
    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Hannes Reinecke
     
  • Fix a memory leak with scsi-mq triggered by commands with large data
    transfer length.

    __sg_alloc_table() sets both table->nents and table->orig_nents to the
    same value. When the scatterlist is DMA-mapped, table->nents is
    overwritten with the (possibly smaller) size of the DMA-mapped
    scatterlist, while table->orig_nents retains the original size of the
    allocated scatterlist. scsi_free_sgtable() should therefore check
    orig_nents instead of nents, and all code that initializes sdb->table
    without calling __sg_alloc_table() should set both nents and orig_nents.

    Fixes: d285203cf647 ("scsi: add support for a blk-mq based I/O path.")
    Cc: # 3.17+
    Signed-off-by: Tony Battersby
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Ewan D. Milne
    Signed-off-by: James Bottomley

    Tony Battersby
     
  • Fixes another signed / unsigned array indexing bug in the ipr driver.
    Currently, when hrrq_index wraps, it becomes a negative number. We
    do the modulo, but still have a negative number, so we end up indexing
    backwards in the array. Given where the hrrq array is located in memory,
    we probably won't actually reference memory we don't own, but nonetheless
    ipr is still looking at data within struct ipr_ioa_cfg and interpreting it as
    struct ipr_hrr_queue data, so bad things could certainly happen.

    Each ipr adapter has anywhere from 1 to 16 HRRQs. By default, we use 2 on new
    adapters. Let's take an example:

    Assume ioa_cfg->hrrq_index=0x7fffffffe and ioa_cfg->hrrq_num=4:

    The atomic_add_return will then return -1. We mod this with 3 and get -2, add
    one and get -1 for an array index.

    On adapters which support more than a single HRRQ, we dedicate HRRQ to adapter
    initialization and error interrupts so that we can optimize the other queues
    for fast path I/O. So all normal I/O uses HRRQ 1-15. So we want to spread the
    I/O requests across those HRRQs.

    With the default module parameter settings, this bug won't hit, only when
    someone sets the ipr.number_of_msix parameter to a value larger than 3 is when
    bad things start to happen.

    Cc:
    Tested-by: Wen Xiong
    Reviewed-by: Wen Xiong
    Reviewed-by: Gabriel Krisman Bertazi
    Signed-off-by: Brian King
    Reviewed-by: Martin K. Petersen
    Signed-off-by: James Bottomley

    Brian King
     
  • When ipr's internal driver trace was changed to an atomic, a signed/unsigned
    bug slipped in which results in us indexing backwards in our memory buffer
    writing on memory that does not belong to us. This patch fixes this by removing
    the modulo and instead just mask off the low bits.

    Cc:
    Tested-by: Wen Xiong
    Reviewed-by: Wen Xiong
    Reviewed-by: Gabriel Krisman Bertazi
    Signed-off-by: Brian King
    Reviewed-by: Martin K. Petersen
    Signed-off-by: James Bottomley

    Brian King
     
  • Make sure we have the host lock held when calling scsi_report_bus_reset. Fixes
    a crash seen as the __devices list in the scsi host was changing as we were
    iterating through it.

    Cc:
    Reviewed-by: Wen Xiong
    Reviewed-by: Gabriel Krisman Bertazi
    Signed-off-by: Brian King
    Reviewed-by: Martin K. Petersen
    Signed-off-by: James Bottomley

    Brian King
     

16 Jul, 2015

2 commits

  • Commit 1e6f2416044c0 changed the scsi sysfs 'queue_depth' code to
    rejects depths higher than the scsi host template setting. But lots
    of hosts set this to 1, and update the settings in the scsi host
    when the controller/devices probing happens.

    This breaks (at least) mpt2sas and mpt3sas runtime setting of queue
    depth, returning EINVAL for all settings but '1'. And once it's set to
    1, there's no way to go back up.

    Cc: stable@vger.kernel.org
    Fixes: 1e6f2416044c0 "scsi: don't allow setting of queue_depth bigger than can_queue"
    Signed-off-by: Jens Axboe
    Reviewed-by: Martin K. Petersen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: James Bottomley

    Jens Axboe
     
  • Two SLES11 SP3 servers encountered similar crashes simultaneously
    following some kind of SAN/tape target issue:

    ...
    qla2xxx [0000:81:00.0]-801c:3: Abort command issued nexus=3:0:2 -- 1 2002.
    qla2xxx [0000:81:00.0]-801c:3: Abort command issued nexus=3:0:2 -- 1 2002.
    qla2xxx [0000:81:00.0]-8009:3: DEVICE RESET ISSUED nexus=3:0:2 cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-800c:3: do_reset failed for cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-800f:3: DEVICE RESET FAILED: Task management failed nexus=3:0:2 cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-8009:3: TARGET RESET ISSUED nexus=3:0:2 cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-800c:3: do_reset failed for cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-800f:3: TARGET RESET FAILED: Task management failed nexus=3:0:2 cmd=ffff882f89c2c7c0.
    qla2xxx [0000:81:00.0]-8012:3: BUS RESET ISSUED nexus=3:0:2.
    qla2xxx [0000:81:00.0]-802b:3: BUS RESET SUCCEEDED nexus=3:0:2.
    qla2xxx [0000:81:00.0]-505f:3: Link is operational (8 Gbps).
    qla2xxx [0000:81:00.0]-8018:3: ADAPTER RESET ISSUED nexus=3:0:2.
    qla2xxx [0000:81:00.0]-00af:3: Performing ISP error recovery - ha=ffff88bf04d18000.
    rport-3:0-0: blocked FC remote port time out: removing target and saving binding
    qla2xxx [0000:81:00.0]-505f:3: Link is operational (8 Gbps).
    qla2xxx [0000:81:00.0]-8017:3: ADAPTER RESET SUCCEEDED nexus=3:0:2.
    rport-2:0-0: blocked FC remote port time out: removing target and saving binding
    sg_rq_end_io: device detached
    BUG: unable to handle kernel NULL pointer dereference at 00000000000002a8
    IP: [] __pm_runtime_idle+0x28/0x90
    PGD 7e6586f067 PUD 7e5af06067 PMD 0 [1739975.390354] Oops: 0002 [#1] SMP
    CPU 0
    ...
    Supported: No, Proprietary modules are loaded [1739975.390463]
    Pid: 27965, comm: ABCD Tainted: PF X 3.0.101-0.29-default #1 HP ProLiant DL580 Gen8
    RIP: 0010:[] [] __pm_runtime_idle+0x28/0x90
    RSP: 0018:ffff8839dc1e7c68 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: ffff883f0592fc00 RCX: 0000000000000090
    RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000138
    RBP: 0000000000000138 R08: 0000000000000010 R09: ffffffff81bd39d0
    R10: 00000000000009c0 R11: ffffffff81025790 R12: 0000000000000001
    R13: ffff883022212b80 R14: 0000000000000004 R15: ffff883022212b80
    FS: 00007f8e54560720(0000) GS:ffff88407f800000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 00000000000002a8 CR3: 0000007e6ced6000 CR4: 00000000001407f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process ABCD (pid: 27965, threadinfo ffff8839dc1e6000, task ffff883592e0c640)
    Stack:
    ffff883f0592fc00 00000000fffffffa 0000000000000001 ffff883022212b80
    ffff883eff772400 ffffffffa03fa309 0000000000000000 0000000000000000
    ffffffffa04003a0 ffff883f063196c0 ffff887f0379a930 ffffffff8115ea1e
    Call Trace:
    [] st_open+0x129/0x240 [st]
    [] chrdev_open+0x13e/0x200
    [] __dentry_open+0x198/0x310
    [] do_last+0x1f4/0x800
    [] path_openat+0xd9/0x420
    [] do_filp_open+0x4c/0xc0
    [] do_sys_open+0x17f/0x250
    [] system_call_fastpath+0x16/0x1b
    [] 0x7f8e4f617fcf
    Code: eb d3 90 48 83 ec 28 40 f6 c6 04 48 89 6c 24 08 4c 89 74 24 20 48 89 fd 48 89 1c 24 4c 89 64 24 10 41 89 f6 4c 89 6c 24 18 74 11 ff 8f 70 01 00 00 0f 94 c0 45 31 ed 84 c0 74 2b 4c 8d a5 a0
    RIP [] __pm_runtime_idle+0x28/0x90
    RSP
    CR2: 00000000000002a8

    Analysis reveals the cause of the crash to be due to STp->device
    being NULL. The pointer was NULLed via scsi_tape_put(STp) when it
    calls scsi_tape_release(). In st_open() we jump to err_out after
    scsi_block_when_processing_errors() completes and returns the
    device as offline (sdev_state was SDEV_DEL):

    1180 /* Open the device. Needs to take the BKL only because of incrementing the SCSI host
    1181 module count. */
    1182 static int st_open(struct inode *inode, struct file *filp)
    1183 {
    1184 int i, retval = (-EIO);
    1185 int resumed = 0;
    1186 struct scsi_tape *STp;
    1187 struct st_partstat *STps;
    1188 int dev = TAPE_NR(inode);
    1189 char *name;
    ...
    1217 if (scsi_autopm_get_device(STp->device) < 0) {
    1218 retval = -EIO;
    1219 goto err_out;
    1220 }
    1221 resumed = 1;
    1222 if (!scsi_block_when_processing_errors(STp->device)) {
    1223 retval = (-ENXIO);
    1224 goto err_out;
    1225 }
    ...
    1264 err_out:
    1265 normalize_buffer(STp->buffer);
    1266 spin_lock(&st_use_lock);
    1267 STp->in_use = 0;
    1268 spin_unlock(&st_use_lock);
    1269 scsi_tape_put(STp); device = 0 after this
    1270 if (resumed)
    1271 scsi_autopm_put_device(STp->device);
    1272 return retval;

    The ref count for the struct scsi_tape had already been reduced
    to 1 when the .remove method of the st module had been called.
    The kref_put() in scsi_tape_put() caused scsi_tape_release()
    to be called:

    0266 static void scsi_tape_put(struct scsi_tape *STp)
    0267 {
    0268 struct scsi_device *sdev = STp->device;
    0269
    0270 mutex_lock(&st_ref_mutex);
    0271 kref_put(&STp->kref, scsi_tape_release); disk;
    4277
    4278 tpnt->device = NULL; <<buffer) {
    4281 normalize_buffer(tpnt->buffer);
    4282 kfree(tpnt->buffer->reserved_pages);
    4283 kfree(tpnt->buffer);
    4284 }
    4285
    4286 disk->private_data = NULL;
    4287 put_disk(disk);
    4288 kfree(tpnt);
    4289 return;
    4290 }

    Although the problem was reported on SLES11.3 the problem appears
    in linux-next as well.

    The crash is fixed by reordering the code so we no longer access
    the struct scsi_tape after the kref_put() is done on it in st_open().

    Signed-off-by: Shane Seymour
    Signed-off-by: Darren Lavender
    Reviewed-by: Johannes Thumshirn
    Acked-by: Kai Mäkisara
    Cc: stable@vger.kernel.org
    Signed-off-by: James Bottomley

    Seymour, Shane M
     

13 Jul, 2015

7 commits

  • Linus Torvalds
     
  • This reverts commit dec4f799d0a4c9edae20512fa60b0a36f3299ca2.

    Jörg Otte reports a NULL pointder dereference due to this commit, as
    'crtc_state' very much can be NULL:

    crtc_state = state->base.state ?
    intel_atomic_get_crtc_state(state->base.state, intel_crtc) : NULL;

    So the change to test 'crtc_state->base.active' cannot possibly be
    correct as-is.

    There may be some other minimal fix (like just checking crtc_state for
    NULL), but I'm just reverting it now for the rc2 release, and people
    like Daniel Vetter who actually know this code will figure out what the
    right solution is in the longer term.

    Reported-and-bisected-by: Jörg Otte
    Cc: Ander Conselvan de Oliveira
    Cc: Jani Nikula
    Cc: Daniel Vetter
    CC: Maarten Lankhorst
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull VFS fixes from Al Viro:
    "Fixes for this cycle regression in overlayfs and a couple of
    long-standing (== all the way back to 2.6.12, at least) bugs"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    freeing unlinked file indefinitely delayed
    fix a braino in ovl_d_select_inode()
    9p: don't leave a half-initialized inode sitting around

    Linus Torvalds
     
  • Pull MIPS fixes from Ralf Baechle:
    "A fair number of 4.2 fixes also because Markos opened the flood gates.

    - Patch up the math used calculate the location for the page bitmap.

    - The FDC (Not what you think, FDC stands for Fast Debug Channel) IRQ
    around was causing issues on non-Malta platforms, so move the code
    to a Malta specific location.

    - A spelling fix replicated through several files.

    - Fix to the emulation of an R2 instruction for R6 cores.

    - Fix the JR emulation for R6.

    - Further patching of mindless 64 bit issues.

    - Ensure the kernel won't crash on CPUs with L2 caches with >= 8
    ways.

    - Use compat_sys_getsockopt for O32 ABI on 64 bit kernels.

    - Fix cache flushing for multithreaded cores.

    - A build fix"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: O32: Use compat_sys_getsockopt.
    MIPS: c-r4k: Extend way_string array
    MIPS: Pistachio: Support CDMM & Fast Debug Channel
    MIPS: Malta: Make GIC FDC IRQ workaround Malta specific
    MIPS: c-r4k: Fix cache flushing for MT cores
    Revert "MIPS: Kconfig: Disable SMP/CPS for 64-bit"
    MIPS: cps-vec: Use macros for various arithmetics and memory operations
    MIPS: kernel: cps-vec: Replace KSEG0 with CKSEG0
    MIPS: kernel: cps-vec: Use ta0-ta3 pseudo-registers for 64-bit
    MIPS: kernel: cps-vec: Replace mips32r2 ISA level with mips64r2
    MIPS: kernel: cps-vec: Replace 'la' macro with PTR_LA
    MIPS: kernel: smp-cps: Fix 64-bit compatibility errors due to pointer casting
    MIPS: Fix erroneous JR emulation for MIPS R6
    MIPS: Fix branch emulation for BLTC and BGEC instructions
    MIPS: kernel: traps: Fix broken indentation
    MIPS: bootmem: Don't use memory holes for page bitmap
    MIPS: O32: Do not handle require 32 bytes from the stack to be readable.
    MIPS, CPUFREQ: Fix spelling of Institute.
    MIPS: Lemote 2F: Fix build caused by recent mass rename.

    Linus Torvalds
     
  • Pull x86 fixes from Thomas Gleixner:

    - the high latency PIT detection fix, which slipped through the cracks
    for rc1

    - a regression fix for the early printk mechanism

    - the x86 part to plug irq/vector related hotplug races

    - move the allocation of the espfix pages on cpu hotplug to non atomic
    context. The current code triggers a might_sleep() warning.

    - a series of KASAN fixes addressing boot crashes and usability

    - a trivial typo fix for Kconfig help text

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/kconfig: Fix typo in the CONFIG_CMDLINE_BOOL help text
    x86/irq: Retrieve irq data after locking irq_desc
    x86/irq: Use proper locking in check_irq_vectors_for_cpu_disable()
    x86/irq: Plug irq vector hotplug race
    x86/earlyprintk: Allow early_printk() to use console style parameters like '115200n8'
    x86/espfix: Init espfix on the boot CPU side
    x86/espfix: Add 'cpu' parameter to init_espfix_ap()
    x86/kasan: Move KASAN_SHADOW_OFFSET to the arch Kconfig
    x86/kasan: Add message about KASAN being initialized
    x86/kasan: Fix boot crash on AMD processors
    x86/kasan: Flush TLBs after switching CR3
    x86/kasan: Fix KASAN shadow region page tables
    x86/init: Clear 'init_level4_pgt' earlier
    x86/tsc: Let high latency PIT fail fast in quick_pit_calibrate()

    Linus Torvalds
     
  • Pull timer fixes from Thomas Gleixner:
    "This update from the timer departement contains:

    - A series of patches which address a shortcoming in the tick
    broadcast code.

    If the broadcast device is not available or an hrtimer emulated
    broadcast device, some of the original assumptions lead to boot
    failures. I rather plugged all of the corner cases instead of only
    addressing the issue reported, so the change got a little larger.

    Has been extensivly tested on x86 and arm.

    - Get rid of the last holdouts using do_posix_clock_monotonic_gettime()

    - A regression fix for the imx clocksource driver

    - An update to the new state callbacks mechanism for clockevents.
    This is required to simplify the conversion, which will take place
    in 4.3"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    tick/broadcast: Prevent NULL pointer dereference
    time: Get rid of do_posix_clock_monotonic_gettime
    cris: Replace do_posix_clock_monotonic_gettime()
    tick/broadcast: Unbreak CONFIG_GENERIC_CLOCKEVENTS=n build
    tick/broadcast: Handle spurious interrupts gracefully
    tick/broadcast: Check for hrtimer broadcast active early
    tick/broadcast: Return busy when IPI is pending
    tick/broadcast: Return busy if periodic mode and hrtimer broadcast
    tick/broadcast: Move the check for periodic mode inside state handling
    tick/broadcast: Prevent deep idle if no broadcast device available
    tick/broadcast: Make idle check independent from mode and config
    tick/broadcast: Sanity check the shutdown of the local clock_event
    tick/broadcast: Prevent hrtimer recursion
    clockevents: Allow set-state callbacks to be optional
    clocksource/imx: Define clocksource for mx27

    Linus Torvalds
     
  • Pull irq fix from Thomas Gleixner:
    "A single fix for a cpu hotplug race vs. interrupt descriptors:

    Prevent irq setup/teardown across the cpu starting/dying parts of cpu
    hotplug so that the starting/dying cpu has a stable view of the
    descriptor space. This has been an issue for all architectures in the
    cpu dying phase, where interrupts are migrated away from the dying
    cpu. In the starting phase its mostly a x86 issue vs the vector space
    update"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    hotplug: Prevent alloc/free of irq descriptors during cpu up/down

    Linus Torvalds
     

12 Jul, 2015

11 commits

  • Normally opening a file, unlinking it and then closing will have
    the inode freed upon close() (provided that it's not otherwise busy and
    has no remaining links, of course). However, there's one case where that
    does *not* happen. Namely, if you open it by fhandle with cold dcache,
    then unlink() and close().

    In normal case you get d_delete() in unlink(2) notice that dentry
    is busy and unhash it; on the final dput() it will be forcibly evicted from
    dcache, triggering iput() and inode removal. In this case, though, we end
    up with *two* dentries - disconnected (created by open-by-fhandle) and
    regular one (used by unlink()). The latter will have its reference to inode
    dropped just fine, but the former will not - it's considered hashed (it
    is on the ->s_anon list), so it will stay around until the memory pressure
    will finally do it in. As the result, we have the final iput() delayed
    indefinitely. It's trivial to reproduce -

    void flush_dcache(void)
    {
    system("mount -o remount,rw /");
    }

    static char buf[20 * 1024 * 1024];

    main()
    {
    int fd;
    union {
    struct file_handle f;
    char buf[MAX_HANDLE_SZ];
    } x;
    int m;

    x.f.handle_bytes = sizeof(x);
    chdir("/root");
    mkdir("foo", 0700);
    fd = open("foo/bar", O_CREAT | O_RDWR, 0600);
    close(fd);
    name_to_handle_at(AT_FDCWD, "foo/bar", &x.f, &m, 0);
    flush_dcache();
    fd = open_by_handle_at(AT_FDCWD, &x.f, O_RDWR);
    unlink("foo/bar");
    write(fd, buf, sizeof(buf));
    system("df ."); /* 20Mb eaten */
    close(fd);
    system("df ."); /* should've freed those 20Mb */
    flush_dcache();
    system("df ."); /* should be the same as #2 */
    }

    will spit out something like
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/root 322023 303843 1131 100% /
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/root 322023 303843 1131 100% /
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/root 322023 283282 21692 93% /
    - inode gets freed only when dentry is finally evicted (here we trigger
    than by remount; normally it would've happened in response to memory
    pressure hell knows when).

    Cc: stable@vger.kernel.org # v2.6.38+; earlier ones need s/kill_it/unhash_it/
    Acked-by: J. Bruce Fields
    Signed-off-by: Al Viro

    Al Viro
     
  • when opening a directory we want the overlayfs inode, not one from
    the topmost layer.

    Reported-By: Andrey Jr. Melnikov
    Tested-By: Andrey Jr. Melnikov
    Signed-off-by: Al Viro

    Al Viro
     
  • Cc: stable@vger.kernel.org # all branches
    Signed-off-by: Al Viro

    Al Viro
     
  • Pull libnvdimm fixes from Dan Williams:
    "1) Fixes for a handful of smatch reports (Thanks Dan C.!) and minor
    bug fixes (patches 1-6)

    2) Correctness fixes to the BLK-mode nvdimm driver (patches 7-10).

    Granted these are slightly large for a -rc update. They have been
    out for review in one form or another since the end of May and were
    deferred from the merge window while we settled on the "PMEM API"
    for the PMEM-mode nvdimm driver (ie memremap_pmem, memcpy_to_pmem,
    and wmb_pmem).

    Now that those apis are merged we implement them in the BLK driver
    to guarantee that mmio aperture moves stay ordered with respect to
    incoming read/write requests, and that writes are flushed through
    those mmio-windows and platform-buffers to be persistent on media.

    These pass the sub-system unit tests with the updates to
    tools/testing/nvdimm, and have received a successful build-report from
    the kbuild robot (468 configs).

    With acks from Rafael for the touches to drivers/acpi/"

    * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm:
    nfit: add support for NVDIMM "latch" flag
    nfit: update block I/O path to use PMEM API
    tools/testing/nvdimm: add mock acpi_nfit_flush_address entries to nfit_test
    tools/testing/nvdimm: fix return code for unimplemented commands
    tools/testing/nvdimm: mock ioremap_wt
    pmem: add maintainer for include/linux/pmem.h
    nfit: fix smatch "use after null check" report
    nvdimm: Fix return value of nvdimm_bus_init() if class_create() fails
    libnvdimm: smatch cleanups in __nd_ioctl
    sparse: fix misplaced __pmem definition

    Linus Torvalds
     
  • Pull i2c fixes from Wolfram Sang:
    "Mostly slight adjusments for new drivers, but also one core fix for
    which finally the dependencies are now available as well"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: Mark instantiated device nodes with OF_POPULATE
    i2c: jz4780: Fix return value if probe fails
    i2c: xgene-slimpro: Fix missing mbox_free_channel call in probe error path
    i2c: I2C_MT65XX should depend on HAS_DMA

    Linus Torvalds
     
  • Pull input fixes from Dmitry Torokhov:
    "A fix (revert) for a recent regression in Synaptics driver and a fix
    for Elan i2c touchpad driver"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Revert "Input: synaptics - allocate 3 slots to keep stability in image sensors"
    Input: elan_i2c - change the hover event from MT to ST

    Linus Torvalds
     
  • Pull clk fixes from Stephen Boyd:
    "A small set of fixes for problems found by smatch in new drivers that
    we added this rc and a handful of driver fixes that came in during the
    merge window"

    * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
    drivers: clk: st: Incorrect register offset used for lock_status
    clk: mediatek: mt8173: Fix enabling of critical clocks
    drivers: clk: st: Fix mux bit-setting for Cortex A9 clocks
    drivers: clk: st: Add CLK_GET_RATE_NOCACHE flag to clocks
    drivers: clk: st: Fix flexgen lock init
    drivers: clk: st: Fix FSYN channel values
    drivers: clk: st: Remove unused code
    clk: qcom: Use parent rate when set rate to pixel RCG clock
    clk: at91: do not leak resources
    clk: stm32: Fix out-by-one error path in the index lookup
    clk: iproc: fix bit manipulation arithmetic
    clk: iproc: fix memory leak from clock name

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "A bunch of fixes for radeon, intel, omap and one amdkfd fix.

    Radeon fixes are all over, but it does fix some cursor corruption
    across suspend/resume. i915 should fix the second warn you were
    seeing, so let us know if not. omap is a bunch of small fixes"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (28 commits)
    drm/radeon: disable vce init on cayman (v2)
    drm/amdgpu: fix timeout calculation
    drm/radeon: check if BO_VA is set before adding it to the invalidation list
    drm/radeon: allways add the VM clear duplicate
    Revert "Revert "drm/radeon: dont switch vt on suspend""
    drm/radeon: Fold radeon_set_cursor() into radeon_show_cursor()
    drm/radeon: unpin cursor BOs on suspend and pin them again on resume (v2)
    drm/radeon: Clean up reference counting and pinning of the cursor BOs
    drm/amdkfd: validate pdd where it acquired first
    Revert "drm/i915: Allocate context objects from stolen"
    drm/i915: Declare the swizzling unknown for L-shaped configurations
    drm/radeon: fix underflow in r600_cp_dispatch_texture()
    drm/radeon: default to 2048 MB GART size on SI+
    drm/radeon: fix HDP flushing
    drm/radeon: use RCU query for GEM_BUSY syscall
    drm/amdgpu: Handle irqs only based on irq ring, not irq status regs.
    drm/radeon: Handle irqs only based on irq ring, not irq status regs.
    drm/i915: Use crtc_state->active in primary check_plane func
    drm/i915: Check crtc->active in intel_crtc_disable_planes
    drm/i915: Restore all GGTT VMAs on resume
    ...

    Linus Torvalds
     
  • Pull selinux fixes from James Morris.

    * 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    selinux: fix mprotect PROT_EXEC regression caused by mm change
    selinux: don't waste ebitmap space when importing NetLabel categories

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "This is an assortment of fixes. Most of the commits are from Filipe
    (fsync, the inode allocation cache and a few others). Mark kicked in
    a series fixing corners in the extent sharing ioctls, and everyone
    else fixed up on assorted other problems"

    * 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: fix wrong check for btrfs_force_chunk_alloc()
    Btrfs: fix warning of bytes_may_use
    Btrfs: fix hang when failing to submit bio of directIO
    Btrfs: fix a comment in inode.c:evict_inode_truncate_pages()
    Btrfs: fix memory corruption on failure to submit bio for direct IO
    btrfs: don't update mtime/ctime on deduped inodes
    btrfs: allow dedupe of same inode
    btrfs: fix deadlock with extent-same and readpage
    btrfs: pass unaligned length to btrfs_cmp_data()
    Btrfs: fix fsync after truncate when no_holes feature is enabled
    Btrfs: fix fsync xattr loss in the fast fsync path
    Btrfs: fix fsync data loss after append write
    Btrfs: fix crash on close_ctree() if cleaner starts new transaction
    Btrfs: fix race between caching kthread and returning inode to inode cache
    Btrfs: use kmem_cache_free when freeing entry in inode cache
    Btrfs: fix race between balance and unused block group deletion
    btrfs: add error handling for scrub_workers_get()
    btrfs: cleanup noused initialization of dev in btrfs_end_bio()
    btrfs: qgroup: allow user to clear the limitation on qgroup

    Linus Torvalds
     
  • Pull ARM SoC fixes from Kevin Hilman:
    "A fairly random colletion of fixes based on -rc1 for OMAP, sunxi and
    prima2 as well as a few arm64-specific DT fixes.

    This series also includes a late to support a new Allwinner (sunxi)
    SoC, but since it's rather simple and isolated to the
    platform-specific code, it's included it for this -rc"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    arm64: dts: add device tree for ARM SMM-A53x2 on LogicTile Express 20MG
    arm: dts: vexpress: add missing CCI PMU device node to TC2
    arm: dts: vexpress: describe all PMUs in TC2 dts
    GICv3: Add ITS entry to THUNDER dts
    arm64: dts: Add poweroff button device node for APM X-Gene platform
    ARM: dts: am4372.dtsi: disable rfbi
    ARM: dts: am57xx-beagle-x15: Provide supply for usb2_phy2
    ARM: dts: am4372: Add emif node
    Revert "ARM: dts: am335x-boneblack: disable RTC-only sleep"
    ARM: sunxi: Enable simplefb in the defconfig
    ARM: Remove deprecated symbol from defconfig files
    ARM: sunxi: Add Machine support for A33
    ARM: sunxi: Introduce Allwinner H3 support
    Documentation: sunxi: Update Allwinner SoC documentation
    ARM: prima2: move to use REGMAP APIs for rtciobrg
    ARM: dts: atlas7: add pinctrl and gpio descriptions
    ARM: OMAP2+: Remove unnessary return statement from the void function, omap2_show_dma_caps
    memory: omap-gpmc: Fix parsing of devices

    Linus Torvalds
     

11 Jul, 2015

2 commits

  • Dan reported that the recent changes to the broadcast code introduced
    a potential NULL dereference.

    Add the proper check.

    Fixes: e0454311903d "tick/broadcast: Sanity check the shutdown of the local clock_event"
    Reported-by: Dan Carpenter
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • Pull parisc fixes from Helge Deller:
    "We have one important patch from Dave Anglin and myself which fixes
    PTE/TLB race conditions which caused random segmentation faults on our
    debian buildd servers, and one patch from Alex Ivanov which speeds up
    the graphical text console on the STI framebuffer driver"

    * 'parisc-4.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Fix some PTE/TLB race conditions and optimize __flush_tlb_range based on timing results
    stifb: Implement hardware accelerated copyarea

    Linus Torvalds