1. 24 Feb, 2020 2 commits
  2. 23 Feb, 2020 28 commits
  3. 22 Feb, 2020 10 commits
    • Linus Torvalds's avatar
      Merge tag 'zonefs-5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs · 0a115e5f
      Linus Torvalds authored
      Pull zonefs fix from Damien Le Moal:
       "A single patch fixing typos in the documentation file"
      
      * tag 'zonefs-5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs:
        zonefs: fix documentation typos etc.
      0a115e5f
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.6-2020-02-22' of git://git.kernel.dk/linux-block · b88025ea
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Here's a small collection of fixes that were queued up:
      
         - Remove unnecessary NULL check (Dan)
      
         - Missing io_req_cancelled() call in fallocate (Pavel)
      
         - Put the cleanup check for aux data in the right spot (Pavel)
      
         - Two fixes for SQPOLL (Stefano, Xiaoguang)"
      
      * tag 'io_uring-5.6-2020-02-22' of git://git.kernel.dk/linux-block:
        io_uring: fix __io_iopoll_check deadlock in io_sq_thread
        io_uring: prevent sq_thread from spinning when it should stop
        io_uring: fix use-after-free by io_cleanup_req()
        io_uring: remove unnecessary NULL checks
        io_uring: add missing io_req_cancelled()
      b88025ea
    • Linus Torvalds's avatar
      Merge tag 'block-5.6-2020-02-22' of git://git.kernel.dk/linux-block · f6c69b7f
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Just a set of NVMe fixes via Keith"
      
      * tag 'block-5.6-2020-02-22' of git://git.kernel.dk/linux-block:
        nvme-multipath: Fix memory leak with ana_log_buf
        nvme: Fix uninitialized-variable warning
        nvme-pci: Use single IRQ vector for old Apple models
        nvme/pci: Add sleep quirk for Samsung and Toshiba drives
      f6c69b7f
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · b98b809c
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Four non-core fixes.
      
        Two are reverts of target fixes which turned out to have unwanted side
        effects, one is a revert of an RDMA fix with the same problem and the
        final one fixes an incorrect warning about memory allocation failures
        in megaraid_sas (the driver actually reduces the allocation size until
        it succeeds)"
      Signed-off-by: default avatarJames E.J. Bottomley <jejb@linux.ibm.com>
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: Revert "target: iscsi: Wait for all commands to finish before freeing a session"
        scsi: Revert "RDMA/isert: Fix a recently introduced regression related to logout"
        scsi: megaraid_sas: silence a warning
        scsi: Revert "target/core: Inline transport_lun_remove_cmd()"
      b98b809c
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.6-rc3' of... · 5b442b1a
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - Fix crash in w83627ehf driver seen with W83627DHG-P
      
       - Fix lockdep splat in acpi_power_meter driver
      
       - Fix xdpe12284 documentation Sphinx warnings
      
      * tag 'hwmon-for-v5.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (w83627ehf) Fix crash seen with W83627DHG-P
        hwmon: (acpi_power_meter) Fix lockdep splat
        Documentation/hwmon: fix xdpe12284 Sphinx warnings
      5b442b1a
    • Linus Torvalds's avatar
      Merge tag 'devicetree-fixes-for-5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · fea63021
      Linus Torvalds authored
      Pull devicetree fixes deom Rob Herring:
       "A handful of fixes in DT bindings for MDIO bus, Allwinner CSI, OMAP
        HSMMC, and Tegra124 EMC"
      
      * tag 'devicetree-fixes-for-5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        dt-bindings: media: csi: Fix clocks description
        dt-bindings: media: csi: Add interconnects properties
        dt-bindings: net: mdio: remove compatible string from example
        dt-bindings: memory-controller: Update example for Tegra124 EMC
        dt-bindings: mmc: omap-hsmmc: Fix SDIO interrupt
      fea63021
    • Linus Torvalds's avatar
      Merge tag 's390-5.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 591dd4c1
      Linus Torvalds authored
      Pull s390 fixes from Vasily Gorbik:
      
       - Remove ieee_emulation_warnings sysctl which is a dead code.
      
       - Avoid triggering rebuild of the kernel during make install.
      
       - Enable protected virtualization guest support in default configs.
      
       - Fix cio_ignore seq_file .next function to increase position index.
         And use kobj_to_dev instead of container_of in cio code.
      
       - Fix storage block address lists to contain absolute addresses in qdio
         code.
      
       - Few clang warnings and spelling fixes.
      
      * tag 's390-5.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/qdio: fill SBALEs with absolute addresses
        s390/qdio: fill SL with absolute addresses
        s390: remove obsolete ieee_emulation_warnings
        s390: make 'install' not depend on vmlinux
        s390/kaslr: Fix casts in get_random
        s390/mm: Explicitly compare PAGE_DEFAULT_KEY against zero in storage_key_init_range
        s390/pkey/zcrypt: spelling s/crytp/crypt/
        s390/cio: use kobj_to_dev() API
        s390/defconfig: enable CONFIG_PROTECTED_VIRTUALIZATION_GUEST
        s390/cio: cio_ignore_proc_seq_next should increase position index
      591dd4c1
    • Xiaoguang Wang's avatar
      io_uring: fix __io_iopoll_check deadlock in io_sq_thread · c7849be9
      Xiaoguang Wang authored
      Since commit a3a0e43f ("io_uring: don't enter poll loop if we have
      CQEs pending"), if we already events pending, we won't enter poll loop.
      In case SETUP_IOPOLL and SETUP_SQPOLL are both enabled, if app has
      been terminated and don't reap pending events which are already in cq
      ring, and there are some reqs in poll_list, io_sq_thread will enter
      __io_iopoll_check(), and find pending events, then return, this loop
      will never have a chance to exit.
      
      I have seen this issue in fio stress tests, to fix this issue, let
      io_sq_thread call io_iopoll_getevents() with argument 'min' being zero,
      and remove __io_iopoll_check().
      
      Fixes: a3a0e43f ("io_uring: don't enter poll loop if we have CQEs pending")
      Signed-off-by: default avatarXiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      c7849be9
    • Jan Kara's avatar
      ext4: fix mount failure with quota configured as module · 9db176bc
      Jan Kara authored
      When CONFIG_QFMT_V2 is configured as a module, the test in
      ext4_feature_set_ok() fails and so mount of filesystems with quota or
      project features fails. Fix the test to use IS_ENABLED macro which
      works properly even for modules.
      
      Link: https://lore.kernel.org/r/20200221100835.9332-1-jack@suse.cz
      Fixes: d65d87a0 ("ext4: improve explanation of a mount failure caused by a misconfigured kernel")
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Cc: stable@kernel.org
      9db176bc
    • wangyan's avatar
      jbd2: fix ocfs2 corrupt when clearing block group bits · 8eedabfd
      wangyan authored
      I found a NULL pointer dereference in ocfs2_block_group_clear_bits().
      The running environment:
      	kernel version: 4.19
      	A cluster with two nodes, 5 luns mounted on two nodes, and do some
      	file operations like dd/fallocate/truncate/rm on every lun with storage
      	network disconnection.
      
      The fallocate operation on dm-23-45 caused an null pointer dereference.
      
      The information of NULL pointer dereference as follows:
      	[577992.878282] JBD2: Error -5 detected when updating journal superblock for dm-23-45.
      	[577992.878290] Aborting journal on device dm-23-45.
      	...
      	[577992.890778] JBD2: Error -5 detected when updating journal superblock for dm-24-46.
      	[577992.890908] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890916] (fallocate,88392,52):ocfs2_extend_trans:474 ERROR: status = -30
      	[577992.890918] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890920] (fallocate,88392,52):ocfs2_rotate_tree_right:2500 ERROR: status = -30
      	[577992.890922] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890924] (fallocate,88392,52):ocfs2_do_insert_extent:4382 ERROR: status = -30
      	[577992.890928] (fallocate,88392,52):ocfs2_insert_extent:4842 ERROR: status = -30
      	[577992.890928] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890930] (fallocate,88392,52):ocfs2_add_clusters_in_btree:4947 ERROR: status = -30
      	[577992.890933] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890939] __journal_remove_journal_head: freeing b_committed_data
      	[577992.890949] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
      	[577992.890950] Mem abort info:
      	[577992.890951]   ESR = 0x96000004
      	[577992.890952]   Exception class = DABT (current EL), IL = 32 bits
      	[577992.890952]   SET = 0, FnV = 0
      	[577992.890953]   EA = 0, S1PTW = 0
      	[577992.890954] Data abort info:
      	[577992.890955]   ISV = 0, ISS = 0x00000004
      	[577992.890956]   CM = 0, WnR = 0
      	[577992.890958] user pgtable: 4k pages, 48-bit VAs, pgdp = 00000000f8da07a9
      	[577992.890960] [0000000000000020] pgd=0000000000000000
      	[577992.890964] Internal error: Oops: 96000004 [#1] SMP
      	[577992.890965] Process fallocate (pid: 88392, stack limit = 0x00000000013db2fd)
      	[577992.890968] CPU: 52 PID: 88392 Comm: fallocate Kdump: loaded Tainted: G        W  OE     4.19.36 #1
      	[577992.890969] Hardware name: Huawei TaiShan 2280 V2/BC82AMDD, BIOS 0.98 08/25/2019
      	[577992.890971] pstate: 60400009 (nZCv daif +PAN -UAO)
      	[577992.891054] pc : _ocfs2_free_suballoc_bits+0x63c/0x968 [ocfs2]
      	[577992.891082] lr : _ocfs2_free_suballoc_bits+0x618/0x968 [ocfs2]
      	[577992.891084] sp : ffff0000c8e2b810
      	[577992.891085] x29: ffff0000c8e2b820 x28: 0000000000000000
      	[577992.891087] x27: 00000000000006f3 x26: ffffa07957b02e70
      	[577992.891089] x25: ffff807c59d50000 x24: 00000000000006f2
      	[577992.891091] x23: 0000000000000001 x22: ffff807bd39abc30
      	[577992.891093] x21: ffff0000811d9000 x20: ffffa07535d6a000
      	[577992.891097] x19: ffff000001681638 x18: ffffffffffffffff
      	[577992.891098] x17: 0000000000000000 x16: ffff000080a03df0
      	[577992.891100] x15: ffff0000811d9708 x14: 203d207375746174
      	[577992.891101] x13: 73203a524f525245 x12: 20373439343a6565
      	[577992.891103] x11: 0000000000000038 x10: 0101010101010101
      	[577992.891106] x9 : ffffa07c68a85d70 x8 : 7f7f7f7f7f7f7f7f
      	[577992.891109] x7 : 0000000000000000 x6 : 0000000000000080
      	[577992.891110] x5 : 0000000000000000 x4 : 0000000000000002
      	[577992.891112] x3 : ffff000001713390 x2 : 2ff90f88b1c22f00
      	[577992.891114] x1 : ffff807bd39abc30 x0 : 0000000000000000
      	[577992.891116] Call trace:
      	[577992.891139]  _ocfs2_free_suballoc_bits+0x63c/0x968 [ocfs2]
      	[577992.891162]  _ocfs2_free_clusters+0x100/0x290 [ocfs2]
      	[577992.891185]  ocfs2_free_clusters+0x50/0x68 [ocfs2]
      	[577992.891206]  ocfs2_add_clusters_in_btree+0x198/0x5e0 [ocfs2]
      	[577992.891227]  ocfs2_add_inode_data+0x94/0xc8 [ocfs2]
      	[577992.891248]  ocfs2_extend_allocation+0x1bc/0x7a8 [ocfs2]
      	[577992.891269]  ocfs2_allocate_extents+0x14c/0x338 [ocfs2]
      	[577992.891290]  __ocfs2_change_file_space+0x3f8/0x610 [ocfs2]
      	[577992.891309]  ocfs2_fallocate+0xe4/0x128 [ocfs2]
      	[577992.891316]  vfs_fallocate+0x11c/0x250
      	[577992.891317]  ksys_fallocate+0x54/0x88
      	[577992.891319]  __arm64_sys_fallocate+0x28/0x38
      	[577992.891323]  el0_svc_common+0x78/0x130
      	[577992.891325]  el0_svc_handler+0x38/0x78
      	[577992.891327]  el0_svc+0x8/0xc
      
      My analysis process as follows:
      ocfs2_fallocate
        __ocfs2_change_file_space
          ocfs2_allocate_extents
            ocfs2_extend_allocation
              ocfs2_add_inode_data
                ocfs2_add_clusters_in_btree
                  ocfs2_insert_extent
                    ocfs2_do_insert_extent
                      ocfs2_rotate_tree_right
                        ocfs2_extend_rotate_transaction
                          ocfs2_extend_trans
                            jbd2_journal_restart
                              jbd2__journal_restart
                                /* handle->h_transaction is NULL,
                                 * is_handle_aborted(handle) is true
                                 */
                                handle->h_transaction = NULL;
                                start_this_handle
                                  return -EROFS;
                  ocfs2_free_clusters
                    _ocfs2_free_clusters
                      _ocfs2_free_suballoc_bits
                        ocfs2_block_group_clear_bits
                          ocfs2_journal_access_gd
                            __ocfs2_journal_access
                              jbd2_journal_get_undo_access
                                /* I think jbd2_write_access_granted() will
                                 * return true, because do_get_write_access()
                                 * will return -EROFS.
                                 */
                                if (jbd2_write_access_granted(...)) return 0;
                                do_get_write_access
                                  /* handle->h_transaction is NULL, it will
                                   * return -EROFS here, so do_get_write_access()
                                   * was not called.
                                   */
                                  if (is_handle_aborted(handle)) return -EROFS;
                          /* bh2jh(group_bh) is NULL, caused NULL
                             pointer dereference */
                          undo_bg = (struct ocfs2_group_desc *)
                                      bh2jh(group_bh)->b_committed_data;
      
      If handle->h_transaction == NULL, then jbd2_write_access_granted()
      does not really guarantee that journal_head will stay around,
      not even speaking of its b_committed_data. The bh2jh(group_bh)
      can be removed after ocfs2_journal_access_gd() and before call
      "bh2jh(group_bh)->b_committed_data". So, we should move
      is_handle_aborted() check from do_get_write_access() into
      jbd2_journal_get_undo_access() and jbd2_journal_get_write_access()
      before the call to jbd2_write_access_granted().
      
      Link: https://lore.kernel.org/r/f72a623f-b3f1-381a-d91d-d22a1c83a336@huawei.comSigned-off-by: default avatarYan Wang <wangyan122@huawei.com>
      Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Reviewed-by: default avatarJun Piao <piaojun@huawei.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Cc: stable@kernel.org
      8eedabfd