1. 07 Nov, 2014 35 commits
    • Dave Chinner's avatar
      xfs: ensure WB_SYNC_ALL writeback handles partial pages correctly · 161958b4
      Dave Chinner authored
      XFS has been having trouble with stray delayed allocation extents
      beyond EOF for a long time. Recent changes to the collapse range
      code has triggered erroneous EBUSY errors on page invalidtion for
      block size smaller than page size filesystems. These
      have been caused by dirty buffers beyond EOF on a partial page which
      do not get written to disk during a sync.
      
      The issue is that write-ahead in xfs_cluster_write() finds such a
      partial page and handles it by leaving the page dirty but pushing it
      into a writeback state. This used to work just fine, as the
      write_cache_pages() code would then find the dirty partial page in
      the next mapping tree lookup as the dirty tag is still set.
      
      Unfortunately, when we moved to a mark and sweep approach to
      writeback to fix other writeback sync issues, we broken this. THe
      act of marking the page as under writeback now clears the TOWRITE
      tag in the radix tree, even though the page is still dirty. This
      causes the TOWRITE tag to be cleared, and hence the next lookup on
      the mapping tree does not find the dirty partial page and so doesn't
      try to write it again.
      
      This same writeback bug was found recently in ext4 and fixed in
      commit 1c8349a1 ("ext4: fix data integrity sync in ordered mode")
      without communication to the wider filesystem community. We can use
      exactly the same fix here so the TOWRITE flag is not cleared on
      partial page writes.
      
      cc: stable@vger.kernel.org # dependent on 1c8349a1Root-cause-found-by: default avatarBrian Foster <bfoster@redhat.com>
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
      Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
      
      (cherry picked from commit 0d085a52)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      161958b4
    • Chao Yu's avatar
      ecryptfs: avoid to access NULL pointer when write metadata in xattr · 95fd0ed8
      Chao Yu authored
      Christopher Head 2014-06-28 05:26:20 UTC described:
      "I tried to reproduce this on 3.12.21. Instead, when I do "echo hello > foo"
      in an ecryptfs mount with ecryptfs_xattr specified, I get a kernel crash:
      
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
      PGD d7840067 PUD b2c3c067 PMD 0
      Oops: 0002 [#1] SMP
      Modules linked in: nvidia(PO)
      CPU: 3 PID: 3566 Comm: bash Tainted: P           O 3.12.21-gentoo-r1 #2
      Hardware name: ASUSTek Computer Inc. G60JX/G60JX, BIOS 206 03/15/2010
      task: ffff8801948944c0 ti: ffff8800bad70000 task.ti: ffff8800bad70000
      RIP: 0010:[<ffffffff8110eb39>]  [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
      RSP: 0018:ffff8800bad71c10  EFLAGS: 00010246
      RAX: 00000000000181a4 RBX: ffff880198648480 RCX: 0000000000000000
      RDX: 0000000000000004 RSI: ffff880172010450 RDI: 0000000000000000
      RBP: ffff880198490e40 R08: 0000000000000000 R09: 0000000000000000
      R10: ffff880172010450 R11: ffffea0002c51e80 R12: 0000000000002000
      R13: 000000000000001a R14: 0000000000000000 R15: ffff880198490e40
      FS:  00007ff224caa700(0000) GS:ffff88019fcc0000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 00000000bb07f000 CR4: 00000000000007e0
      Stack:
      ffffffff811826e8 ffff8800a39d8000 0000000000000000 000000000000001a
      ffff8800a01d0000 ffff8800a39d8000 ffffffff81185fd5 ffffffff81082c2c
      00000001a39d8000 53d0abbc98490e40 0000000000000037 ffff8800a39d8220
      Call Trace:
      [<ffffffff811826e8>] ? ecryptfs_setxattr+0x40/0x52
      [<ffffffff81185fd5>] ? ecryptfs_write_metadata+0x1b3/0x223
      [<ffffffff81082c2c>] ? should_resched+0x5/0x23
      [<ffffffff8118322b>] ? ecryptfs_initialize_file+0xaf/0xd4
      [<ffffffff81183344>] ? ecryptfs_create+0xf4/0x142
      [<ffffffff810f8c0d>] ? vfs_create+0x48/0x71
      [<ffffffff810f9c86>] ? do_last.isra.68+0x559/0x952
      [<ffffffff810f7ce7>] ? link_path_walk+0xbd/0x458
      [<ffffffff810fa2a3>] ? path_openat+0x224/0x472
      [<ffffffff810fa7bd>] ? do_filp_open+0x2b/0x6f
      [<ffffffff81103606>] ? __alloc_fd+0xd6/0xe7
      [<ffffffff810ee6ab>] ? do_sys_open+0x65/0xe9
      [<ffffffff8157d022>] ? system_call_fastpath+0x16/0x1b
      RIP  [<ffffffff8110eb39>] fsstack_copy_attr_all+0x2/0x61
      RSP <ffff8800bad71c10>
      CR2: 0000000000000000
      ---[ end trace df9dba5f1ddb8565 ]---"
      
      If we create a file when we mount with ecryptfs_xattr_metadata option, we will
      encounter a crash in this path:
      ->ecryptfs_create
        ->ecryptfs_initialize_file
          ->ecryptfs_write_metadata
            ->ecryptfs_write_metadata_to_xattr
              ->ecryptfs_setxattr
                ->fsstack_copy_attr_all
      It's because our dentry->d_inode used in fsstack_copy_attr_all is NULL, and it
      will be initialized when ecryptfs_initialize_file finish.
      
      So we should skip copying attr from lower inode when the value of ->d_inode is
      invalid.
      Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
      Cc: stable@vger.kernel.org # v3.2+: b59db43a eCryptfs: Prevent file create race condition
      Signed-off-by: default avatarTyler Hicks <tyhicks@canonical.com>
      
      (cherry picked from commit 35425ea2)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      95fd0ed8
    • Takashi Iwai's avatar
      ALSA: emu10k1: Fix deadlock in synth voice lookup · a027d722
      Takashi Iwai authored
      The emu10k1 voice allocator takes voice_lock spinlock.  When there is
      no empty stream available, it tries to release a voice used by synth,
      and calls get_synth_voice.  The callback function,
      snd_emu10k1_synth_get_voice(), however, also takes the voice_lock,
      thus it deadlocks.
      
      The fix is simply removing the voice_lock holds in
      snd_emu10k1_synth_get_voice(), as this is always called in the
      spinlock context.
      Reported-and-tested-by: default avatarArthur Marsh <arthur.marsh@internode.on.net>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      
      (cherry picked from commit 95926035)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      a027d722
    • Anatol Pomozov's avatar
      ALSA: pcm: use the same dma mmap codepath both for arm and arm64 · f90bea5a
      Anatol Pomozov authored
      This avoids following kernel crash when try to playback on arm64
      
      [  107.497203] [<ffffffc00046b310>] snd_pcm_mmap_data_fault+0x90/0xd4
      [  107.503405] [<ffffffc0001541ac>] __do_fault+0xb0/0x498
      [  107.508565] [<ffffffc0001576a0>] handle_mm_fault+0x224/0x7b0
      [  107.514246] [<ffffffc000092640>] do_page_fault+0x11c/0x310
      [  107.519738] [<ffffffc000081100>] do_mem_abort+0x38/0x98
      
      Tested: backported to 3.14 and tried to playback on arm64 machine
      Signed-off-by: default avatarAnatol Pomozov <anatol.pomozov@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      
      (cherry picked from commit a011e213)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      f90bea5a
    • Andy Shevchenko's avatar
      spi: dw-mid: terminate ongoing transfers at exit · 2c19514d
      Andy Shevchenko authored
      Do full clean up at exit, means terminate all ongoing DMA transfers.
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit 8e45ef68)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      2c19514d
    • Andy Adamson's avatar
      NFSv4.1: Fix an NFSv4.1 state renewal regression · 51033015
      Andy Adamson authored
      Commit 2f60ea6b ("NFSv4: The NFSv4.0 client must send RENEW calls if it holds a delegation") set the NFS4_RENEW_TIMEOUT flag in nfs4_renew_state, and does
      not put an nfs41_proc_async_sequence call, the NFSv4.1 lease renewal heartbeat
      call, on the wire to renew the NFSv4.1 state if the flag was not set.
      
      The NFS4_RENEW_TIMEOUT flag is set when "now" is after the last renewal
      (cl_last_renewal) plus the lease time divided by 3. This is arbitrary and
      sometimes does the following:
      
      In normal operation, the only way a future state renewal call is put on the
      wire is via a call to nfs4_schedule_state_renewal, which schedules a
      nfs4_renew_state workqueue task. nfs4_renew_state determines if the
      NFS4_RENEW_TIMEOUT should be set, and the calls nfs41_proc_async_sequence,
      which only gets sent if the NFS4_RENEW_TIMEOUT flag is set.
      Then the nfs41_proc_async_sequence rpc_release function schedules
      another state remewal via nfs4_schedule_state_renewal.
      
      Without this change we can get into a state where an application stops
      accessing the NFSv4.1 share, state renewal calls stop due to the
      NFS4_RENEW_TIMEOUT flag _not_ being set. The only way to recover
      from this situation is with a clientid re-establishment, once the application
      resumes and the server has timed out the lease and so returns
      NFS4ERR_BAD_SESSION on the subsequent SEQUENCE operation.
      
      An example application:
      open, lock, write a file.
      
      sleep for 6 * lease (could be less)
      
      ulock, close.
      
      In the above example with NFSv4.1 delegations enabled, without this change,
      there are no OP_SEQUENCE state renewal calls during the sleep, and the
      clientid is recovered due to lease expiration on the close.
      
      This issue does not occur with NFSv4.1 delegations disabled, nor with
      NFSv4.0, with or without delegations enabled.
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      Link: http://lkml.kernel.org/r/1411486536-23401-1-git-send-email-andros@netapp.com
      Fixes: 2f60ea6b (NFSv4: The NFSv4.0 client must send RENEW calls...)
      Cc: stable@vger.kernel.org # 3.2.x
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      
      (cherry picked from commit d1f456b0)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      51033015
    • Trond Myklebust's avatar
      NFSv4: fix open/lock state recovery error handling · d9e73039
      Trond Myklebust authored
      The current open/lock state recovery unfortunately does not handle errors
      such as NFS4ERR_CONN_NOT_BOUND_TO_SESSION correctly. Instead of looping,
      just proceeds as if the state manager is finished recovering.
      This patch ensures that we loop back, handle higher priority errors
      and complete the open/lock state recovery.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      
      (cherry picked from commit df817ba3)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      d9e73039
    • Trond Myklebust's avatar
      NFSv4: Fix lock recovery when CREATE_SESSION/SETCLIENTID_CONFIRM fails · e6e258df
      Trond Myklebust authored
      If a NFSv4.x server returns NFS4ERR_STALE_CLIENTID in response to a
      CREATE_SESSION or SETCLIENTID_CONFIRM in order to tell us that it rebooted
      a second time, then the client will currently take this to mean that it must
      declare all locks to be stale, and hence ineligible for reboot recovery.
      
      RFC3530 and RFC5661 both suggest that the client should instead rely on the
      server to respond to inelegible open share, lock and delegation reclaim
      requests with NFS4ERR_NO_GRACE in this situation.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
      
      (cherry picked from commit a4339b7b)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      e6e258df
    • Willy Tarreau's avatar
      lzo: check for length overrun in variable length encoding. · 8b5e1a97
      Willy Tarreau authored
      This fix ensures that we never meet an integer overflow while adding
      255 while parsing a variable length encoding. It works differently from
      commit 206a81c1 ("lzo: properly check for overruns") because instead of
      ensuring that we don't overrun the input, which is tricky to guarantee
      due to many assumptions in the code, it simply checks that the cumulated
      number of 255 read cannot overflow by bounding this number.
      
      The MAX_255_COUNT is the maximum number of times we can add 255 to a base
      count without overflowing an integer. The multiply will overflow when
      multiplying 255 by more than MAXINT/255. The sum will overflow earlier
      depending on the base count. Since the base count is taken from a u8
      and a few bits, it is safe to assume that it will always be lower than
      or equal to 2*255, thus we can always prevent any overflow by accepting
      two less 255 steps.
      
      This patch also reduces the CPU overhead and actually increases performance
      by 1.1% compared to the initial code, while the previous fix costs 3.1%
      (measured on x86_64).
      
      The fix needs to be backported to all currently supported stable kernels.
      Reported-by: default avatarWillem Pinckaers <willem@lekkertech.net>
      Cc: "Don A. Bailey" <donb@securitymouse.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit 72cf9012)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      8b5e1a97
    • Willy Tarreau's avatar
      Revert "lzo: properly check for overruns" · 85156b42
      Willy Tarreau authored
      This reverts commit 206a81c1 ("lzo: properly check for overruns").
      
      As analysed by Willem Pinckaers, this fix is still incomplete on
      certain rare corner cases, and it is easier to restart from the
      original code.
      Reported-by: default avatarWillem Pinckaers <willem@lekkertech.net>
      Cc: "Don A. Bailey" <donb@securitymouse.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit af958a38)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      85156b42
    • Willy Tarreau's avatar
      Documentation: lzo: document part of the encoding · 16fc81f9
      Willy Tarreau authored
      Add a complete description of the LZO format as processed by the
      decompressor. I have not found a public specification of this format
      hence this analysis, which will be used to better understand the code.
      
      Cc: Willem Pinckaers <willem@lekkertech.net>
      Cc: "Don A. Bailey" <donb@securitymouse.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit d98a0526)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      16fc81f9
    • Geert Uytterhoeven's avatar
      m68k: Disable/restore interrupts in hwreg_present()/hwreg_write() · e4b3c181
      Geert Uytterhoeven authored
      hwreg_present() and hwreg_write() temporarily change the VBR register to
      another vector table. This table contains a valid bus error handler
      only, all other entries point to arbitrary addresses.
      
      If an interrupt comes in while the temporary table is active, the
      processor will start executing at such an arbitrary address, and the
      kernel will crash.
      
      While most callers run early, before interrupts are enabled, or
      explicitly disable interrupts, Finn Thain pointed out that macsonic has
      one callsite that doesn't, causing intermittent boot crashes.
      There's another unsafe callsite in hilkbd.
      
      Fix this for good by disabling and restoring interrupts inside
      hwreg_present() and hwreg_write().
      
      Explicitly disabling interrupts can be removed from the callsites later.
      Reported-by: default avatarFinn Thain <fthain@telegraphics.com.au>
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit e4dc601b)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      e4b3c181
    • K. Y. Srinivasan's avatar
      Drivers: hv: vmbus: Fix a bug in vmbus_open() · 832c290e
      K. Y. Srinivasan authored
      Fix a bug in vmbus_open() and properly propagate the error. I would
      like to thank Dexuan Cui <decui@microsoft.com> for identifying the
      issue.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit 45d727ce)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      832c290e
    • K. Y. Srinivasan's avatar
      Drivers: hv: vmbus: Cleanup vmbus_establish_gpadl() · 88af55e5
      K. Y. Srinivasan authored
      Eliminate the call to BUG_ON() by waiting for the host to respond. We are
      trying to reclaim the ownership of memory that was given to the host and so
      we will have to wait until the host responds.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit 72c6b71c)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      88af55e5
    • K. Y. Srinivasan's avatar
      Drivers: hv: vmbus: Cleanup vmbus_teardown_gpadl() · b08892f5
      K. Y. Srinivasan authored
      Eliminate calls to BUG_ON() by properly handling errors. In cases where
      rollback is possible, we will return the appropriate error to have the
      calling code decide how to rollback state. In the case where we are
      transferring ownership of the guest physical pages to the host,
      we will wait for the host to respond.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit 66be6530)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      b08892f5
    • K. Y. Srinivasan's avatar
      Drivers: hv: vmbus: Cleanup vmbus_post_msg() · 91753889
      K. Y. Srinivasan authored
      Posting messages to the host can fail because of transient resource
      related failures. Correctly deal with these failures and increase the
      number of attempts to post the message before giving up.
      
      In this version of the patch, I have normalized the error code to
      Linux error code.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Cc: <stable@vger.kernel.org>
      Tested-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      (cherry picked from commit fdeebcc6)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      91753889
    • Krzysztof Kozlowski's avatar
      dmaengine: pl330: Fix NULL pointer dereference on driver unbind · 672c45ec
      Krzysztof Kozlowski authored
      Fix a NULL pointer dereference after unbinding the driver, if channel
      resources were not yet allocated (no call to
      pl330_alloc_chan_resources()):
      $ echo 12850000.mdma > /sys/bus/amba/drivers/dma-pl330/unbind
      [   13.606533] DMA pl330_control: removing pch: eeab6800, chan: eeab6814, thread:   (null)
      [   13.614472] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
      [   13.622537] pgd = ee284000
      [   13.625228] [0000000c] *pgd=6e1e4831, *pte=00000000, *ppte=00000000
      [   13.631482] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
      [   13.636859] Modules linked in:
      [   13.639903] CPU: 0 PID: 1 Comm: sh Not tainted 3.17.0-rc3-next-20140904-00004-g7020ffc33ca3-dirty #420
      [   13.649187] task: ee80a800 ti: ee888000 task.ti: ee888000
      [   13.654589] PC is at _stop+0x8/0x2c8
      [   13.658131] LR is at pl330_control+0x70/0x2e8
      [   13.662468] pc : [<c0206028>]    lr : [<c020649c>]    psr: 60000093
      [   13.662468] sp : ee889e58  ip : 00000001  fp : 000bab70
      [   13.673922] r10: eeab6814  r9 : ee16debc  r8 : 00000000
      [   13.679131] r7 : eeab685c  r6 : 60000013  r5 : ee16de10  r4 : eeab6800
      [   13.685641] r3 : 00000002  r2 : 00000000  r1 : 00010000  r0 : 00000000
      [   13.692153] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [   13.699357] Control: 10c5387d  Table: 6e28404a  DAC: 00000015
      [   13.705085] Process sh (pid: 1, stack limit = 0xee888240)
      [   13.710466] Stack: (0xee889e58 to 0xee88a000)
      [   13.714808] 9e40:                                                       00000002 eeab6800
      [   13.722969] 9e60: ee16de10 eeab6800 ee16de10 60000013 eeab685c c020649c 00000000 c040280c
      [   13.731128] 9e80: ee889e80 ee889e80 ee16de18 ee16de10 eeab6880 eeab6814 00200200 eeab68a8
      [   13.739287] 9ea0: 00100100 c0208048 00000000 c0409fc4 eea80800 eea808f8 c0605c44 0000000e
      [   13.747446] 9ec0: 0000000e eeb3960c eeb39600 c0203c48 eea80800 c0605c44 c0605a8c c023f694
      [   13.755605] 9ee0: ee80a800 eea80834 eea80800 c023f704 ee80a800 eea80800 c0605c44 c023e8ec
      [   13.763764] 9f00: 0000000e ee149780 ee29e580 ee889f80 ee29e580 c023e19c 0000000e c01167e4
      [   13.771923] 9f20: c01167a0 00000000 00000000 c0115e88 00000000 00000000 ee0b1a00 0000000e
      [   13.780082] 9f40: b6f48000 ee889f80 0000000e ee888000 b6f48000 c00bfadc 00000000 00000003
      [   13.788241] 9f60: 00000000 00000000 00000000 ee0b1a00 ee0b1a00 0000000e b6f48000 c00bfdf4
      [   13.796401] 9f80: 00000000 00000000 ffffffff 0000000e b6f48000 b6edc5d0 00000004 c000e7a4
      [   13.804560] 9fa0: 00000000 c000e620 0000000e b6f48000 00000001 b6f48000 0000000e 00000000
      [   13.812719] 9fc0: 0000000e b6f48000 b6edc5d0 00000004 0000000e b6f4c8c0 000c3470 000bab70
      [   13.820879] 9fe0: 00000000 bed2aa50 b6e18bdc b6e6b52c 60000010 00000001 c0c0c0c0 c0c0c0c0
      [   13.829058] [<c0206028>] (_stop) from [<c020649c>] (pl330_control+0x70/0x2e8)
      [   13.836165] [<c020649c>] (pl330_control) from [<c0208048>] (pl330_remove+0xb0/0xdc)
      [   13.843800] [<c0208048>] (pl330_remove) from [<c0203c48>] (amba_remove+0x24/0xc0)
      [   13.851272] [<c0203c48>] (amba_remove) from [<c023f694>] (__device_release_driver+0x70/0xc4)
      [   13.859685] [<c023f694>] (__device_release_driver) from [<c023f704>] (device_release_driver+0x1c/0x28)
      [   13.868971] [<c023f704>] (device_release_driver) from [<c023e8ec>] (unbind_store+0x58/0x90)
      [   13.877303] [<c023e8ec>] (unbind_store) from [<c023e19c>] (drv_attr_store+0x20/0x2c)
      [   13.885036] [<c023e19c>] (drv_attr_store) from [<c01167e4>] (sysfs_kf_write+0x44/0x48)
      [   13.892928] [<c01167e4>] (sysfs_kf_write) from [<c0115e88>] (kernfs_fop_write+0xc0/0x17c)
      [   13.901090] [<c0115e88>] (kernfs_fop_write) from [<c00bfadc>] (vfs_write+0xa0/0x1a8)
      [   13.908812] [<c00bfadc>] (vfs_write) from [<c00bfdf4>] (SyS_write+0x40/0x8c)
      [   13.915850] [<c00bfdf4>] (SyS_write) from [<c000e620>] (ret_fast_syscall+0x0/0x30)
      [   13.923392] Code: e5813010 e12fff1e e92d40f0 e24dd00c (e590200c)
      [   13.929467] ---[ end trace 10064e15a5929cf8 ]---
      
      Terminate the thread and free channel resource only if channel resources
      were allocated (thread is not NULL).
      Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Cc: <stable@vger.kernel.org>
      Fixes: b3040e40 ("DMA: PL330: Add dma api driver")
      Reviewed-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      
      (cherry picked from commit 6e4a2a83)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      672c45ec
    • Arun Easi's avatar
      qla2xxx: Use correct offset to req-q-out for reserve calculation · c7d9b9a8
      Arun Easi authored
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarArun Easi <arun.easi@qlogic.com>
      Signed-off-by: default avatarSaurav Kashyap <saurav.kashyap@qlogic.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      
      (cherry picked from commit 75554b68)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      c7d9b9a8
    • Chris J Arges's avatar
      mptfusion: enable no_write_same for vmware scsi disks · 3dd57403
      Chris J Arges authored
      When using a virtual SCSI disk in a VMWare VM if blkdev_issue_zeroout is used
      data can be improperly zeroed out using the mptfusion driver. This patch
      disables write_same for this driver and the vmware subsystem_vendor which
      ensures that manual zeroing out is used instead.
      
      Cc: stable@vger.kernel.org
      BugLink: http://bugs.launchpad.net/bugs/1371591Reported-by: default avatarBruce Lucas <bruce.lucas@mongodb.com>
      Tested-by: default avatarChris J Arges <chris.j.arges@canonical.com>
      Signed-off-by: default avatarChris J Arges <chris.j.arges@canonical.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      
      (cherry picked from commit 4089b71c)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      3dd57403
    • Mike Christie's avatar
      be2iscsi: check ip buffer before copying · f3b32479
      Mike Christie authored
      Dan Carpenter found a issue where be2iscsi would copy the ip
      from userspace to the driver buffer before checking the len
      of the data being copied:
      http://marc.info/?l=linux-scsi&m=140982651504251&w=2
      
      This patch just has us only copy what we the driver buffer
      can support.
      
      Cc: <stable@vger.kernel.org>
      Tested-by: default avatarJohn Soni Jose <sony.john-n@emulex.com>
      Signed-off-by: default avatarMike Christie <michaelc@cs.wisc.edu>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      
      (cherry picked from commit a41a9ad3)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      f3b32479
    • Pankaj Dubey's avatar
      regmap: fix NULL pointer dereference in _regmap_write/read · b1037ba1
      Pankaj Dubey authored
      If LOG_DEVICE is defined and map->dev is NULL it will lead to NULL
      pointer dereference. This patch fixes this issue by adding check for
      dev->NULL in all such places in regmap.c
      Signed-off-by: default avatarPankaj Dubey <pankaj.dubey@samsung.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit 5336be84)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      b1037ba1
    • Xiubo Li's avatar
      regmap: debugfs: fix possbile NULL pointer dereference · eb5b21e4
      Xiubo Li authored
      If 'map->dev' is NULL and there will lead dev_name() to be NULL pointer
      dereference. So before dev_name(), we need to have check of the map->dev
      pionter.
      
      We also should make sure that the 'name' pointer shouldn't be NULL for
      debugfs_create_dir(). So here using one default "dummy" debugfs name when
      the 'name' pointer and 'map->dev' are both NULL.
      Signed-off-by: default avatarXiubo Li <Li.Xiubo@freescale.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit 2c98e0c1)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      eb5b21e4
    • Andy Shevchenko's avatar
      spi: dw-mid: check that DMA was inited before exit · 77ca563f
      Andy Shevchenko authored
      If the driver was compiled with DMA support, but DMA channels weren't acquired
      by some reason, mid_spi_dma_exit() will crash the kernel.
      
      Fixes: 7063c0d9 (spi/dw_spi: add DMA support)
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      
      (cherry picked from commit fb57862e)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      77ca563f
    • Andy Shevchenko's avatar
      spi: dw-mid: respect 8 bit mode · 04613daa
      Andy Shevchenko authored
      In case of 8 bit mode and DMA usage we end up with every second byte written as
      0. We have to respect bits_per_word settings what this patch actually does.
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit b41583e7)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      04613daa
    • Bryan O'Donoghue's avatar
      x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead · 3691f3cb
      Bryan O'Donoghue authored
      Quark x1000 advertises PGE via the standard CPUID method
      PGE bits exist in Quark X1000's PTEs. In order to flush
      an individual PTE it is necessary to reload CR3 irrespective
      of the PTE.PGE bit.
      
      See Quark Core_DevMan_001.pdf section 6.4.11
      
      This bug was fixed in Galileo kernels, unfixed vanilla kernels are expected to
      crash and burn on this platform.
      Signed-off-by: default avatarBryan O'Donoghue <pure.logic@nexus-software.ie>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: <stable@vger.kernel.org>
      Link: http://lkml.kernel.org/r/1411514784-14885-1-git-send-email-pure.logic@nexus-software.ieSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      
      (cherry picked from commit ee1b5b16)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      3691f3cb
    • Christian Borntraeger's avatar
      KVM: s390: unintended fallthrough for external call · 29437eaf
      Christian Borntraeger authored
      We must not fallthrough if the conditions for external call are not met.
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Reviewed-by: default avatarThomas Huth <thuth@linux.vnet.ibm.com>
      Cc: stable@vger.kernel.org
      
      (cherry picked from commit f346026e)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      29437eaf
    • David Matlack's avatar
      kvm: x86: fix stale mmio cache bug · 741c2cee
      David Matlack authored
      The following events can lead to an incorrect KVM_EXIT_MMIO bubbling
      up to userspace:
      
      (1) Guest accesses gpa X without a memory slot. The gfn is cached in
      struct kvm_vcpu_arch (mmio_gfn). On Intel EPT-enabled hosts, KVM sets
      the SPTE write-execute-noread so that future accesses cause
      EPT_MISCONFIGs.
      
      (2) Host userspace creates a memory slot via KVM_SET_USER_MEMORY_REGION
      covering the page just accessed.
      
      (3) Guest attempts to read or write to gpa X again. On Intel, this
      generates an EPT_MISCONFIG. The memory slot generation number that
      was incremented in (2) would normally take care of this but we fast
      path mmio faults through quickly_check_mmio_pf(), which only checks
      the per-vcpu mmio cache. Since we hit the cache, KVM passes a
      KVM_EXIT_MMIO up to userspace.
      
      This patch fixes the issue by using the memslot generation number
      to validate the mmio cache.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDavid Matlack <dmatlack@google.com>
      [xiaoguangrong: adjust the code to make it simpler for stable-tree fix.]
      Signed-off-by: default avatarXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
      Reviewed-by: default avatarDavid Matlack <dmatlack@google.com>
      Reviewed-by: default avatarXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
      Tested-by: default avatarDavid Matlack <dmatlack@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      
      (cherry picked from commit 56f17dd3)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      741c2cee
    • Josef Ahmad's avatar
      pci_ids: Add support for Intel Quark ILB · 6a98dcd1
      Josef Ahmad authored
      This patch adds the PCI id for Intel Quark ILB.
      It will be used for GPIO and Multifunction device driver.
      Signed-off-by: default avatarJosef Ahmad <josef.ahmad@intel.com>
      Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      
      (cherry picked from commit bb048713)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      6a98dcd1
    • Andy Lutomirski's avatar
      fs: Add a missing permission check to do_umount · 95f8bfdd
      Andy Lutomirski authored
      Accessing do_remount_sb should require global CAP_SYS_ADMIN, but
      only one of the two call sites was appropriately protected.
      
      Fixes CVE-2014-7975.
      Signed-off-by: default avatarAndy Lutomirski <luto@amacapital.net>
      
      (cherry picked from commit a1480dcc)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      95f8bfdd
    • Sage Weil's avatar
      Btrfs: fix race in WAIT_SYNC ioctl · 37455972
      Sage Weil authored
      We check whether transid is already committed via last_trans_committed and
      then search through trans_list for pending transactions.  If
      last_trans_committed is updated by btrfs_commit_transaction after we check
      it (there is no locking), we will fail to find the committed transaction
      and return EINVAL to the caller.  This has been observed occasionally by
      ceph-osd (which uses this ioctl heavily).
      
      Fix by rechecking whether the provided transid <= last_trans_committed
      after the search fails, and if so return 0.
      Signed-off-by: default avatarSage Weil <sage@redhat.com>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit 42383020)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      37455972
    • Josef Bacik's avatar
      Btrfs: fix build_backref_tree issue with multiple shared blocks · 0ab8ef85
      Josef Bacik authored
      Marc Merlin sent me a broken fs image months ago where it would blow up in the
      upper->checked BUG_ON() in build_backref_tree.  This is because we had a
      scenario like this
      
      block a -- level 4 (not shared)
         |
      block b -- level 3 (reloc block, shared)
         |
      block c -- level 2 (not shared)
         |
      block d -- level 1 (shared)
         |
      block e -- level 0 (shared)
      
      We go to build a backref tree for block e, we notice block d is shared and add
      it to the list of blocks to lookup it's backrefs for.  Now when we loop around
      we will check edges for the block, so we will see we looked up block c last
      time.  So we lookup block d and then see that the block that points to it is
      block c and we can just skip that edge since we've already been up this path.
      The problem is because we clear need_check when we see block d (as it is shared)
      we never add block b as needing to be checked.  And because block c is in our
      path already we bail out before we walk up to block b and add it to the backref
      check list.
      
      To fix this we need to reset need_check if we trip over a block that doesn't
      need to be checked.  This will make sure that any subsequent blocks in the path
      as we're walking up afterwards are added to the list to be processed.  With this
      patch I can now mount Marc's fs image and it'll complete the balance without
      panicing.  Thanks,
      Reported-by: default avatarMarc MERLIN <marc@merlins.org>
      Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit bbe90514)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      0ab8ef85
    • Josef Bacik's avatar
      Btrfs: cleanup error handling in build_backref_tree · 65b8bca5
      Josef Bacik authored
      When balance panics it tends to panic in the
      
      BUG_ON(!upper->checked);
      
      test, because it means it couldn't build the backref tree properly.  This is
      annoying to users and frankly a recoverable error, nothing in this function is
      actually fatal since it is just an in-memory building of the backrefs for a
      given bytenr.  So go through and change all the BUG_ON()'s to ASSERT()'s, and
      fix the BUG_ON(!upper->checked) thing to just return an error.
      
      This patch also fixes the error handling so it tears down the work we've done
      properly.  This code was horribly broken since we always just panic'ed instead
      of actually erroring out, so it needed to be completely re-worked.  With this
      patch my broken image no longer panics when I mount it.  Thanks,
      Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit 75bfb9af)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      65b8bca5
    • Josef Bacik's avatar
      Btrfs: try not to ENOSPC on log replay · 48f8ae6f
      Josef Bacik authored
      When doing log replay we may have to update inodes, which traditionally goes
      through our delayed inode stuff.  This will try to move space over from the
      trans handle, but we don't reserve space in our trans handle on replay since we
      don't know how much we will need, so instead we try to flush.  But because we
      have a trans handle open we won't flush anything, so if we are out of reserve
      space we will simply return ENOSPC.  Since we know that if an operation made it
      into the log then we definitely had space before the box bought the farm then we
      don't need to worry about doing this space reservation.  Use the
      fs_info->log_root_recovering flag to skip the delayed inode stuff and update the
      item directly.  Thanks,
      Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit 1d52c78a)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      48f8ae6f
    • Filipe Manana's avatar
      Btrfs: add missing compression property remove in btrfs_ioctl_setflags · 7c4fd483
      Filipe Manana authored
      The behaviour of a 'chattr -c' consists of getting the current flags,
      clearing the FS_COMPR_FL bit and then sending the result to the set
      flags ioctl - this means the bit FS_NOCOMP_FL isn't set in the flags
      passed to the ioctl. This results in the compression property not being
      cleared from the inode - it was cleared only if the bit FS_NOCOMP_FL
      was set in the received flags.
      
      Reproducer:
      
          $ mkfs.btrfs -f /dev/sdd
          $ mount /dev/sdd /mnt && cd /mnt
          $ mkdir a
          $ chattr +c a
          $ touch a/file
          $ lsattr a/file
          --------c------- a/file
          $ chattr -c a
          $ touch a/file2
          $ lsattr a/file2
          --------c------- a/file2
          $ lsattr -d a
          ---------------- a
      Reported-by: default avatarAndreas Schneider <asn@cryptomilk.org>
      Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit 78a017a2)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      7c4fd483
    • Mark Fasheh's avatar
      btrfs: don't go readonly on existing qgroup items · 169ea67d
      Mark Fasheh authored
      btrfs_drop_snapshot() leaves subvolume qgroup items on disk after
      completion. This can cause problems with snapshot creation. If a new
      snapshot tries to claim the deleted subvolumes id, btrfs will get -EEXIST
      from add_qgroup_item() and go read-only. The following commands will
      reproduce this problem (assume btrfs is on /dev/sda and is mounted at
      /btrfs)
      
      mkfs.btrfs -f /dev/sda
      mount -t btrfs /dev/sda /btrfs/
      btrfs quota enable /btrfs/
      btrfs su sna /btrfs/ /btrfs/snap
      btrfs su de /btrfs/snap
      sleep 45
      umount /btrfs/
      mount -t btrfs /dev/sda /btrfs/
      
      We can fix this by catching -EEXIST in add_qgroup_item() and
      initializing the existing items. We have the problem of orphaned
      relation items being on disk from an old snapshot but that is outside
      the scope of this patch.
      Signed-off-by: default avatarMark Fasheh <mfasheh@suse.de>
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      
      (cherry picked from commit 0b4699dc)
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      169ea67d
  2. 26 Oct, 2014 1 commit
  3. 24 Oct, 2014 4 commits