Skip to content
Permalink
Qu-Wenruo/btrf…

Commits on Jul 28, 2019

  1. btrfs: ctree: Checking key orders before merged tree blocks

    [BUG]
    With crafted image, btrfs can panic at btrfs_del_csums().
      kernel BUG at fs/btrfs/ctree.c:3188!
      invalid opcode: 0000 [#1] SMP PTI
      CPU: 0 PID: 1156 Comm: btrfs-transacti Not tainted 5.0.0-rc8+ torvalds#9
      RIP: 0010:btrfs_set_item_key_safe+0x16c/0x180
      Code: b7 48 8d 7d bf 4c 89 fe 48 89 45 c8 0f b6 45 b6 88 45 c7 48 8b 45 ae 48 89 45 bf e8 ce f2 ff ff 85 c0 0f 8f 48 ff ff ff 0f 0b <0f> 0b e8 dd 8d be ff 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 66 66
      RSP: 0018:ffff976141257ab8 EFLAGS: 00010202
      RAX: 0000000000000001 RBX: ffff898a6b890930 RCX: 0000000004b70000
      RDX: 0000000000000000 RSI: ffff976141257bae RDI: ffff976141257acf
      RBP: ffff976141257b10 R08: 0000000000001000 R09: ffff9761412579a8
      R10: 0000000000000000 R11: 0000000000000000 R12: ffff976141257abe
      R13: 0000000000000003 R14: ffff898a6a8be578 R15: ffff976141257bae
      FS: 0000000000000000(0000) GS:ffff898a77a00000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f779d9cd624 CR3: 000000022b2b4006 CR4: 00000000000206f0
      Call Trace:
      truncate_one_csum+0xac/0xf0
      btrfs_del_csums+0x24f/0x3a0
      __btrfs_free_extent.isra.72+0x5a7/0xbe0
      __btrfs_run_delayed_refs+0x539/0x1120
      btrfs_run_delayed_refs+0xdb/0x1b0
      btrfs_commit_transaction+0x52/0x950
      ? start_transaction+0x94/0x450
      transaction_kthread+0x163/0x190
      kthread+0x105/0x140
      ? btrfs_cleanup_transaction+0x560/0x560
      ? kthread_destroy_worker+0x50/0x50
      ret_from_fork+0x35/0x40
      Modules linked in:
      ---[ end trace 93bf9db00e6c374e ]---
    
    [CAUSE]
    This crafted image has a very tricky key order corruption:
    
      checksum tree key (CSUM_TREE ROOT_ITEM 0)
      node 29741056 level 1 items 14 free 107 generation 19 owner CSUM_TREE
              ...
              key (EXTENT_CSUM EXTENT_CSUM 73785344) block 29757440 gen 19
              key (EXTENT_CSUM EXTENT_CSUM 77594624) block 29753344 gen 19
              ...
    
      leaf 29757440 items 5 free space 150 generation 19 owner CSUM_TREE
              item 0 key (EXTENT_CSUM EXTENT_CSUM 73785344) itemoff 2323 itemsize 1672
                      range start 73785344 end 75497472 length 1712128
              item 1 key (EXTENT_CSUM EXTENT_CSUM 75497472) itemoff 2319 itemsize 4
                      range start 75497472 end 75501568 length 4096
              item 2 key (EXTENT_CSUM EXTENT_CSUM 75501568) itemoff 579 itemsize 1740
                      range start 75501568 end 77283328 length 1781760
              item 3 key (EXTENT_CSUM EXTENT_CSUM 77283328) itemoff 575 itemsize 4
                      range start 77283328 end 77287424 length 4096
              item 4 key (EXTENT_CSUM EXTENT_CSUM 4120596480) itemoff 275 itemsize 300 <<<
                      range start 4120596480 end 4120903680 length 307200
      leaf 29753344 items 3 free space 1936 generation 19 owner CSUM_TREE
              item 0 key (18446744073457893366 EXTENT_CSUM 77594624) itemoff 2323 itemsize 1672
                      range start 77594624 end 79306752 length 1712128
              ...
    
    Note the item 4 key of leaf 29757440, which is obviously too large, and
    even larger than the first key of the next leaf.
    
    However it still follows the key order in that tree block, thus tree
    checker is unable to detect it at read time, since tree checker can only
    work inside a leaf, thus such complex corruption can't be rejected in
    advance.
    
    [FIX]
    The next timing to detect such problem is at tree block merge time,
    which is in push_node_left(), balance_node_right(), push_leaf_left() and
    push_leaf_right().
    
    Now we check if the key order of the right most key of the left node is
    larger than the left most key of the right node.
    
    By this we don't need to call the full tree-check, while still keeps the
    key order correct as key order in each node is already checked by tree
    checker thus we only need to check the above two slots.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202833
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    adam900710 authored and 0day robot committed Jul 28, 2019
  2. btrfs: extent-tree: Kill the BUG_ON() in insert_inline_extent_backref()

    [BUG]
    With crafted image, btrfs can panic at insert_inline_extent_backref():
      kernel BUG at fs/btrfs/extent-tree.c:1857!
      invalid opcode: 0000 [#1] SMP PTI
      CPU: 0 PID: 1117 Comm: btrfs-transacti Not tainted 5.0.0-rc8+ torvalds#9
      RIP: 0010:insert_inline_extent_backref+0xcc/0xe0
      Code: 45 20 49 8b 7e 50 49 89 d8 4c 8b 4d 10 48 8b 55 c8 4c 89 e1 41 57 4c 89 ee 50 ff 75 18 e8 cc bf ff ff 31 c0 48 83 c4 18 eb b2 <0f> 0b e8 9d df bd ff 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 66 66
      RSP: 0018:ffffac4dc1287be8 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: 0000000000000007 RCX: 0000000000000001
      RDX: 0000000000001000 RSI: 0000000000000000 RDI: 0000000000000000
      RBP: ffffac4dc1287c28 R08: ffffac4dc1287ab8 R09: ffffac4dc1287ac0
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffff8febef88a540 R14: ffff8febeaa7bc30 R15: 0000000000000000
      FS: 0000000000000000(0000) GS:ffff8febf7a00000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f663ace94c0 CR3: 0000000235698006 CR4: 00000000000206f0
      Call Trace:
      ? _cond_resched+0x1a/0x50
      __btrfs_inc_extent_ref.isra.64+0x7e/0x240
      ? btrfs_merge_delayed_refs+0xa5/0x330
      __btrfs_run_delayed_refs+0x653/0x1120
      btrfs_run_delayed_refs+0xdb/0x1b0
      btrfs_commit_transaction+0x52/0x950
      ? start_transaction+0x94/0x450
      transaction_kthread+0x163/0x190
      kthread+0x105/0x140
      ? btrfs_cleanup_transaction+0x560/0x560
      ? kthread_destroy_worker+0x50/0x50
      ret_from_fork+0x35/0x40
      Modules linked in:
      ---[ end trace 2ad8b3de903cf825 ]---
    
    [CAUSE]
    Due to extent tree corruption (still valid by itself, but bad cross ref),
    we can allocate an extent which is still in extent tree.
    The offending tree block of that case is from csum tree.
    The newly allocated tree block is also for csum tree.
    
    Then we will try to insert an tree block ref for the existing tree block
    ref.
    
    For btrfs tree extent item, a tree block can never be shared directly by
    the same tree twice.
    We have such BUG_ON() to prevent such problem, but BUG_ON() is
    definitely not good enough.
    
    [FIX]
    Replace that BUG_ON() with proper error message and leaf dump for debug
    build.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202829
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    adam900710 authored and 0day robot committed Jul 28, 2019
  3. btrfs: Detect unbalanced tree with empty leaf before crashing btree o…

    …perations
    
    [BUG]
    With crafted image, btrfs will panic at btree operations:
      kernel BUG at fs/btrfs/ctree.c:3894!
      invalid opcode: 0000 [#1] SMP PTI
      CPU: 0 PID: 1138 Comm: btrfs-transacti Not tainted 5.0.0-rc8+ torvalds#9
      RIP: 0010:__push_leaf_left+0x6b6/0x6e0
      Code: 00 00 48 98 48 8d 04 80 48 8d 74 80 65 e8 42 5a 04 00 48 8b bd 78 ff ff ff 8b bf 90 d0 00 00 89 7d 98 83 ef 65 e9 06 ff ff ff <0f> 0b 0f 0b 48 8b 85 78 ff ff ff 8b 90 90 d0 00 00 e9 eb fe ff ff
      RSP: 0018:ffffc0bd4128b990 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffffa0a4ab8f0e38 RCX: 0000000000000000
      RDX: ffffa0a280000000 RSI: 0000000000000000 RDI: ffffa0a4b3814000
      RBP: ffffc0bd4128ba38 R08: 0000000000001000 R09: ffffc0bd4128b948
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000240
      R13: ffffa0a4b556fb60 R14: ffffa0a4ab8f0af0 R15: ffffa0a4ab8f0af0
      FS: 0000000000000000(0000) GS:ffffa0a4b7a00000(0000) knlGS:0000000000000000
      CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f2461c80020 CR3: 000000022b32a006 CR4: 00000000000206f0
      Call Trace:
      ? _cond_resched+0x1a/0x50
      push_leaf_left+0x179/0x190
      btrfs_del_items+0x316/0x470
      btrfs_del_csums+0x215/0x3a0
      __btrfs_free_extent.isra.72+0x5a7/0xbe0
      __btrfs_run_delayed_refs+0x539/0x1120
      btrfs_run_delayed_refs+0xdb/0x1b0
      btrfs_commit_transaction+0x52/0x950
      ? start_transaction+0x94/0x450
      transaction_kthread+0x163/0x190
      kthread+0x105/0x140
      ? btrfs_cleanup_transaction+0x560/0x560
      ? kthread_destroy_worker+0x50/0x50
      ret_from_fork+0x35/0x40
      Modules linked in:
      ---[ end trace c2425e6e89b5558f ]---
    
    [CAUSE]
    The offending csum tree looks like this:
    checksum tree key (CSUM_TREE ROOT_ITEM 0)
    node 29741056 level 1 items 14 free 107 generation 19 owner CSUM_TREE
            ...
            key (EXTENT_CSUM EXTENT_CSUM 85975040) block 29630464 gen 17
            key (EXTENT_CSUM EXTENT_CSUM 89911296) block 29642752 gen 17 <<<
            key (EXTENT_CSUM EXTENT_CSUM 92274688) block 29646848 gen 17
            ...
    
    leaf 29630464 items 6 free space 1 generation 17 owner CSUM_TREE
            item 0 key (EXTENT_CSUM EXTENT_CSUM 85975040) itemoff 3987 itemsize 8
                    range start 85975040 end 85983232 length 8192
            ...
    leaf 29642752 items 0 free space 3995 generation 17 owner 0
                        ^ empty leaf            invalid owner ^
    
    leaf 29646848 items 1 free space 602 generation 17 owner CSUM_TREE
            item 0 key (EXTENT_CSUM EXTENT_CSUM 92274688) itemoff 627 itemsize 3368
                    range start 92274688 end 95723520 length 3448832
    
    So we have a corrupted csum tree where one tree leaf is completely
    empty, causing unbalanced btree, thus leading to unexpected btree
    balance error.
    
    [FIX]
    For this particular case, we handle it in two directions to catch it:
    - Check if the tree block is empty through btrfs_verify_level_key()
      So that invalid tree blocks won't be read out through
      btrfs_search_slot() and its variants.
    
    - Check 0 tree owner in tree checker
      NO tree is using 0 as its tree owner, detect it and reject at tree
      block read time.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202821
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    adam900710 authored and 0day robot committed Jul 28, 2019
  4. btrfs: extent-tree: Kill BUG_ON() in __btrfs_free_extent() and do bet…

    …ter comment
    
    __btrfs_free_extent() is one of the best cases to show how optimization
    could make a function hard to read.
    
    In fact __btrfs_free_extent() is only doing two major works:
    1. Reduce the refs number of an extent backref
       Either it's an inlined extent backref (inside EXTENT/METADATA item) or
       a keyed extent backref (SHARED_* item).
       We only need to locate that backref line, either reduce the number or
       remove the backref line completely.
    
    2. Update the refs count in EXTENT/METADATA_ITEM
    
    But in real world, we do it in a complex but somewhat efficient way.
    During step 1), we will try to locate the EXTENT/METADATA_ITEM without
    triggering another btrfs_search_slot() as fast path.
    
    Only when we failed to locate that item, we will trigger another
    btrfs_search_slot() to get that EXTENT/METADATA_ITEM after we
    updated/deleted the backref line.
    
    And we have a lot of restrict check on things like refs_to_drop against
    extent refs and special case check for single ref extent.
    
    All of these results:
    - 7 BUG_ON()s in a single function
      Although all these BUG_ON() are doing correct check, they're super
      easy to get triggered for fuzzed images.
      It's never a good idea to piss the end user.
    
    - Near 300 lines without much useful comments but a lot of hidden
      conditions
      I believe even the author needs several minutes to recall what the
      code is doing
      Not to mention a lot of BUG_ON() conditions needs to go back tens of
      lines to find out why.
    
    This patch address all these problems by:
    - Introduce two examples to show what __btrfs_free_extent() is doing
      One inlined backref case and one keyed case.
      Should cover most cases.
    
    - Kill all BUG_ON()s with proper error message and optional leaf dump
    
    - Add comment to show the overall workflow
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202819
    [ The report triggers one BUG_ON() in __btrfs_free_extent() ]
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    adam900710 authored and 0day robot committed Jul 28, 2019
  5. btrfs: extent_io: Do extra check for extent buffer read write functions

    Although we have start, len check for extent buffer reader/write (e.g.
    read_extent_buffer()), those checks has its limitations:
    - No overflow check
      Values like start = 1024 len = -1024 can still pass the basic
       (start + len) > eb->len check.
    
    - Checks are not consistent
      For read_extent_buffer() we only check (start + len) against eb->len.
      While for memcmp_extent_buffer() we also check start against eb->len.
    
    - Different error reporting mechanism
      We use WARN() in read_extent_buffer() but BUG() in
      memcpy_extent_buffer().
    
    - Still modify memory if the request is obviously wrong
      In read_extent_buffer() even we find (start + len) > eb->len, we still
      call memset(dst, 0, len), which can eaisly cause memory access error
      if start + len overflows.
    
    To address above problems, this patch creates a new common function to
    check such access, check_eb_range().
    - Add overflow check
      This function checks start, start + len against eb->len and overflow
      check.
    
    - Unified checks
    
    - Unified error reports
      Will call WARN() if CONFIG_BTRFS_DEBUG is configured.
      And also do btrfs_warn() message for non-debug build.
    
    - Exit ASAP if check fails
      No more possible memory corruption.
    
    - Add extra comment for @start @len used in those functions
      Even experienced developers sometimes get confused with the @start
      @len with logical address in those functions.
      I'm not sure what's the cause, maybe it's the extent_buffer::start
      naming.
      For now, just add some comment.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=202817
    [ Inspired by above report, the report itself is already addressed ]
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    adam900710 authored and 0day robot committed Jul 28, 2019

Commits on Jul 27, 2019

  1. Merge tag 's390-5.3-3' of git://git.kernel.org/pub/scm/linux/kernel/g…

    …it/s390/linux
    
    Pull s390 updates from Heiko Carstens:
    
     - Add ABI to kernel image file which allows e.g. the file utility to
       figure out the kernel version.
    
     - Wire up clone3 system call.
    
     - Add support for kasan bitops instrumentation.
    
     - uapi header cleanup: use __u{16,32,64} instead of uint{16,32,64}_t.
    
     - Provide proper ARCH_ZONE_DMA_BITS so the s390 DMA zone is correctly
       defined with 2 GB instead of the default value of 1 MB.
    
     - Farhan Ali leaves the group of vfio-ccw maintainers.
    
     - Various small vfio-ccw fixes.
    
     - Add missing locking for airq_areas array in virtio code.
    
     - Minor qdio improvements.
    
    * tag 's390-5.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
      MAINTAINERS: vfio-ccw: Remove myself as the maintainer
      s390/mm: use shared variables for sysctl range check
      virtio/s390: fix race on airq_areas[]
      s390/dma: provide proper ARCH_ZONE_DMA_BITS value
      s390/kasan: add bitops instrumentation
      s390/bitops: make test functions return bool
      s390: wire up clone3 system call
      kbuild: enable arch/s390/include/uapi/asm/zcrypt.h for uapi header test
      s390: use __u{16,32,64} instead of uint{16,32,64}_t in uapi header
      s390/hypfs: fix a typo in the name of a function
      s390/qdio: restrict QAOB usage to IQD unicast queues
      s390/qdio: add sanity checks to the fast-requeue path
      s390: enable detection of kernel version from bzImage
      Documentation: fix vfio-ccw doc
      vfio-ccw: Update documentation for csch/hsch
      vfio-ccw: Don't call cp_free if we are processing a channel program
      vfio-ccw: Set pa_nr to 0 if memory allocation fails for pa_iova_pfn
      vfio-ccw: Fix memory leak and don't call cp_free in cp_init
      vfio-ccw: Fix misleading comment when setting orb.cmd.c64
    torvalds committed Jul 27, 2019
  2. Merge tag 'devicetree-fixes-for-5.3-2' of git://git.kernel.org/pub/sc…

    …m/linux/kernel/git/robh/linux
    
    Pull Devicetree fixes from Rob Herring:
     "The nvmem changes would typically go thru Greg's tree, but they were
      missed in the merge window. [ Acked by Greg ]
    
      Summary:
    
       - Fix mismatches in $id values and actual filenames. Now checked by
         tools.
    
       - Convert nvmem binding to DT schema
    
       - Fix a typo in of_property_read_bool() kerneldoc
    
       - Remove some redundant description in al-fic interrupt-controller"
    
    * tag 'devicetree-fixes-for-5.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
      dt-bindings: Fix more $id value mismatches filenames
      dt-bindings: nvmem: SID: Fix the examples node names
      dt-bindings: nvmem: Add YAML schemas for the generic NVMEM bindings
      of: Fix typo in kerneldoc
      dt-bindings: interrupt-controller: al-fic: remove redundant binding
      dt-bindings: clk: allwinner,sun4i-a10-ccu: Correct path in $id
    torvalds committed Jul 27, 2019
  3. Merge tag 'libnvdimm-fixes-5.3-rc2' of git://git.kernel.org/pub/scm/l…

    …inux/kernel/git/nvdimm/nvdimm
    
    Pull libnvdimm fixes from Dan Williams:
     "A collection of locking and async operations fixes for v5.3-rc2. These
      had been soaking in a branch targeting the merge window, but missed
      due to a regression hunt. This fixed up version has otherwise been in
      -next this past week with no reported issues.
    
      In order to gain confidence in the locking changes the pull also
      includes a debug / instrumentation patch to enable lockdep coverage
      for libnvdimm subsystem operations that depend on the device_lock for
      exclusion. As mentioned in the changelog it is a hack, but it works
      and documents the locking expectations of the sub-system in a way that
      others can use lockdep to verify. The driver core touches got an ack
      from Greg.
    
      Summary:
    
       - Fix duplicate device_unregister() calls (multiple threads competing
         to do unregister work when scheduling device removal from a sysfs
         attribute of the self-same device).
    
       - Fix badblocks registration order bug. Ensure region badblocks are
         initialized in advance of namespace registration.
    
       - Fix a deadlock between the bus lock and probe operations.
    
       - Export device-core infrastructure to coordinate async operations
         via the device ->dead state.
    
       - Add device-core infrastructure to validate device_lock() usage with
         lockdep"
    
    * tag 'libnvdimm-fixes-5.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
      driver-core, libnvdimm: Let device subsystems add local lockdep coverage
      libnvdimm/bus: Fix wait_nvdimm_bus_probe_idle() ABBA deadlock
      libnvdimm/bus: Stop holding nvdimm_bus_list_mutex over __nd_ioctl()
      libnvdimm/bus: Prepare the nd_ioctl() path to be re-entrant
      libnvdimm/region: Register badblocks before namespaces
      libnvdimm/bus: Prevent duplicate device_unregister() calls
      drivers/base: Introduce kill_device()
    torvalds committed Jul 27, 2019
  4. Merge tag 'for-linus-20190726-2' of git://git.kernel.dk/linux-block

    Pull block DMA segment fix from Jens Axboe:
     "Here's the virtual boundary segment size fix"
    
    * tag 'for-linus-20190726-2' of git://git.kernel.dk/linux-block:
      block: fix max segment size handling in blk_queue_virt_boundary
    torvalds committed Jul 27, 2019
  5. Merge tag 'selinux-pr-20190726' of git://git.kernel.org/pub/scm/linux…

    …/kernel/git/pcmoore/selinux
    
    Pull selinux fix from Paul Moore:
     "One small SELinux patch to add some proper bounds/overflow checking
      when adding a new sid/secid"
    
    * tag 'selinux-pr-20190726' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
      selinux: check sidtab limit before adding a new entry
    torvalds committed Jul 27, 2019

Commits on Jul 26, 2019

  1. dt-bindings: Fix more $id value mismatches filenames

    The path in the schema '$id' values are wrong. Fix them.
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    robherring committed Jul 26, 2019
  2. dt-bindings: nvmem: SID: Fix the examples node names

    Now that the examples are validated, the examples in the SID binding
    generates an error since the node names aren't one of the valid ones.
    
    Let's switch for one that is ok.
    
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    mripard authored and robherring committed Jul 26, 2019
  3. dt-bindings: nvmem: Add YAML schemas for the generic NVMEM bindings

    The nvmem providers and consumers have a bunch of generic properties that
    are needed in a device tree. Add a YAML schemas for those.
    
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    [Srini: Changed licence to (GPL-2.0 OR BSD-2-Clause)]
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Rob Herring <robh@kernel.org>
    mripard authored and robherring committed Jul 26, 2019
  4. of: Fix typo in kerneldoc

    "Findfrom" is not a word. Replace the function synopsis by something
    that makes sense.
    
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Thierry Reding authored and robherring committed Jul 26, 2019
  5. Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/g…

    …it/jejb/scsi
    
    Pull SCSI fixes from James Bottomley:
     "Nine fixes: The most important core one is the dma_max_mapping_size
      fix that corrects the boot problem Gunter Roeck was having. A couple
      of other driver only fixes are significant, like the cxgbi selector
      support addition, the alua 2 second delay and the fdomain build fix"
    
    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
      scsi: scsi_dh_alua: always use a 2 second delay before retrying RTPG
      scsi: ibmvfc: fix WARN_ON during event pool release
      scsi: fcoe: fix a typo
      scsi: megaraid_sas: Make some functions static
      scsi: megaraid_sas: fix panic on loading firmware crashdump
      scsi: megaraid_sas: fix spelling mistake "megarid_sas" -> "megaraid_sas"
      scsi: core: fix the dma_max_mapping_size call
      scsi: fdomain: fix building pcmcia front-end
      scsi: target: cxgbit: add support for IEEE_8021QAZ_APP_SEL_STREAM selector
    torvalds committed Jul 26, 2019
  6. Merge tag 'drm-fixes-2019-07-26' of git://anongit.freedesktop.org/drm…

    …/drm
    
    Pull drm fixes from Daniel Vetter:
     "Dave seems to collect an entire streak of things happening, so again
      me typing pull summary.
    
      Nothing nefarious here, most of the fixes are for new stuff or things
      users won't see. The amd-display patches are a bit different, and very
      much look like they should have at least some cc: stable tags. Might
      be amd is a bit too comfortable with their internal tree and not
      enough looking at upstream. Dave&me are looking into this, in case
      something needs rectified with process here.
    
      Also no intel fixes pull, but intel CI is general become rather good,
      still I guess expect a notch more for -rc3.
    
      Summary:
    
      amdgpu:
       - fixes for (new in 5.3) hw support (vega20, navi)
       - disable RAS
       - lots of display fixes all over (audio, DSC, dongle, clock mgr)
    
      ttm:
       - fix dma_free_attrs calls to appease dma debugging
    
      msm:
       - fixes for dma-api, locking debug and compiler splats
    
      core:
       - fix cmdline mode to not apply rotation if not specified (new in 5.3)
       - compiler warn fix"
    
    * tag 'drm-fixes-2019-07-26' of git://anongit.freedesktop.org/drm/drm: (46 commits)
      drm/amd/display: Set enabled to false at start of audio disable
      drm/amdgpu/smu: move fan rpm query into the asic specific code
      drm/amd/powerplay: custom peak clock freq for navi10
      drm: silence variable 'conn' set but not used
      drm/msm: stop abusing dma_map/unmap for cache
      drm/msm/dpu: Correct dpu encoder spinlock initialization
      drm/msm: correct NULL pointer dereference in context_init
      drm/amd/display: handle active dongle port type is DP++ or DP case
      drm/amd/display: do not read link setting if edp not connected
      drm/amd/display: Increase size of audios array
      drm/amd/display: drop ASSERT() if eDP panel is not connected
      drm/amd/display: Only enable audio if speaker allocation exists
      drm/amd/display: Fix dc_create failure handling and 666 color depths
      drm/amd/display: allocate 4 ddc engines for RV2
      drm/amd/display: put back front end initialization sequence
      drm/amd/display: Wait for flip to complete
      drm/amd/display: Change min_h_sync_width from 8 to 4
      drm/amd/display: use encoder's engine id to find matched free audio device
      drm/amd/display: fix DMCU hang when going into Modern Standby
      drm/amd/display: Disable Audio on reinitialize hardware
      ...
    torvalds committed Jul 26, 2019
  7. block: fix max segment size handling in blk_queue_virt_boundary

    We should only set the max segment size to unlimited if we actually
    have a virt boundary.  Otherwise we accidentally clear that limit
    when called from the SCSI midlayer, which always calls
    blk_queue_virt_boundary, even if that mask is 0.
    
    Fixes: 7ad388d ("scsi: core: add a host / host template field for the virt boundary")
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Christoph Hellwig authored and axboe committed Jul 26, 2019
  8. Merge tag 'docs-5.3-1' of git://git.lwn.net/linux

    Pull documentation fixes from Jonathan Corbet:
     "This is mostly a set of follow-on fixes from Mauro fixing various
      fallout from the massive RST conversion; a few other small fixes as
      well"
    
    * tag 'docs-5.3-1' of git://git.lwn.net/linux: (21 commits)
      docs: phy: Drop duplicate 'be made'
      doc:it_IT: translations in process/
      docs/vm: transhuge: fix typo in madvise reference
      doc:it_IT: rephrase statement
      doc:it_IT: align translation to mainline
      docs: load_config.py: ensure subdirs end with "/"
      docs: virtual: add it to the documentation body
      docs: remove extra conf.py files
      docs: load_config.py: avoid needing a conf.py just due to LaTeX docs
      scripts/sphinx-pre-install: seek for Noto CJK fonts for pdf output
      scripts/sphinx-pre-install: cleanup Gentoo checks
      scripts/sphinx-pre-install: fix latexmk dependencies
      scripts/sphinx-pre-install: don't use LaTeX with CentOS 7
      scripts/sphinx-pre-install: fix script for RHEL/CentOS
      docs: conf.py: only use CJK if the font is available
      docs: conf.py: add CJK package needed by translations
      docs: pdf: add all Documentation/*/index.rst to PDF output
      docs: fix broken doc references due to renames
      docs: power: add it to to the main documentation index
      docs: powerpc: convert docs to ReST and rename to *.rst
      ...
    torvalds committed Jul 26, 2019
  9. Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/…

    …git/arm64/linux
    
    Pull arm64 fixes from Will Deacon:
     "There's more here than we usually have at this stage, but that's
      mainly down to the stacktrace changes which came in slightly too late
      for the merge window.
    
      Summary:
    
       - Big bad batch of MAINTAINERS updates
    
       - Fix handling of SP alignment fault exceptions
    
       - Fix PSTATE.SSBS handling on heterogeneous systems
    
       - Fix fallout from moving to the generic vDSO implementation
    
       - Fix stack unwinding in the face of frame corruption
    
       - Fix off-by-one in IORT code
    
       - Minor SVE cleanups"
    
    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
      ACPI/IORT: Fix off-by-one check in iort_dev_find_its_id()
      arm64: entry: SP Alignment Fault doesn't write to FAR_EL1
      arm64: Force SSBS on context switch
      MAINTAINERS: Update my email address
      MAINTAINERS: Update my email address
      MAINTAINERS: Fix spelling mistake in my name
      MAINTAINERS: Update my email address to @kernel.org
      arm64: mm: Drop pte_huge()
      arm64/sve: Fix a couple of magic numbers for the Z-reg count
      arm64/sve: Factor out FPSIMD to SVE state conversion
      arm64: stacktrace: Better handle corrupted stacks
      arm64: stacktrace: Factor out backtrace initialisation
      arm64: stacktrace: Constify stacktrace.h functions
      arm64: vdso: Cleanup Makefiles
      arm64: vdso: fix flip/flop vdso build bug
      arm64: vdso: Fix population of AT_SYSINFO_EHDR for compat vdso
    torvalds committed Jul 26, 2019
  10. Merge tag 'for-5.3-rc1-tag' of git://git.kernel.org/pub/scm/linux/ker…

    …nel/git/kdave/linux
    
    Pull btrfs fixes from David Sterba:
     "Two regression fixes:
    
       - hangs caused by a missing barrier in the locking code
    
       - memory leaks of extent_state due to bad handling of a cached
         pointer"
    
    * tag 'for-5.3-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
      btrfs: fix extent_state leak in btrfs_lock_and_flush_ordered_range
      btrfs: Fix deadlock caused by missing memory barrier
    torvalds committed Jul 26, 2019
  11. Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git…

    …/viro/vfs
    
    Pull vfs umount_tree() leak fix from Al Viro:
     "Fix braino introduced in 'switch the remnants of releasing the
      mountpoint away from fs_pin'.
    
      The most visible result is leaking struct mount when mounting btrfs,
      making it impossible to shut down"
    
    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
      fix the struct mount leak in umount_tree()
    torvalds committed Jul 26, 2019
  12. Merge tag 'for-linus-20190726' of git://git.kernel.dk/linux-block

    Pull block fixes from Jens Axboe:
    
     - Several io_uring fixes/improvements:
         - Blocking fix for O_DIRECT (me)
         - Latter page slowness for registered buffers (me)
         - Fix poll hang under certain conditions (me)
         - Defer sequence check fix for wrapped rings (Zhengyuan)
         - Mismatch in async inc/dec accounting (Zhengyuan)
         - Memory ordering issue that could cause stall (Zhengyuan)
          - Track sequential defer in bytes, not pages (Zhengyuan)
    
     - NVMe pull request from Christoph
    
     - Set of hang fixes for wbt (Josef)
    
     - Redundant error message kill for libahci (Ding)
    
     - Remove unused blk_mq_sched_started_request() and related ops (Marcos)
    
     - drbd dynamic alloc shash descriptor to reduce stack use (Arnd)
    
     - blkcg ->pd_stat() non-debug print (Tejun)
    
     - bcache memory leak fix (Wei)
    
     - Comment fix (Akinobu)
    
     - BFQ perf regression fix (Paolo)
    
    * tag 'for-linus-20190726' of git://git.kernel.dk/linux-block: (24 commits)
      io_uring: ensure ->list is initialized for poll commands
      Revert "nvme-pci: don't create a read hctx mapping without read queues"
      nvme: fix multipath crash when ANA is deactivated
      nvme: fix memory leak caused by incorrect subsystem free
      nvme: ignore subnqn for ADATA SX6000LNP
      drbd: dynamically allocate shash descriptor
      block: blk-mq: Remove blk_mq_sched_started_request and started_request
      bcache: fix possible memory leak in bch_cached_dev_run()
      io_uring: track io length in async_list based on bytes
      io_uring: don't use iov_iter_advance() for fixed buffers
      block: properly handle IOCB_NOWAIT for async O_DIRECT IO
      blk-mq: allow REQ_NOWAIT to return an error inline
      io_uring: add a memory barrier before atomic_read
      rq-qos: use a mb for got_token
      rq-qos: set ourself TASK_UNINTERRUPTIBLE after we schedule
      rq-qos: don't reset has_sleepers on spurious wakeups
      rq-qos: fix missed wake-ups in rq_qos_throttle
      wait: add wq_has_single_sleeper helper
      block, bfq: check also in-flight I/O in dispatch plugging
      block: fix sysfs module parameters directory path in comment
      ...
    torvalds committed Jul 26, 2019
  13. Merge tag 'sound-5.3-rc2' of git://git.kernel.org/pub/scm/linux/kerne…

    …l/git/tiwai/sound
    
    Pull sound fixes from Takashi Iwai:
     "All relatively small changes:
    
       - a regression fix for PCM link code with CONFIG_REFCOUNT_FULL;
         stumbled on a slight difference between atomic_t and refcount_t
    
       - a couple of HD-audio stabilization patches addressing the too slow
         PM resume seen on some Intel chips
    
       - a series of ALSA compress-offload API fixes, including the
         regression by the previous capture stream support
    
       - trivial LINE6 USB-audio driver fixes, a new Conexant HD-audio chip
         coverage, and a fix in AC97 bus error path"
    
    * tag 'sound-5.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
      ALSA: hda - Add a conexant codec entry to let mute led work
      ALSA: hda - Fix intermittent CORB/RIRB stall on Intel chips
      ALSA: ac97: Fix double free of ac97_codec_device
      ALSA: compress: Be more restrictive about when a drain is allowed
      ALSA: compress: Don't allow paritial drain operations on capture streams
      ALSA: compress: Prevent bypasses of set_params
      ALSA: compress: Fix regression on compressed capture streams
      ALSA: line6: Fix a typo
      ALSA: pcm: Fix refcount_inc() on zero usage
      ALSA: line6: Fix wrong altsetting for LINE6_PODHD500_1
      ALSA: hda - Optimize resume for codecs without jack detection
    torvalds committed Jul 26, 2019
  14. Merge tag 'iommu-fixes-v5.3-rc1' of git://git.kernel.org/pub/scm/linu…

    …x/kernel/git/joro/iommu
    
    Pull IOMMU fixes from Joerg Roedel:
    
     - revert an Intel VT-d patch that caused boot problems on some machines
    
     - fix AMD IOMMU interrupts with x2apic enabled
    
     - fix a potential crash when Intel VT-d domain allocation fails
    
     - fix crash in Intel VT-d driver when accessing a domain without a
       flush queue
    
     - formatting fix for new Intel VT-d debugfs code
    
     - fix for use-after-free bug in IOVA code
    
     - fix for a NULL-pointer dereference in Intel VT-d driver when PCI
       hotplug is used
    
     - compilation fix for one of the previous fixes
    
    * tag 'iommu-fixes-v5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
      iommu/amd: Add support for X2APIC IOMMU interrupts
      iommu/iova: Fix compilation error with !CONFIG_IOMMU_IOVA
      iommu/vt-d: Print pasid table entries MSB to LSB in debugfs
      iommu/iova: Remove stale cached32_node
      iommu/vt-d: Check if domain->pgd was allocated
      iommu/vt-d: Don't queue_iova() if there is no flush queue
      iommu/vt-d: Avoid duplicated pci dma alias consideration
      Revert "iommu/vt-d: Consolidate domain_init() to avoid duplication"
    torvalds committed Jul 26, 2019
  15. Merge branch 'for-linus-5.3' of git://git.kernel.org/pub/scm/linux/ke…

    …rnel/git/konrad/ibft
    
    Pull iscsi_ibft fix from Konrad Rzeszutek Wilk:
     "One tiny fix to enable iSCSI IBFT to be compiled under ARM"
    
    * 'for-linus-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft:
      iscsi_ibft: make ISCSI_IBFT depend on ACPI instead of ISCSI_IBFT_FIND
    torvalds committed Jul 26, 2019
  16. Merge tag 'hwmon-for-v5.3-rc2' of git://git.kernel.org/pub/scm/linux/…

    …kernel/git/groeck/linux-staging
    
    Pull hwmon fixes from Guenter Roeck:
     "A couple of hwmon bug fixes:
    
       - Update k8temp documentation URL
    
       - Register address fixes in nct6775 driver
    
       - Fix potential division by zero in occ driver"
    
    * tag 'hwmon-for-v5.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
      hwmon: (k8temp) documentation: update URL of datasheet
      hwmon: (nct6775) Fix register address and added missed tolerance for nct6106
      hwmon: (occ) Fix division by zero issue
    torvalds committed Jul 26, 2019
  17. docs: phy: Drop duplicate 'be made'

    Fix duplicate words.
    
    Signed-off-by: Guido Günther <agx@sigxcpu.org>
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    agx authored and Jonathan Corbet committed Jul 26, 2019
  18. fix the struct mount leak in umount_tree()

    	We need to drop everything we remove from the tree, whether
    mnt_has_parent() is true or not.  Usually the bug manifests as a slow
    memory leak (leaked struct mount for initramfs); it becomes much more
    visible in mount_subtree() users, such as btrfs.  There we leak
    a struct mount for btrfs superblock being mounted, which prevents
    fs shutdown on subsequent umount.
    
    Fixes: 56cbb42 ("switch the remnants of releasing the mountpoint away from fs_pin")
    Reported-by: Nikolay Borisov <nborisov@suse.com>
    Tested-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Al Viro
    Al Viro committed Jul 26, 2019
  19. MAINTAINERS: vfio-ccw: Remove myself as the maintainer

    I will not be able to continue with my maintainership responsibilities
    going forward, so remove myself as the maintainer.
    
    Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
    Acked-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Farhan Ali authored and heicarst committed Jul 26, 2019
  20. s390/mm: use shared variables for sysctl range check

    Since commit eec4844 ("proc/sysctl: add shared variables for range
    check") special shared variables are available for sysctl range check.
    Reuse them for /proc/sys/vm/allocate_pgste proc handler.
    
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Vasily Gorbik authored and heicarst committed Jul 26, 2019
  21. virtio/s390: fix race on airq_areas[]

    The access to airq_areas was racy ever since the adapter interrupts got
    introduced to virtio-ccw, but since commit 39c7dcb ("virtio/s390:
    make airq summary indicators DMA") this became an issue in practice as
    well. Namely before that commit the airq_info that got overwritten was
    still functional. After that commit however the two infos share a
    summary_indicator, which aggravates the situation. Which means
    auto-online mechanism occasionally hangs the boot with virtio_blk.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 96b1453 ("virtio-ccw: virtio-ccw adapter interrupt support.")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    halil-pasic authored and heicarst committed Jul 26, 2019
  22. s390/dma: provide proper ARCH_ZONE_DMA_BITS value

    On s390 ZONE_DMA is up to 2G, i.e. ARCH_ZONE_DMA_BITS should be 31 bits.
    The current value is 24 and makes __dma_direct_alloc_pages() take a
    wrong turn first (but __dma_direct_alloc_pages() recovers then).
    
    Let's correct ARCH_ZONE_DMA_BITS value and avoid wrong turns.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Reported-by: Petr Tesarik <ptesarik@suse.cz>
    Fixes: c61e963 ("dma-direct: add support for allocation from ZONE_DMA and ZONE_DMA32")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    halil-pasic authored and heicarst committed Jul 26, 2019
  23. btrfs: fix extent_state leak in btrfs_lock_and_flush_ordered_range

    btrfs_lock_and_flush_ordered_range() loads given "*cached_state" into
    cachedp, which, in general, is NULL. Then, lock_extent_bits() updates
    "cachedp", but it never goes backs to the caller. Thus the caller still
    see its "cached_state" to be NULL and never free the state allocated
    under btrfs_lock_and_flush_ordered_range(). As a result, we will
    see massive state leak with e.g. fstests btrfs/005. Fix this bug by
    properly handling the pointers.
    
    Fixes: bd80d94 ("btrfs: Always use a cached extent_state in btrfs_lock_and_flush_ordered_range")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    naota authored and kdave committed Jul 26, 2019
  24. Merge tag 'drm-fixes-5.3-2019-07-24' of git://people.freedesktop.org/…

    …~agd5f/linux into drm-fixes
    
    drm-fixes-5.3-2019-07-24:
    
    amdgpu:
    - RAS fixes for vega20
    - Navi VCN fix
    - DC audio fixes
    - DC DSC fixes
    - DC dongle fixes
    - DC clk mgr fixes
    - Fix DDC lines on some RV2 boards
    - GDS fixes for compute
    - Navi SMU fixes
    
    ttm:
    - Use the same attributes when freeing d_page->vaddr
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    From: Alex Deucher <alexdeucher@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190724210527.3415-1-alexander.deucher@amd.com
    airlied committed Jul 26, 2019
  25. Merge tag 'drm-misc-fixes-2019-07-25' of git://anongit.freedesktop.or…

    …g/drm/drm-misc into drm-fixes
    
    - pick up the cmdline fix which missed the merge window (Dmitry)
    - a handful of msm fixes so i don't have to spin up msm-fixes (Various)
    - fix -Wunused-but-set-variable warning in drm_framebuffer (Qian)
    
    Cc: Dmitry Osipenko <digetx@gmail.com>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Qian Cai <cai@lca.pw>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    
    From: Sean Paul <sean@poorly.run>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190725160909.GA106249@art_vandelay
    airlied committed Jul 26, 2019
Older
You can’t perform that action at this time.