1. 13 11月, 2018 1 次提交
  2. 12 11月, 2018 1 次提交
  3. 10 11月, 2018 4 次提交
    • J
      floppy: fix race condition in __floppy_read_block_0() · de7b75d8
      Jens Axboe 提交于
      LKP recently reported a hang at bootup in the floppy code:
      
      [  245.678853] INFO: task mount:580 blocked for more than 120 seconds.
      [  245.679906]       Tainted: G                T 4.19.0-rc6-00172-ga9f38e1d #1
      [  245.680959] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [  245.682181] mount           D 6372   580      1 0x00000004
      [  245.683023] Call Trace:
      [  245.683425]  __schedule+0x2df/0x570
      [  245.683975]  schedule+0x2d/0x80
      [  245.684476]  schedule_timeout+0x19d/0x330
      [  245.685090]  ? wait_for_common+0xa5/0x170
      [  245.685735]  wait_for_common+0xac/0x170
      [  245.686339]  ? do_sched_yield+0x90/0x90
      [  245.686935]  wait_for_completion+0x12/0x20
      [  245.687571]  __floppy_read_block_0+0xfb/0x150
      [  245.688244]  ? floppy_resume+0x40/0x40
      [  245.688844]  floppy_revalidate+0x20f/0x240
      [  245.689486]  check_disk_change+0x43/0x60
      [  245.690087]  floppy_open+0x1ea/0x360
      [  245.690653]  __blkdev_get+0xb4/0x4d0
      [  245.691212]  ? blkdev_get+0x1db/0x370
      [  245.691777]  blkdev_get+0x1f3/0x370
      [  245.692351]  ? path_put+0x15/0x20
      [  245.692871]  ? lookup_bdev+0x4b/0x90
      [  245.693539]  blkdev_get_by_path+0x3d/0x80
      [  245.694165]  mount_bdev+0x2a/0x190
      [  245.694695]  squashfs_mount+0x10/0x20
      [  245.695271]  ? squashfs_alloc_inode+0x30/0x30
      [  245.695960]  mount_fs+0xf/0x90
      [  245.696451]  vfs_kern_mount+0x43/0x130
      [  245.697036]  do_mount+0x187/0xc40
      [  245.697563]  ? memdup_user+0x28/0x50
      [  245.698124]  ksys_mount+0x60/0xc0
      [  245.698639]  sys_mount+0x19/0x20
      [  245.699167]  do_int80_syscall_32+0x61/0x130
      [  245.699813]  entry_INT80_32+0xc7/0xc7
      
      showing that we never complete that read request. The reason is that
      the completion setup is racy - it initializes the completion event
      AFTER submitting the IO, which means that the IO could complete
      before/during the init. If it does, we are passing garbage to
      complete() and we may sleep forever waiting for the event to
      occur.
      
      Fixes: 7b7b68bb ("floppy: bail out in open() if drive is not responding to block0 read")
      Reviewed-by: NOmar Sandoval <osandov@fb.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      de7b75d8
    • L
      Merge tag 'for-linus-20181109' of git://git.kernel.dk/linux-block · dc5db218
      Linus Torvalds 提交于
      Pull block layer fixes from Jens Axboe:
      
       - Two fixes for an ubd regression, one for missing locking, and one for
         a missing initialization of a field. The latter was an old latent
         bug, but it's now visible and triggers (Me, Anton Ivanov)
      
       - Set of NVMe fixes via Christoph, but applied manually due to a git
         tree mixup (Christoph, Sagi)
      
       - Fix for a discard split regression, in three patches (Ming)
      
       - Update libata git trees (Geert)
      
       - SPDX identifier for sata_rcar (Kuninori Morimoto)
      
       - Virtual boundary merge fix (Johannes)
      
       - Preemptively clear memory we are going to pass to userspace, in case
         the driver does a short read (Keith)
      
      * tag 'for-linus-20181109' of git://git.kernel.dk/linux-block:
        block: make sure writesame bio is aligned with logical block size
        block: cleanup __blkdev_issue_discard()
        block: make sure discard bio is aligned with logical block size
        Revert "nvmet-rdma: use a private workqueue for delete"
        nvme: make sure ns head inherits underlying device limits
        nvmet: don't try to add ns to p2p map unless it actually uses it
        sata_rcar: convert to SPDX identifiers
        ubd: fix missing initialization of io_req
        block: Clear kernel memory before copying to user
        MAINTAINERS: Fix remaining pointers to obsolete libata.git
        ubd: fix missing lock around request issue
        block: respect virtual boundary mask in bvecs
      dc5db218
    • L
      Merge tag 'ceph-for-4.20-rc2' of https://github.com/ceph/ceph-client · d757a3b0
      Linus Torvalds 提交于
      Pull Ceph fixes from Ilya Dryomov:
       "Two CephFS fixes (copy_file_range and quota) and a small feature bit
        cleanup"
      
      * tag 'ceph-for-4.20-rc2' of https://github.com/ceph/ceph-client:
        libceph: assume argonaut on the server side
        ceph: quota: fix null pointer dereference in quota check
        ceph: add destination file data sync before doing any remote copy
      d757a3b0
    • L
      Merge tag 'mips_fixes_4.20_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · 26eaed46
      Linus Torvalds 提交于
      Pull MIPS fixes from Paul Burton:
       "A couple of small MIPS fixes for 4.20:
      
         - Extend an array to avoid overruns on some Octeon hardware, fixing a
           bug introduced in 4.3.
      
         - Fix a coherent DMA regression for systems without cache-coherent
           DMA introduced in the 4.20 merge window"
      
      * tag 'mips_fixes_4.20_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
        MIPS: Fix `dma_alloc_coherent' returning a non-coherent allocation
        MIPS: OCTEON: fix out of bounds array access on CN68XX
      26eaed46
  4. 09 11月, 2018 13 次提交
  5. 08 11月, 2018 16 次提交
  6. 07 11月, 2018 4 次提交
  7. 06 11月, 2018 1 次提交
    • D
      xfs: fix overflow in xfs_attr3_leaf_verify · 837514f7
      Dave Chinner 提交于
      generic/070 on 64k block size filesystems is failing with a verifier
      corruption on writeback or an attribute leaf block:
      
      [   94.973083] XFS (pmem0): Metadata corruption detected at xfs_attr3_leaf_verify+0x246/0x260, xfs_attr3_leaf block 0x811480
      [   94.975623] XFS (pmem0): Unmount and run xfs_repair
      [   94.976720] XFS (pmem0): First 128 bytes of corrupted metadata buffer:
      [   94.978270] 000000004b2e7b45: 00 00 00 00 00 00 00 00 3b ee 00 00 00 00 00 00  ........;.......
      [   94.980268] 000000006b1db90b: 00 00 00 00 00 81 14 80 00 00 00 00 00 00 00 00  ................
      [   94.982251] 00000000433f2407: 22 7b 5c 82 2d 5c 47 4c bb 31 1c 37 fa a9 ce d6  "{\.-\GL.1.7....
      [   94.984157] 0000000010dc7dfb: 00 00 00 00 00 81 04 8a 00 0a 18 e8 dd 94 01 00  ................
      [   94.986215] 00000000d5a19229: 00 a0 dc f4 fe 98 01 68 f0 d8 07 e0 00 00 00 00  .......h........
      [   94.988171] 00000000521df36c: 0c 2d 32 e2 fe 20 01 00 0c 2d 58 65 fe 0c 01 00  .-2.. ...-Xe....
      [   94.990162] 000000008477ae06: 0c 2d 5b 66 fe 8c 01 00 0c 2d 71 35 fe 7c 01 00  .-[f.....-q5.|..
      [   94.992139] 00000000a4a6bca6: 0c 2d 72 37 fc d4 01 00 0c 2d d8 b8 f0 90 01 00  .-r7.....-......
      [   94.994789] XFS (pmem0): xfs_do_force_shutdown(0x8) called from line 1453 of file fs/xfs/xfs_buf.c. Return address = ffffffff815365f3
      
      This is failing this check:
      
                      end = ichdr.freemap[i].base + ichdr.freemap[i].size;
                      if (end < ichdr.freemap[i].base)
      >>>>>                   return __this_address;
                      if (end > mp->m_attr_geo->blksize)
                              return __this_address;
      
      And from the buffer output above, the freemap array is:
      
      	freemap[0].base = 0x00a0
      	freemap[0].size = 0xdcf4	end = 0xdd94
      	freemap[1].base = 0xfe98
      	freemap[1].size = 0x0168	end = 0x10000
      	freemap[2].base = 0xf0d8
      	freemap[2].size = 0x07e0	end = 0xf8b8
      
      These all look valid - the block size is 0x10000 and so from the
      last check in the above verifier fragment we know that the end
      of freemap[1] is valid. The problem is that end is declared as:
      
      	uint16_t	end;
      
      And (uint16_t)0x10000 = 0. So we have a verifier bug here, not a
      corruption. Fix the verifier to use uint32_t types for the check and
      hence avoid the overflow.
      
      Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=201577Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NDarrick J. Wong <darrick.wong@oracle.com>
      Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
      837514f7