Skip to content
  1. Jan 25, 2021
    • Paolo Valente's avatar
      block, bfq: do not raise non-default weights · 91b896f6
      Paolo Valente authored
      
      
      BFQ heuristics try to detect interactive I/O, and raise the weight of
      the queues containing such an I/O. Yet, if also the user changes the
      weight of a queue (i.e., the user changes the ioprio of the process
      associated with that queue), then it is most likely better to prevent
      BFQ heuristics from silently changing the same weight.
      
      Tested-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      91b896f6
    • Paolo Valente's avatar
      block, bfq: increase time window for waker detection · ab1fb47e
      Paolo Valente authored
      
      
      Tests on slower machines showed current window to be way too
      small. This commit increases it.
      
      Tested-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      ab1fb47e
    • Jia Cheng Hu's avatar
      block, bfq: set next_rq to waker_bfqq->next_rq in waker injection · d4fc3640
      Jia Cheng Hu authored
      
      
      Since commit c5089591c3ba ("block, bfq: detect wakers and
      unconditionally inject their I/O"), when the in-service bfq_queue, say
      Q, is temporarily empty, BFQ checks whether there are I/O requests to
      inject (also) from the waker bfq_queue for Q. To this goal, the value
      pointed by bfqq->waker_bfqq->next_rq must be controlled. However, the
      current implementation mistakenly looks at bfqq->next_rq, which
      instead points to the next request of the currently served queue.
      
      This mistake evidently causes losses of throughput in scenarios with
      waker bfq_queues.
      
      This commit corrects this mistake.
      
      Fixes: c5089591c3ba ("block, bfq: detect wakers and unconditionally inject their I/O")
      Signed-off-by: default avatarJia Cheng Hu <jia.jiachenghu@gmail.com>
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d4fc3640
    • Paolo Valente's avatar
      block, bfq: use half slice_idle as a threshold to check short ttime · b5f74eca
      Paolo Valente authored
      
      
      The value of the I/O plugging (idling) timeout is used also as the
      think-time threshold to decide whether a process has a short think
      time.  In this respect, a good value of this timeout for rotational
      drives is un the order of several ms. Yet, this is often too long a
      time interval to be effective as a think-time threshold. This commit
      mitigates this problem (by a lot, according to tests), by halving the
      threshold.
      
      Tested-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b5f74eca
    • Christoph Hellwig's avatar
      block: use an xarray for disk->part_tbl · a33df75c
      Christoph Hellwig authored
      
      
      Now that no fast path lookups in the partition table are left, there is
      no point in micro-optimizing the data structure for it.  Just use a bog
      standard xarray.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      a33df75c
    • Christoph Hellwig's avatar
      block: remove DISK_PITER_REVERSE · 0470dd9d
      Christoph Hellwig authored
      
      
      There is good reason to iterate backwards when deleting all partitions in
      del_gendisk, just like we don't in blk_drop_partitions.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      0470dd9d
    • Christoph Hellwig's avatar
      block: add a disk_uevent helper · bc359d03
      Christoph Hellwig authored
      
      
      Add a helper to call kobject_uevent for the disk and all partitions, and
      unexport the disk_part_iter_* helpers that are now only used in the core
      block code.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      bc359d03
    • Christoph Hellwig's avatar
      blk-mq: use ->bi_bdev for I/O accounting · 0b6e522c
      Christoph Hellwig authored
      
      
      Remove the reverse map from a sector to a partition for I/O accounting by
      simply using ->bi_bdev.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      0b6e522c
    • Christoph Hellwig's avatar
      block: use ->bi_bdev for bio based I/O accounting · 99dfc43e
      Christoph Hellwig authored
      
      
      Rework the I/O accounting for bio based drivers to use ->bi_bdev.  This
      means all drivers can now simply use bio_start_io_acct to start
      accounting, and it will take partitions into account automatically.  To
      end I/O account either bio_end_io_acct can be used if the driver never
      remaps I/O to a different device, or bio_end_io_acct_remapped if the
      driver did remap the I/O.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      99dfc43e
    • Christoph Hellwig's avatar
      block: do not reassig ->bi_bdev when partition remapping · 30c5d345
      Christoph Hellwig authored
      
      
      There is no good reason to reassign ->bi_bdev when remapping the
      partition-relative block number to the device wide one, as all the
      information required by the drivers comes from the gendisk anyway.
      
      Keeping the original ->bi_bdev alive will allow to greatly simplify
      the partition-away I/O accounting.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      30c5d345
    • Christoph Hellwig's avatar
      block: simplify submit_bio_checks a bit · 2f9f6221
      Christoph Hellwig authored
      
      
      Merge a few checks for whole devices vs partitions to streamline the
      sanity checks.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      2f9f6221
    • Christoph Hellwig's avatar
      block: store a block_device pointer in struct bio · 309dca30
      Christoph Hellwig authored
      
      
      Replace the gendisk pointer in struct bio with a pointer to the newly
      improved struct block device.  From that the gendisk can be trivially
      accessed with an extra indirection, but it also allows to directly
      look up all information related to partition remapping.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      309dca30
    • Christoph Hellwig's avatar
      dcssblk: remove the end of device check in dcssblk_submit_bio · cf9a978f
      Christoph Hellwig authored
      
      
      The block layer already checks for this conditions in bio_check_eod
      before calling the driver.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      cf9a978f
    • Christoph Hellwig's avatar
      brd: remove the end of device check in brd_do_bvec · 74cb8994
      Christoph Hellwig authored
      
      
      The block layer already checks for this conditions in bio_check_eod
      before calling the driver.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      74cb8994
    • Christoph Hellwig's avatar
      nvme: allow revalidate to set a namespace read-only · d11cd289
      Christoph Hellwig authored
      
      
      Unconditionally call set_disk_ro now that it only updates the hardware
      state.  This allows to properly set up the Linux devices read-only when
      the controller turns a previously writable namespace read-only.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d11cd289
    • Christoph Hellwig's avatar
      rbd: remove the ->set_read_only method · cbf72cce
      Christoph Hellwig authored
      
      
      Now that the hardware read-only state can't be changed by the BLKROSET
      ioctl, the code in this method is not required anymore.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Acked-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      cbf72cce
    • Christoph Hellwig's avatar
      block: propagate BLKROSET on the whole device to all partitions · 947139bf
      Christoph Hellwig authored
      
      
      Change the policy so that a BLKROSET on the whole device also affects
      partitions.  To quote Martin K. Petersen:
      
      It's very common for database folks to twiddle the read-only state of
      block devices and partitions. I know that our users will find it very
      counter-intuitive that setting /dev/sda read-only won't prevent writes
      to /dev/sda1.
      
      The existing behavior is inconsistent in the sense that doing:
      
        # blockdev --setro /dev/sda
        # echo foo > /dev/sda1
      
      permits writes. But:
      
        # blockdev --setro /dev/sda
        <something triggers revalidate>
        # echo foo > /dev/sda1
      
      doesn't.
      
      And a subsequent:
      
        # blockdev --setrw /dev/sda
        # echo foo > /dev/sda1
      
      doesn't work either since sda1's read-only policy has been inherited
      from the whole-disk device.
      
      You need to do:
      
        # blockdev --rereadpt
      
      after setting the whole-disk device rw to effectuate the same change on
      the partitions, otherwise they are stuck being read-only indefinitely.
      
      However, setting the read-only policy on a partition does *not* require
      the revalidate step. As a matter of fact, doing the revalidate will blow
      away the policy setting you just made.
      
      So the user needs to take different actions depending on whether they
      are trying to read-protect a whole-disk device or a partition. Despite
      using the same ioctl. That is really confusing.
      
      I have lost count how many times our customers have had data clobbered
      because of ambiguity of the existing whole-disk device policy. The
      current behavior violates the principle of least surprise by letting the
      user think they write protected the whole disk when they actually
      didn't.
      
      Suggested-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      947139bf
    • Christoph Hellwig's avatar
      block: add a hard-readonly flag to struct gendisk · 52f019d4
      Christoph Hellwig authored
      Commit 20bd1d02
      
       ("scsi: sd: Keep disk read-only when re-reading
      partition") addressed a long-standing problem with user read-only
      policy being overridden as a result of a device-initiated revalidate.
      The commit has since been reverted due to a regression that left some
      USB devices read-only indefinitely.
      
      To fix the underlying problems with revalidate we need to keep track
      of hardware state and user policy separately.
      
      The gendisk has been updated to reflect the current hardware state set
      by the device driver. This is done to allow returning the device to
      the hardware state once the user clears the BLKROSET flag.
      
      The resulting semantics are as follows:
      
       - If BLKROSET sets a given partition read-only, that partition will
         remain read-only even if the underlying storage stack initiates a
         revalidate. However, the BLKRRPART ioctl will cause the partition
         table to be dropped and any user policy on partitions will be lost.
      
       - If BLKROSET has not been set, both the whole disk device and any
         partitions will reflect the current write-protect state of the
         underlying device.
      
      Based on a patch from Martin K. Petersen <martin.petersen@oracle.com>.
      
      Reported-by: default avatarOleksii Kurochko <olkuroch@cisco.com>
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201221
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      52f019d4
    • Christoph Hellwig's avatar
      block: remove the NULL bdev check in bdev_read_only · 6f0d9689
      Christoph Hellwig authored
      
      
      Only a single caller can end up in bdev_read_only, so move the check
      there.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      6f0d9689
    • Christoph Hellwig's avatar
      dm: use bdev_read_only to check if a device is read-only · 1e0dcca9
      Christoph Hellwig authored
      
      
      dm-thin and dm-cache also work on partitions, so use the proper
      interface to check if the device is read-only.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      1e0dcca9
    • Linus Torvalds's avatar
      Linux 5.11-rc5 · 6ee1d745
      Linus Torvalds authored
      6ee1d745
    • Linus Torvalds's avatar
      Merge tag 'sh-for-5.11' of git://git.libc.org/linux-sh · 228a65d4
      Linus Torvalds authored
      Pull arch/sh updates from Rich Felker:
       "Cleanup and warning fixes"
      
      * tag 'sh-for-5.11' of git://git.libc.org/linux-sh:
        sh/intc: Restore devm_ioremap() alignment
        sh: mach-sh03: remove duplicate include
        arch: sh: remove duplicate include
        sh: Drop ARCH_NR_GPIOS definition
        sh: Remove unused HAVE_COPY_THREAD_TLS macro
        sh: remove CONFIG_IDE from most defconfig
        sh: mm: Convert to DEFINE_SHOW_ATTRIBUTE
        sh: intc: Convert to DEFINE_SHOW_ATTRIBUTE
        arch/sh: hyphenate Non-Uniform in Kconfig prompt
        sh: dma: fix kconfig dependency for G2_DMA
      228a65d4
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.11-2021-01-24' of git://git.kernel.dk/linux-block · ef7b1a0e
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Still need a final cancelation fix that isn't quite done done,
        expected in the next day or two. That said, this contains:
      
         - Wakeup fix for IOPOLL requests
      
         - SQPOLL split close op handling fix
      
         - Ensure that any use of io_uring fd itself is marked as inflight
      
         - Short non-regular file read fix (Pavel)
      
         - Fix up bad false positive warning (Pavel)
      
         - SQPOLL fixes (Pavel)
      
         - In-flight removal fix (Pavel)"
      
      * tag 'io_uring-5.11-2021-01-24' of git://git.kernel.dk/linux-block:
        io_uring: account io_uring internal files as REQ_F_INFLIGHT
        io_uring: fix sleeping under spin in __io_clean_op
        io_uring: fix short read retries for non-reg files
        io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state
        io_uring: fix skipping disabling sqo on exec
        io_uring: fix uring_flush in exit_files() warning
        io_uring: fix false positive sqo warning on flush
        io_uring: iopoll requests should also wake task ->in_idle state
      ef7b1a0e
    • Linus Torvalds's avatar
      Merge tag 'block-5.11-2021-01-24' of git://git.kernel.dk/linux-block · a692a610
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request from Christoph:
            - fix a status code in nvmet (Chaitanya Kulkarni)
            - avoid double completions in nvme-rdma/nvme-tcp (Chao Leng)
            - fix the CMB support to cope with NVMe 1.4 controllers (Klaus Jensen)
            - fix PRINFO handling in the passthrough ioctl (Revanth Rajashekar)
            - fix a double DMA unmap in nvme-pci
      
       - lightnvm error path leak fix (Pan)
      
       - MD pull request from Song:
            - Flush request fix (Xiao)
      
      * tag 'block-5.11-2021-01-24' of git://git.kernel.dk/linux-block:
        lightnvm: fix memory leak when submit fails
        nvme-pci: fix error unwind in nvme_map_data
        nvme-pci: refactor nvme_unmap_data
        md: Set prev_flush_start and flush_bio in an atomic way
        nvmet: set right status on error in id-ns handler
        nvme-pci: allow use of cmb on v1.4 controllers
        nvme-tcp: avoid request double completion for concurrent nvme_tcp_timeout
        nvme-rdma: avoid request double completion for concurrent nvme_rdma_timeout
        nvme: check the PRINFO bit before deciding the host buffer length
      a692a610
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 51306806
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "18 patches.
      
        Subsystems affected by this patch series: mm (pagealloc, memcg, kasan,
        memory-failure, and highmem), ubsan, proc, and MAINTAINERS"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        MAINTAINERS: add a couple more files to the Clang/LLVM section
        proc_sysctl: fix oops caused by incorrect command parameters
        powerpc/mm/highmem: use __set_pte_at() for kmap_local()
        mips/mm/highmem: use set_pte() for kmap_local()
        mm/highmem: prepare for overriding set_pte_at()
        sparc/mm/highmem: flush cache and TLB
        mm: fix page reference leak in soft_offline_page()
        ubsan: disable unsigned-overflow check for i386
        kasan, mm: fix resetting page_alloc tags for HW_TAGS
        kasan, mm: fix conflicts with init_on_alloc/free
        kasan: fix HW_TAGS boot parameters
        kasan: fix incorrect arguments passing in kasan_add_zero_shadow
        kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow
        mm: fix numa stats for thp migration
        mm: memcg: fix memcg file_dirty numa stat
        mm: memcg/slab: optimize objcg stock draining
        mm: fix initialization of struct page for holes in memory layout
        x86/setup: don't remove E820_TYPE_RAM for pfn 0
      51306806
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · fdbc80bd
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are some small char/misc driver fixes for 5.11-rc5:
      
         - habanalabs driver fixes
      
         - phy driver fixes
      
         - hwtracing driver fixes
      
         - rtsx cardreader driver fix
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'char-misc-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        misc: rtsx: init value of aspm_enabled
        habanalabs: disable FW events on device removal
        habanalabs: fix backward compatibility of idle check
        habanalabs: zero pci counters packet before submit to FW
        intel_th: pci: Add Alder Lake-P support
        stm class: Fix module init return on allocation failure
        habanalabs: prevent soft lockup during unmap
        habanalabs: fix reset process in case of failures
        habanalabs: fix dma_addr passed to dma_mmap_coherent
        phy: mediatek: allow compile-testing the dsi phy
        phy: cpcap-usb: Fix warning for missing regulator_disable
        PHY: Ingenic: fix unconditional build of phy-ingenic-usb
      fdbc80bd
    • Linus Torvalds's avatar
      Merge tag 'driver-core-5.11-rc5' of... · 443d1129
      Linus Torvalds authored
      Merge tag 'driver-core-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core fixes from Greg KH:
       "Here are some small driver core fixes for 5.11-rc5 that resolve some
        reported problems:
      
         - revert of a -rc1 patch that was causing problems with some machines
      
         - device link device name collision problem fix (busses only have to
           name devices unique to their bus, not unique to all busses)
      
         - kernfs splice bugfixes to resolve firmware loading problems for
           Qualcomm systems.
      
         - other tiny driver core fixes for minor issues reported.
      
        All of these have been in linux-next with no reported problems"
      
      * tag 'driver-core-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        driver core: Fix device link device name collision
        driver core: Extend device_is_dependent()
        kernfs: wire up ->splice_read and ->splice_write
        kernfs: implement ->write_iter
        kernfs: implement ->read_iter
        Revert "driver core: Reorder devices on successful probe"
        Driver core: platform: Add extra error check in devm_platform_get_irqs_affinity()
        drivers core: Free dma_range_map when driver probe failed
      443d1129
    • Linus Torvalds's avatar
      Merge tag 'staging-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · 832bceef
      Linus Torvalds authored
      Pull staging/IIO driver fixes from Greg KH:
       "Here are some IIO driver fixes for 5.11-rc5 to resolve some reported
        problems.
      
        Nothing major, just a few small fixes, all of these have been in
        linux-next for a while and full details are in the shortlog"
      
      * tag 'staging-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        iio: sx9310: Fix semtech,avg-pos-strength setting when > 16
        iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread
        iio: ad5504: Fix setting power-down state
        counter:ti-eqep: remove floor
        drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c
        iio: adc: ti_am335x_adc: remove omitted iio_kfifo_free()
        dt-bindings: iio: accel: bma255: Fix bmc150/bmi055 compatible
        iio: sx9310: Off by one in sx9310_read_thresh()
      832bceef
    • Linus Torvalds's avatar
      Merge tag 'tty-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 4da81fa2
      Linus Torvalds authored
      Pull tty/serial fixes from Greg KH:
       "Here are three small tty/serial fixes for 5.11-rc5 to resolve reported
        problems:
      
         - two patches to fix up writing to ttys with splice
      
         - mvebu-uart driver fix for reported problem
      
        All of these have been in linux-next with no reported problems"
      
      * tag 'tty-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        tty: fix up hung_up_tty_write() conversion
        tty: implement write_iter
        serial: mvebu-uart: fix tx lost characters at power off
      4da81fa2
    • Linus Torvalds's avatar
      Merge tag 'usb-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 8f3bfd21
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are some small USB driver fixes for 5.11-rc5.  They resolve:
      
         - xhci issues for some reported problems
      
         - ehci driver issue for one specific device
      
         - USB gadget fixes for some reported problems
      
         - cdns3 driver fixes for issues reported
      
         - MAINTAINERS file update
      
         - thunderbolt minor fix
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'usb-5.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        usb: bdc: Make bdc pci driver depend on BROKEN
        xhci: tegra: Delay for disabling LFPS detector
        xhci: make sure TRB is fully written before giving it to the controller
        usb: udc: core: Use lock when write to soft_connect
        USB: gadget: dummy-hcd: Fix errors in port-reset handling
        usb: gadget: aspeed: fix stop dma register setting.
        USB: ehci: fix an interrupt calltrace error
        ehci: fix EHCI host controller initialization sequence
        MAINTAINERS: update Peter Chen's email address
        thunderbolt: Drop duplicated 0x prefix from format string
        MAINTAINERS: Update address for Cadence USB3 driver
        usb: cdns3: imx: improve driver .remove API
        usb: cdns3: imx: fix can't create core device the second time issue
        usb: cdns3: imx: fix writing read-only memory issue
      8f3bfd21
    • Nathan Chancellor's avatar
      MAINTAINERS: add a couple more files to the Clang/LLVM section · e82d891a
      Nathan Chancellor authored
      
      
      The K: entry should ensure that Nick and I always get CC'd on patches that
      touch these files but it is better to be explicit rather than implicit.
      
      Link: https://lkml.kernel.org/r/20210114004059.2129921-1-natechancellor@gmail.com
      Signed-off-by: default avatarNathan Chancellor <natechancellor@gmail.com>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e82d891a
    • Xiaoming Ni's avatar
      proc_sysctl: fix oops caused by incorrect command parameters · 697edcb0
      Xiaoming Ni authored
      The process_sysctl_arg() does not check whether val is empty before
      invoking strlen(val).  If the command line parameter () is incorrectly
      configured and val is empty, oops is triggered.
      
      For example:
        "hung_task_panic=1" is incorrectly written as "hung_task_panic", oops is
        triggered. The call stack is as follows:
          Kernel command line: .... hung_task_panic
          ......
          Call trace:
          __pi_strlen+0x10/0x98
          parse_args+0x278/0x344
          do_sysctl_args+0x8c/0xfc
          kernel_init+0x5c/0xf4
          ret_from_fork+0x10/0x30
      
      To fix it, check whether "val" is empty when "phram" is a sysctl field.
      Error codes are returned in the failure branch, and error logs are
      generated by parse_args().
      
      Link: https://lkml.kernel.org/r/20210118133029.28580-1-nixiaoming@huawei.com
      Fixes: 3db978d4
      
       ("kernel/sysctl: support setting sysctl parameters from kernel command line")
      Signed-off-by: default avatarXiaoming Ni <nixiaoming@huawei.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Luis Chamberlain <mcgrof@kernel.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Iurii Zaikin <yzaikin@google.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: <stable@vger.kernel.org>	[5.8+]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      697edcb0
    • Thomas Gleixner's avatar
      powerpc/mm/highmem: use __set_pte_at() for kmap_local() · 78502582
      Thomas Gleixner authored
      The original PowerPC highmem mapping function used __set_pte_at() to
      denote that the mapping is per CPU.  This got lost with the conversion
      to the generic implementation.
      
      Override the default map function.
      
      Link: https://lkml.kernel.org/r/20210112170411.281464308@linutronix.de
      Fixes: 47da42b2
      
       ("powerpc/mm/highmem: Switch to generic kmap atomic")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Andreas Larsson <andreas@gaisler.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Paul Cercueil <paul@crapouillou.net>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      78502582
    • Thomas Gleixner's avatar
      mips/mm/highmem: use set_pte() for kmap_local() · 8c0d5d78
      Thomas Gleixner authored
      set_pte_at() on MIPS invokes update_cache() which might recurse into
      kmap_local().
      
      Use set_pte() like the original MIPS highmem implementation did.
      
      Link: https://lkml.kernel.org/r/20210112170411.187513575@linutronix.de
      Fixes: a4c33e83
      
       ("mips/mm/highmem: Switch to generic kmap atomic")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reported-by: default avatarPaul Cercueil <paul@crapouillou.net>
      Reported-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Acked-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Andreas Larsson <andreas@gaisler.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8c0d5d78
    • Thomas Gleixner's avatar
      mm/highmem: prepare for overriding set_pte_at() · a1dce7fd
      Thomas Gleixner authored
      
      
      The generic kmap_local() map function uses set_pte_at(), but MIPS requires
      set_pte() and PowerPC wants __set_pte_at().
      
      Provide arch_kmap_local_set_pte() and default it to set_pte_at().
      
      Link: https://lkml.kernel.org/r/20210112170411.056306194@linutronix.de
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Andreas Larsson <andreas@gaisler.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Paul Cercueil <paul@crapouillou.net>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a1dce7fd
    • Thomas Gleixner's avatar
      sparc/mm/highmem: flush cache and TLB · f99e0237
      Thomas Gleixner authored
      Patch series "mm/highmem: Fix fallout from generic kmap_local
      conversions".
      
      The kmap_local conversion wreckaged sparc, mips and powerpc as it missed
      some of the details in the original implementation.
      
      This patch (of 4):
      
      The recent conversion to the generic kmap_local infrastructure failed to
      assign the proper pre/post map/unmap flush operations for sparc.
      
      Sparc requires cache flush before map/unmap and tlb flush afterwards.
      
      Link: https://lkml.kernel.org/r/20210112170136.078559026@linutronix.de
      Link: https://lkml.kernel.org/r/20210112170410.905976187@linutronix.de
      Fixes: 3293efa9
      
       ("sparc/mm/highmem: Switch to generic kmap atomic")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reported-by: default avatarAndreas Larsson <andreas@gaisler.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Paul Cercueil <paul@crapouillou.net>
      Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f99e0237
    • Dan Williams's avatar
      mm: fix page reference leak in soft_offline_page() · dad4e5b3
      Dan Williams authored
      The conversion to move pfn_to_online_page() internal to
      soft_offline_page() missed that the get_user_pages() reference taken by
      the madvise() path needs to be dropped when pfn_to_online_page() fails.
      
      Note the direct sysfs-path to soft_offline_page() does not perform a
      get_user_pages() lookup.
      
      When soft_offline_page() is handed a pfn_valid() && !pfn_to_online_page()
      pfn the kernel hangs at dax-device shutdown due to a leaked reference.
      
      Link: https://lkml.kernel.org/r/161058501210.1840162.8108917599181157327.stgit@dwillia2-desk3.amr.corp.intel.com
      Fixes: feec24a6
      
       ("mm, soft-offline: convert parameter to pfn")
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reviewed-by: default avatarOscar Salvador <osalvador@suse.de>
      Reviewed-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Qian Cai <cai@lca.pw>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dad4e5b3
    • Arnd Bergmann's avatar
      ubsan: disable unsigned-overflow check for i386 · 251b5497
      Arnd Bergmann authored
      Building ubsan kernels even for compile-testing introduced these
      warnings in my randconfig environment:
      
        crypto/blake2b_generic.c:98:13: error: stack frame size of 9636 bytes in function 'blake2b_compress' [-Werror,-Wframe-larger-than=]
        static void blake2b_compress(struct blake2b_state *S,
      
        crypto/sha512_generic.c:151:13: error: stack frame size of 1292 bytes in function 'sha512_generic_block_fn' [-Werror,-Wframe-larger-than=]
        static void sha512_generic_block_fn(struct sha512_state *sst, u8 const *src,
      
        lib/crypto/curve25519-fiat32.c:312:22: error: stack frame size of 2180 bytes in function 'fe_mul_impl' [-Werror,-Wframe-larger-than=]
        static noinline void fe_mul_impl(u32 out[10], const u32 in1[10], const u32 in2[10])
      
        lib/crypto/curve25519-fiat32.c:444:22: error: stack frame size of 1588 bytes in function 'fe_sqr_impl' [-Werror,-Wframe-larger-than=]
        static noinline void fe_sqr_impl(u32 out[10], const u32 in1[10])
      
      Further testing showed that this is caused by
      -fsanitize=unsigned-integer-overflow, but is isolated to the 32-bit x86
      architecture.
      
      The one in blake2b immediately overflows the 8KB stack area
      architectures, so better ensure this never happens by disabling the
      option for 32-bit x86.
      
      Link: https://lkml.kernel.org/r/20210112202922.2454435-1-arnd@kernel.org
      Link: https://lore.kernel.org/lkml/20201230154749.746641-1-arnd@kernel.org/
      Fixes: d0a3ac54
      
       ("ubsan: enable for all*config builds")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Marco Elver <elver@google.com>
      Cc: George Popescu <georgepope@android.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      251b5497
    • Andrey Konovalov's avatar
      kasan, mm: fix resetting page_alloc tags for HW_TAGS · acb35b17
      Andrey Konovalov authored
      A previous commit added resetting KASAN page tags to
      kernel_init_free_pages() to avoid false-positives due to accesses to
      metadata with the hardware tag-based mode.
      
      That commit did reset page tags before the metadata access, but didn't
      restore them after.  As the result, KASAN fails to detect bad accesses
      to page_alloc allocations on some configurations.
      
      Fix this by recovering the tag after the metadata access.
      
      Link: https://lkml.kernel.org/r/02b5bcd692e912c27d484030f666b350ad7e4ae4.1611074450.git.andreyknvl@google.com
      Fixes: aa1ef4d7
      
       ("kasan, mm: reset tags when accessing metadata")
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Marco Elver <elver@google.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Peter Collingbourne <pcc@google.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      acb35b17
    • Andrey Konovalov's avatar
      kasan, mm: fix conflicts with init_on_alloc/free · ce5716c6
      Andrey Konovalov authored
      A few places where SLUB accesses object's data or metadata were missed
      in a previous patch.  This leads to false positives with hardware
      tag-based KASAN when bulk allocations are used with init_on_alloc/free.
      
      Fix the false-positives by resetting pointer tags during these accesses.
      
      (The kasan_reset_tag call is removed from slab_alloc_node, as it's added
       into maybe_wipe_obj_freeptr.)
      
      Link: https://linux-review.googlesource.com/id/I50dd32838a666e173fe06c3c5c766f2c36aae901
      Link: https://lkml.kernel.org/r/093428b5d2ca8b507f4a79f92f9929b35f7fada7.1610731872.git.andreyknvl@google.com
      Fixes: aa1ef4d7
      
       ("kasan, mm: reset tags when accessing metadata")
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Marco Elver <elver@google.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Peter Collingbourne <pcc@google.com>
      Cc: Evgenii Stepanov <eugenis@google.com>
      Cc: Branislav Rankov <Branislav.Rankov@arm.com>
      Cc: Kevin Brodsky <kevin.brodsky@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ce5716c6