1. 12 Nov, 2022 1 commit
    • Gavin Shan's avatar
      KVM: Push dirty information unconditionally to backup bitmap · c57351a7
      Gavin Shan authored
      In mark_page_dirty_in_slot(), we bail out when no running vcpu exists
      and a running vcpu context is strictly required by architecture. It may
      cause backwards compatible issue. Currently, saving vgic/its tables is
      the only known case where no running vcpu context is expected. We may
      have other unknown cases where no running vcpu context exists and it's
      reported by the warning message and we bail out without pushing the
      dirty information to the backup bitmap. For this, the application is
      going to enable the backup bitmap for the unknown cases. However, the
      dirty information can't be pushed to the backup bitmap even though the
      backup bitmap is enabled for those unknown cases in the application,
      until the unknown cases are added to the allowed list of non-running
      vcpu context with extra code changes to the host kernel.
      
      In order to make the new application, where the backup bitmap has been
      enabled, to work with the unchanged host, we continue to push the dirty
      information to the backup bitmap instead of bailing out early. With the
      added check on 'memslot->dirty_bitmap' to mark_page_dirty_in_slot(), the
      kernel crash is avoided silently by the combined conditions: no running
      vcpu context, kvm_arch_allow_write_without_running_vcpu() returns 'true',
      and the backup bitmap (KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP) isn't enabled
      yet.
      Suggested-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221112094322.21911-1-gshan@redhat.com
      c57351a7
  2. 10 Nov, 2022 8 commits
    • Gavin Shan's avatar
      KVM: selftests: Automate choosing dirty ring size in dirty_log_test · dc6df7d4
      Gavin Shan authored
      In the dirty ring case, we rely on vcpu exit due to full dirty ring
      state. On ARM64 system, there are 4096 host pages when the host
      page size is 64KB. In this case, the vcpu never exits due to the
      full dirty ring state. The similar case is 4KB page size on host
      and 64KB page size on guest. The vcpu corrupts same set of host
      pages, but the dirty page information isn't collected in the main
      thread. This leads to infinite loop as the following log shows.
      
        # ./dirty_log_test -M dirty-ring -c 65536 -m 5
        Setting log mode to: 'dirty-ring'
        Test iterations: 32, interval: 10 (ms)
        Testing guest mode: PA-bits:40,  VA-bits:48,  4K pages
        guest physical test memory offset: 0xffbffe0000
        vcpu stops because vcpu is kicked out...
        Notifying vcpu to continue
        vcpu continues now.
        Iteration 1 collected 576 pages
        <No more output afterwards>
      
      Fix the issue by automatically choosing the best dirty ring size,
      to ensure vcpu exit due to full dirty ring state. The option '-c'
      becomes a hint to the dirty ring count, instead of the value of it.
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-8-gshan@redhat.com
      dc6df7d4
    • Gavin Shan's avatar
      KVM: selftests: Clear dirty ring states between two modes in dirty_log_test · 7167190d
      Gavin Shan authored
      There are two states, which need to be cleared before next mode
      is executed. Otherwise, we will hit failure as the following messages
      indicate.
      
      - The variable 'dirty_ring_vcpu_ring_full' shared by main and vcpu
        thread. It's indicating if the vcpu exit due to full ring buffer.
        The value can be carried from previous mode (VM_MODE_P40V48_4K) to
        current one (VM_MODE_P40V48_64K) when VM_MODE_P40V48_16K isn't
        supported.
      
      - The current ring buffer index needs to be reset before next mode
        (VM_MODE_P40V48_64K) is executed. Otherwise, the stale value is
        carried from previous mode (VM_MODE_P40V48_4K).
      
        # ./dirty_log_test -M dirty-ring
        Setting log mode to: 'dirty-ring'
        Test iterations: 32, interval: 10 (ms)
        Testing guest mode: PA-bits:40,  VA-bits:48,  4K pages
        guest physical test memory offset: 0xffbfffc000
          :
        Dirtied 995328 pages
        Total bits checked: dirty (1012434), clear (7114123), track_next (966700)
        Testing guest mode: PA-bits:40,  VA-bits:48, 64K pages
        guest physical test memory offset: 0xffbffc0000
        vcpu stops because vcpu is kicked out...
        vcpu continues now.
        Notifying vcpu to continue
        Iteration 1 collected 0 pages
        vcpu stops because dirty ring is full...
        vcpu continues now.
        vcpu stops because dirty ring is full...
        vcpu continues now.
        vcpu stops because dirty ring is full...
        ==== Test Assertion Failure ====
        dirty_log_test.c:369: cleared == count
        pid=10541 tid=10541 errno=22 - Invalid argument
           1	0x0000000000403087: dirty_ring_collect_dirty_pages at dirty_log_test.c:369
           2	0x0000000000402a0b: log_mode_collect_dirty_pages at dirty_log_test.c:492
           3	 (inlined by) run_test at dirty_log_test.c:795
           4	 (inlined by) run_test at dirty_log_test.c:705
           5	0x0000000000403a37: for_each_guest_mode at guest_modes.c:100
           6	0x0000000000401ccf: main at dirty_log_test.c:938
           7	0x0000ffff9ecd279b: ?? ??:0
           8	0x0000ffff9ecd286b: ?? ??:0
           9	0x0000000000401def: _start at ??:?
        Reset dirty pages (0) mismatch with collected (35566)
      
      Fix the issues by clearing 'dirty_ring_vcpu_ring_full' and the ring
      buffer index before next new mode is to be executed.
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-7-gshan@redhat.com
      7167190d
    • Gavin Shan's avatar
      KVM: selftests: Use host page size to map ring buffer in dirty_log_test · a737f5ff
      Gavin Shan authored
      In vcpu_map_dirty_ring(), the guest's page size is used to figure out
      the offset in the virtual area. It works fine when we have same page
      sizes on host and guest. However, it fails when the page sizes on host
      and guest are different on arm64, like below error messages indicates.
      
        # ./dirty_log_test -M dirty-ring -m 7
        Setting log mode to: 'dirty-ring'
        Test iterations: 32, interval: 10 (ms)
        Testing guest mode: PA-bits:40,  VA-bits:48, 64K pages
        guest physical test memory offset: 0xffbffc0000
        vcpu stops because vcpu is kicked out...
        Notifying vcpu to continue
        vcpu continues now.
        ==== Test Assertion Failure ====
        lib/kvm_util.c:1477: addr == MAP_FAILED
        pid=9000 tid=9000 errno=0 - Success
        1  0x0000000000405f5b: vcpu_map_dirty_ring at kvm_util.c:1477
        2  0x0000000000402ebb: dirty_ring_collect_dirty_pages at dirty_log_test.c:349
        3  0x00000000004029b3: log_mode_collect_dirty_pages at dirty_log_test.c:478
        4  (inlined by) run_test at dirty_log_test.c:778
        5  (inlined by) run_test at dirty_log_test.c:691
        6  0x0000000000403a57: for_each_guest_mode at guest_modes.c:105
        7  0x0000000000401ccf: main at dirty_log_test.c:921
        8  0x0000ffffb06ec79b: ?? ??:0
        9  0x0000ffffb06ec86b: ?? ??:0
        10 0x0000000000401def: _start at ??:?
        Dirty ring mapped private
      
      Fix the issue by using host's page size to map the ring buffer.
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-6-gshan@redhat.com
      a737f5ff
    • Gavin Shan's avatar
      KVM: arm64: Enable ring-based dirty memory tracking · 9cb1096f
      Gavin Shan authored
      Enable ring-based dirty memory tracking on ARM64:
      
        - Enable CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL.
      
        - Enable CONFIG_NEED_KVM_DIRTY_RING_WITH_BITMAP.
      
        - Set KVM_DIRTY_LOG_PAGE_OFFSET for the ring buffer's physical page
          offset.
      
        - Add ARM64 specific kvm_arch_allow_write_without_running_vcpu() to
          keep the site of saving vgic/its tables out of the no-running-vcpu
          radar.
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-5-gshan@redhat.com
      9cb1096f
    • Gavin Shan's avatar
      KVM: Support dirty ring in conjunction with bitmap · 86bdf3eb
      Gavin Shan authored
      ARM64 needs to dirty memory outside of a VCPU context when VGIC/ITS is
      enabled. It's conflicting with that ring-based dirty page tracking always
      requires a running VCPU context.
      
      Introduce a new flavor of dirty ring that requires the use of both VCPU
      dirty rings and a dirty bitmap. The expectation is that for non-VCPU
      sources of dirty memory (such as the VGIC/ITS on arm64), KVM writes to
      the dirty bitmap. Userspace should scan the dirty bitmap before migrating
      the VM to the target.
      
      Use an additional capability to advertise this behavior. The newly added
      capability (KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP) can't be enabled before
      KVM_CAP_DIRTY_LOG_RING_ACQ_REL on ARM64. In this way, the newly added
      capability is treated as an extension of KVM_CAP_DIRTY_LOG_RING_ACQ_REL.
      Suggested-by: default avatarMarc Zyngier <maz@kernel.org>
      Suggested-by: default avatarPeter Xu <peterx@redhat.com>
      Co-developed-by: default avatarOliver Upton <oliver.upton@linux.dev>
      Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Acked-by: default avatarPeter Xu <peterx@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-4-gshan@redhat.com
      86bdf3eb
    • Gavin Shan's avatar
      KVM: Move declaration of kvm_cpu_dirty_log_size() to kvm_dirty_ring.h · e8a18565
      Gavin Shan authored
      Not all architectures like ARM64 need to override the function. Move
      its declaration to kvm_dirty_ring.h to avoid the following compiling
      warning on ARM64 when the feature is enabled.
      
        arch/arm64/kvm/../../../virt/kvm/dirty_ring.c:14:12:        \
        warning: no previous prototype for 'kvm_cpu_dirty_log_size' \
        [-Wmissing-prototypes]                                      \
        int __weak kvm_cpu_dirty_log_size(void)
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-3-gshan@redhat.com
      e8a18565
    • Gavin Shan's avatar
      KVM: x86: Introduce KVM_REQ_DIRTY_RING_SOFT_FULL · cf87ac73
      Gavin Shan authored
      The VCPU isn't expected to be runnable when the dirty ring becomes soft
      full, until the dirty pages are harvested and the dirty ring is reset
      from userspace. So there is a check in each guest's entrace to see if
      the dirty ring is soft full or not. The VCPU is stopped from running if
      its dirty ring has been soft full. The similar check will be needed when
      the feature is going to be supported on ARM64. As Marc Zyngier suggested,
      a new event will avoid pointless overhead to check the size of the dirty
      ring ('vcpu->kvm->dirty_ring_size') in each guest's entrance.
      
      Add KVM_REQ_DIRTY_RING_SOFT_FULL. The event is raised when the dirty ring
      becomes soft full in kvm_dirty_ring_push(). The event is only cleared in
      the check, done in the newly added helper kvm_dirty_ring_check_request().
      Since the VCPU is not runnable when the dirty ring becomes soft full, the
      KVM_REQ_DIRTY_RING_SOFT_FULL event is always set to prevent the VCPU from
      running until the dirty pages are harvested and the dirty ring is reset by
      userspace.
      
      kvm_dirty_ring_soft_full() becomes a private function with the newly added
      helper kvm_dirty_ring_check_request(). The alignment for the various event
      definitions in kvm_host.h is changed to tab character by the way. In order
      to avoid using 'container_of()', the argument @ring is replaced by @vcpu
      in kvm_dirty_ring_push().
      
      Link: https://lore.kernel.org/kvmarm/87lerkwtm5.wl-maz@kernel.orgSuggested-by: default avatarMarc Zyngier <maz@kernel.org>
      Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
      Reviewed-by: default avatarPeter Xu <peterx@redhat.com>
      Reviewed-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20221110104914.31280-2-gshan@redhat.com
      cf87ac73
    • Marc Zyngier's avatar
      Merge tag 'kvmarm-fixes-6.1-3' into kvm-arm64/dirty-ring · 590925a1
      Marc Zyngier authored
      KVM/arm64 fixes for 6.1, take #3
      
      - Fix the pKVM stage-1 walker erronously using the stage-2 accessor
      
      - Correctly convert vcpu->kvm to a hyp pointer when generating
        an exception in a nVHE+MTE configuration
      
      - Check that KVM_CAP_DIRTY_LOG_* are valid before enabling them
      
      - Fix SMPRI_EL1/TPIDR2_EL0 trapping on VHE
      
      - Document the boot requirements for FGT when entering the kernel
        at EL1
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      590925a1
  3. 01 Nov, 2022 2 commits
  4. 31 Oct, 2022 1 commit
  5. 30 Oct, 2022 13 commits
    • Linus Torvalds's avatar
      Linux 6.1-rc3 · 30a0b95b
      Linus Torvalds authored
      30a0b95b
    • Linus Torvalds's avatar
      Merge tag 'fbdev-for-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev · b72018ab
      Linus Torvalds authored
      Pull fbdev fixes from Helge Deller:
       "A use-after-free bugfix in the smscufx driver and various minor error
        path fixes, smaller build fixes, sysfs fixes and typos in comments in
        the stifb, sisfb, da8xxfb, xilinxfb, sm501fb, gbefb and cyber2000fb
        drivers"
      
      * tag 'fbdev-for-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev:
        fbdev: cyber2000fb: fix missing pci_disable_device()
        fbdev: sisfb: use explicitly signed char
        fbdev: smscufx: Fix several use-after-free bugs
        fbdev: xilinxfb: Make xilinxfb_release() return void
        fbdev: sisfb: fix repeated word in comment
        fbdev: gbefb: Convert sysfs snprintf to sysfs_emit
        fbdev: sm501fb: Convert sysfs snprintf to sysfs_emit
        fbdev: stifb: Fall back to cfb_fillrect() on 32-bit HCRX cards
        fbdev: da8xx-fb: Fix error handling in .remove()
        fbdev: MIPS supports iomem addresses
      b72018ab
    • Linus Torvalds's avatar
      Merge tag 'char-misc-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 9f127546
      Linus Torvalds authored
      Pull char/misc fixes from Greg KH:
       "Some small driver fixes for 6.1-rc3.  They include:
      
         - iio driver bugfixes
      
         - counter driver bugfixes
      
         - coresight bugfixes, including a revert and then a second fix to get
           it right.
      
        All of these have been in linux-next with no reported problems"
      
      * tag 'char-misc-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (21 commits)
        misc: sgi-gru: use explicitly signed char
        coresight: cti: Fix hang in cti_disable_hw()
        Revert "coresight: cti: Fix hang in cti_disable_hw()"
        counter: 104-quad-8: Fix race getting function mode and direction
        counter: microchip-tcb-capture: Handle Signal1 read and Synapse
        coresight: cti: Fix hang in cti_disable_hw()
        coresight: Fix possible deadlock with lock dependency
        counter: ti-ecap-capture: fix IS_ERR() vs NULL check
        counter: Reduce DEFINE_COUNTER_ARRAY_POLARITY() to defining counter_array
        iio: bmc150-accel-core: Fix unsafe buffer attributes
        iio: adxl367: Fix unsafe buffer attributes
        iio: adxl372: Fix unsafe buffer attributes
        iio: at91-sama5d2_adc: Fix unsafe buffer attributes
        iio: temperature: ltc2983: allocate iio channels once
        tools: iio: iio_utils: fix digit calculation
        iio: adc: stm32-adc: fix channel sampling time init
        iio: adc: mcp3911: mask out device ID in debug prints
        iio: adc: mcp3911: use correct id bits
        iio: adc: mcp3911: return proper error code on failure to allocate trigger
        iio: adc: mcp3911: fix sizeof() vs ARRAY_SIZE() bug
        ...
      9f127546
    • Linus Torvalds's avatar
      Merge tag 'usb-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · c4d25ce6
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "A few small USB fixes for 6.1-rc3. Include in here are:
      
         - MAINTAINERS update, including a big one for the USB gadget
           subsystem. Many thanks to Felipe for all of the years of hard work
           he has done on this codebase, it was greatly appreciated.
      
         - dwc3 driver fixes for reported problems.
      
         - xhci driver fixes for reported problems.
      
         - typec driver fixes for minor issues
      
         - uvc gadget driver change, and then revert as it wasn't relevant for
           6.1-final, as it is a new feature and people are still reviewing
           and modifying it.
      
        All of these have been in the linux-next tree with no reported issues"
      
      * tag 'usb-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        usb: dwc3: gadget: Don't set IMI for no_interrupt
        usb: dwc3: gadget: Stop processing more requests on IMI
        Revert "usb: gadget: uvc: limit isoc_sg to super speed gadgets"
        xhci: Remove device endpoints from bandwidth list when freeing the device
        xhci-pci: Set runtime PM as default policy on all xHC 1.2 or later devices
        xhci: Add quirk to reset host back to default state at shutdown
        usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 controller
        usb: dwc3: st: Rely on child's compatible instead of name
        usb: gadget: uvc: limit isoc_sg to super speed gadgets
        usb: bdc: change state when port disconnected
        usb: typec: ucsi: acpi: Implement resume callback
        usb: typec: ucsi: Check the connection on resume
        usb: gadget: aspeed: Fix probe regression
        usb: gadget: uvc: fix sg handling during video encode
        usb: gadget: uvc: fix sg handling in error case
        usb: gadget: uvc: fix dropped frame after missed isoc
        usb: dwc3: gadget: Don't delay End Transfer on delayed_status
        usb: dwc3: Don't switch OTG -> peripheral if extcon is present
        MAINTAINERS: Update maintainers for broadcom USB
        MAINTAINERS: move USB gadget and phy entries under the main USB entry
      c4d25ce6
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · ef3c0949
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
      
       - convert gpio-tegra to using an immutable irqchip
      
       - MAINTAINERS update
      
      * tag 'gpio-fixes-for-v6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        MAINTAINERS: Change myself to a maintainer
        gpio: tegra: Convert to immutable irq chip
      ef3c0949
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v6.1_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 43476605
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Rename a perf memory level event define to denote it is of CXL type
      
       - Add Alder and Raptor Lakes support to RAPL
      
       - Make sure raw sample data is output with tracepoints
      
      * tag 'perf_urgent_for_v6.1_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/mem: Rename PERF_MEM_LVLNUM_EXTN_MEM to PERF_MEM_LVLNUM_CXL
        perf/x86/rapl: Add support for Intel Raptor Lake
        perf/x86/rapl: Add support for Intel AlderLake-N
        perf: Fix missing raw data on tracepoint events
      43476605
    • Linus Torvalds's avatar
      Merge tag 'loongarch-fixes-6.1-1' of... · c96bb958
      Linus Torvalds authored
      Merge tag 'loongarch-fixes-6.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
      
      Pull LoongArch fixes from Huacai Chen:
       "Remove unused kernel stack padding, fix some build errors/warnings and
        two bugs in laptop platform driver"
      
      * tag 'loongarch-fixes-6.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson:
        platform/loongarch: laptop: Fix possible UAF and simplify generic_acpi_laptop_init()
        platform/loongarch: laptop: Adjust resume order for loongson_hotkey_resume()
        LoongArch: BPF: Avoid declare variables in switch-case
        LoongArch: Use flexible-array member instead of zero-length array
        LoongArch: Remove unused kernel stack padding
      c96bb958
    • Linus Torvalds's avatar
      Merge tag '6.1-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 28b7bd4a
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
      
       - use after free fix for reconnect race
      
       - two memory leak fixes
      
      * tag '6.1-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix use-after-free caused by invalid pointer `hostname`
        cifs: Fix pages leak when writedata alloc failed in cifs_write_from_iter()
        cifs: Fix pages array leak when writedata alloc failed in cifs_writedata_alloc()
      28b7bd4a
    • Linus Torvalds's avatar
      Merge tag 'random-6.1-rc3-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random · 882ad2a2
      Linus Torvalds authored
      Pull random number generator fix from Jason Donenfeld:
       "One fix from Jean-Philippe Brucker, addressing a regression in which
        early boot code on ARM64 would use the non-_early variant of the
        arch_get_random family of functions, resulting in the architectural
        random number generator appearing unavailable during that early phase
        of boot.
      
        The fix simply changes arch_get_random*() to arch_get_random*_early().
      
        This distinction between these two functions is a bit of an old wart
        I'm not a fan of, and for 6.2 I'll see if I can make obsolete the
        _early variant, so that one function does the right thing in all
        contexts without overhead"
      
      * tag 'random-6.1-rc3-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random:
        random: use arch_get_random*_early() in random_init()
      882ad2a2
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 83633ed7
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Varions small  fixes, all  in drivers.
      
        Some of these arrived during the merge window and got held over to
        make sure of testing on the -rc tree.
      
        The biggest change is for standards conformance in the target driver,
        closely followed by a set of bug fixes in megaraid_sas"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (21 commits)
        scsi: ufs: core: Fix typo in comment
        scsi: mpi3mr: Select CONFIG_SCSI_SAS_ATTRS
        scsi: ufs: core: Fix typo for register name in comments
        scsi: pm80xx: Display proc_name in sysfs
        scsi: ufs: core: Fix the error log in ufshcd_query_flag_retry()
        scsi: ufs: core: Remove unneeded casts from void *
        scsi: lpfc: Fix spelling mistake "unsolicted" -> "unsolicited"
        scsi: qla2xxx: Use transport-defined speed mask for supported_speeds
        scsi: target: iblock: Fold iblock_emulate_read_cap_with_block_size() into iblock_get_blocks()
        scsi: qla2xxx: Fix serialization of DCBX TLV data request
        scsi: ufs: qcom: Remove redundant dev_err() call
        scsi: megaraid_sas: Move megasas_dbg_lvl init to megasas_init()
        scsi: megaraid_sas: Remove unnecessary memset()
        scsi: megaraid_sas: Simplify megasas_update_device_list
        scsi: megaraid_sas: Correct an error message
        scsi: megaraid_sas: Correct value passed to scsi_device_lookup()
        scsi: target: core: UA on all LUNs after reset
        scsi: target: core: New key must be used for moved PR
        scsi: target: core: Abort all preempted regs if requested
        scsi: target: core: Fix memory leak in preempt_and_abort
        ...
      83633ed7
    • Linus Torvalds's avatar
      Merge tag 'block-6.1-2022-10-28' of git://git.kernel.dk/linux · c6e0e874
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request via Christoph:
            - make the multipath dma alignment match the non-multipath one
              (Keith Busch)
            - fix a bogus use of sg_init_marker() (Nam Cao)
            - fix circulr locking in nvme-tcp (Sagi Grimberg)
      
       - Initialization fix for requests allocated via the special hw queue
         allocator (John)
      
       - Fix for a regression added in this release with the batched
         completions of end_io backed requests (Ming)
      
       - Error handling leak fix for rbd (Yang)
      
       - Error handling leak fix for add_disk() failure (Yu)
      
      * tag 'block-6.1-2022-10-28' of git://git.kernel.dk/linux:
        blk-mq: Properly init requests from blk_mq_alloc_request_hctx()
        blk-mq: don't add non-pt request with ->end_io to batch
        rbd: fix possible memory leak in rbd_sysfs_init()
        nvme-multipath: set queue dma alignment to 3
        nvme-tcp: fix possible circular locking when deleting a controller under memory pressure
        nvme-tcp: replace sg_init_marker() with sg_init_table()
        block: fix memory leak for elevator on add_disk failure
      c6e0e874
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.1-2022-10-28' of git://git.kernel.dk/linux · 4d244327
      Linus Torvalds authored
      Pull io_uring fix from Jens Axboe:
       "Just a fix for a locking regression introduced with the deferred
        task_work running from this merge window"
      
      * tag 'io_uring-6.1-2022-10-28' of git://git.kernel.dk/linux:
        io_uring: unlock if __io_run_local_work locked inside
        io_uring: use io_run_local_work_locked helper
      4d244327
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2022-10-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm · 3c339dbd
      Linus Torvalds authored
      Pull misc hotfixes from Andrew Morton:
       "Eight fix pre-6.0 bugs and the remainder address issues which were
        introduced in the 6.1-rc merge cycle, or address issues which aren't
        considered sufficiently serious to warrant a -stable backport"
      
      * tag 'mm-hotfixes-stable-2022-10-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (23 commits)
        mm: multi-gen LRU: move lru_gen_add_mm() out of IRQ-off region
        lib: maple_tree: remove unneeded initialization in mtree_range_walk()
        mmap: fix remap_file_pages() regression
        mm/shmem: ensure proper fallback if page faults
        mm/userfaultfd: replace kmap/kmap_atomic() with kmap_local_page()
        x86: fortify: kmsan: fix KMSAN fortify builds
        x86: asm: make sure __put_user_size() evaluates pointer once
        Kconfig.debug: disable CONFIG_FRAME_WARN for KMSAN by default
        x86/purgatory: disable KMSAN instrumentation
        mm: kmsan: export kmsan_copy_page_meta()
        mm: migrate: fix return value if all subpages of THPs are migrated successfully
        mm/uffd: fix vma check on userfault for wp
        mm: prep_compound_tail() clear page->private
        mm,madvise,hugetlb: fix unexpected data loss with MADV_DONTNEED on hugetlbfs
        mm/page_isolation: fix clang deadcode warning
        fs/ext4/super.c: remove unused `deprecated_msg'
        ipc/msg.c: fix percpu_counter use after free
        memory tier, sysfs: rename attribute "nodes" to "nodelist"
        MAINTAINERS: git://github.com -> https://github.com for nilfs2
        mm/kmemleak: prevent soft lockup in kmemleak_scan()'s object iteration loops
        ...
      3c339dbd
  6. 29 Oct, 2022 8 commits
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 91562cf9
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix a case of rescheduling with user access unlocked, when preempt is
         enabled.
      
       - A follow-up fix for a recent fix, which could lead to IRQ state
         assertions firing incorrectly.
      
       - Two fixes for lockdep warnings seen when using kfence with the Hash
         MMU.
      
       - Two fixes for preempt warnings seen when using the Hash MMU.
      
       - Two fixes for the VAS coprocessor mechanism used on pseries.
      
       - Prevent building some of our older KVM backends when
         CONTEXT_TRACKING_USER is enabled, as it's known to cause crashes.
      
       - A couple of fixes for issues seen with PMU NMIs.
      
      Thanks to Nicholas Piggin, Guenter Roeck, Frederic Barrat Haren Myneni,
      Sachin Sant, and Samuel Holland.
      
      * tag 'powerpc-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/64s/interrupt: Fix clear of PACA_IRQS_HARD_DIS when returning to soft-masked context
        powerpc/64s/interrupt: Perf NMI should not take normal exit path
        powerpc/64/interrupt: Prevent NMI PMI causing a dangerous warning
        KVM: PPC: BookS PR-KVM and BookE do not support context tracking
        powerpc: Fix reschedule bug in KUAP-unlocked user copy
        powerpc/64s: Fix hash__change_memory_range preemption warning
        powerpc/64s: Disable preemption in hash lazy mmu mode
        powerpc/64s: make linear_map_hash_lock a raw spinlock
        powerpc/64s: make HPTE lock and native_tlbie_lock irq-safe
        powerpc/64s: Add lockdep for HPTE lock
        powerpc/pseries: Use lparcfg to reconfig VAS windows for DLPAR CPU
        powerpc/pseries/vas: Add VAS IRQ primary handler
      91562cf9
    • Yang Yingliang's avatar
      platform/loongarch: laptop: Fix possible UAF and simplify generic_acpi_laptop_init() · d8191691
      Yang Yingliang authored
      Currently the return value of 'sub_driver->init' is not checked. If
      sparse_keymap_setup() called in the init function fails, 'generic_
      inputdev' is freed, then it will lead a UAF when using it in generic_
      acpi_laptop_init(). Fix it by checking the return value and setting
      generic_inputdev to NULL after free, so as to avoid double free it.
      
      The error code in generic_subdriver_init() is always negative, so the
      return of generic_subdriver_init() can be simplified.
      
      Fixes: 6246ed09 ("LoongArch: Add ACPI-based generic laptop driver")
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      d8191691
    • Huacai Chen's avatar
      platform/loongarch: laptop: Adjust resume order for loongson_hotkey_resume() · fbe605ab
      Huacai Chen authored
      Some laptops don't support SW_LID, but still have backlight control,
      move backlight resuming before SW_LID event handling so as to avoid
      backlight mistake due to early return.
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      fbe605ab
    • Huacai Chen's avatar
      LoongArch: BPF: Avoid declare variables in switch-case · bbfddb90
      Huacai Chen authored
      Not all compilers support declare variables in switch-case, so move
      declarations to the beginning of a function. Otherwise we may get such
      build errors:
      
      arch/loongarch/net/bpf_jit.c: In function ‘emit_atomic’:
      arch/loongarch/net/bpf_jit.c:362:3: error: a label can only be part of a statement and a declaration is not a statement
         u8 r0 = regmap[BPF_REG_0];
         ^~
      arch/loongarch/net/bpf_jit.c: In function ‘build_insn’:
      arch/loongarch/net/bpf_jit.c:727:3: error: a label can only be part of a statement and a declaration is not a statement
         u8 t7 = -1;
         ^~
      arch/loongarch/net/bpf_jit.c:778:3: error: a label can only be part of a statement and a declaration is not a statement
         int ret;
         ^~~
      arch/loongarch/net/bpf_jit.c:779:3: error: expected expression before ‘u64’
         u64 func_addr;
         ^~~
      arch/loongarch/net/bpf_jit.c:780:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
         bool func_addr_fixed;
         ^~~~
      arch/loongarch/net/bpf_jit.c:784:11: error: ‘func_addr’ undeclared (first use in this function); did you mean ‘in_addr’?
                &func_addr, &func_addr_fixed);
                 ^~~~~~~~~
                 in_addr
      arch/loongarch/net/bpf_jit.c:784:11: note: each undeclared identifier is reported only once for each function it appears in
      arch/loongarch/net/bpf_jit.c:814:3: error: a label can only be part of a statement and a declaration is not a statement
         u64 imm64 = (u64)(insn + 1)->imm << 32 | (u32)insn->imm;
         ^~~
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      bbfddb90
    • Yushan Zhou's avatar
      LoongArch: Use flexible-array member instead of zero-length array · 4805a13d
      Yushan Zhou authored
      Eliminate the following coccicheck warning:
      ./arch/loongarch/include/asm/ptrace.h:32:15-21: WARNING use flexible-array member instead
      Reviewed-by: default avatarWANG Xuerui <git@xen0n.name>
      Signed-off-by: default avatarYushan Zhou <katrinzhou@tencent.com>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      4805a13d
    • Jinyang He's avatar
      LoongArch: Remove unused kernel stack padding · b40fa75e
      Jinyang He authored
      The current LoongArch kernel stack is padded as if obeying the MIPS o32
      calling convention (32 bytes), signifying the port's MIPS lineage but no
      longer making sense. Remove the padding for clarity.
      Reviewed-by: default avatarWANG Xuerui <git@xen0n.name>
      Signed-off-by: default avatarJinyang He <hejinyang@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      b40fa75e
    • Linus Torvalds's avatar
      Merge tag 's390-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 576e61ce
      Linus Torvalds authored
      Pull s390 fixes from Vasily Gorbik:
      
       - Remove outdated linux390 link from MAINTAINERS
      
       - Add few missing EX_TABLE entries to inline assemblies
      
       - Fix raw data collection for pai_ext PMU
      
       - Add kernel image secure boot trailer for future firmware versions
      
       - Fix out-of-bounds access on cio_ignore free
      
       - Fix memory allocation of mdev_types array in vfio-ap
      
      * tag 's390-6.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/vfio-ap: Fix memory allocation for mdev_types array
        s390/cio: fix out-of-bounds access on cio_ignore free
        s390/pai: fix raw data collection for PMU pai_ext
        s390/boot: add secure boot trailer
        s390/pci: add missing EX_TABLE entries to __pcistg_mio_inuser()/__pcilg_mio_inuser()
        s390/futex: add missing EX_TABLE entry to __futex_atomic_op()
        s390/uaccess: add missing EX_TABLE entries to __clear_user()
        MAINTAINERS: remove outdated linux390 link
      576e61ce
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 283f13d4
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
      
       - A fix for a build warning in the jump_label code
      
       - One of the git://github -> https://github cleanups, for the SiFive
         drivers
      
       - A fix for the kasan initialization code, this still likely warrants
         some cleanups but that's a bigger problem and at least this fixes the
         crashes in the short term
      
       - A pair of fixes for extension support detection on mixed LLVM/GNU
         toolchains
      
       - A fix for a runtime warning in the /proc/cpuinfo code
      
      * tag 'riscv-for-linus-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        RISC-V: Fix /proc/cpuinfo cpumask warning
        riscv: fix detection of toolchain Zihintpause support
        riscv: fix detection of toolchain Zicbom support
        riscv: mm: add missing memcpy in kasan_init
        MAINTAINERS: git://github.com -> https://github.com for sifive
        riscv: jump_label: mark arguments as const to satisfy asm constraints
      283f13d4
  7. 28 Oct, 2022 7 commits
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 13f05fb2
      Linus Torvalds authored
      Pull ACPI and device properties fixes from Rafael Wysocki:
       "These fix device properties documentation and the ACPI PCC code, add a
        new IRQ override quirk for resource handling and add one more item to
        the list of device IDs to be ignored when returned by _DEP.
      
        Specifics:
      
         - Fix the documentation of the *_match_string() family of functions
           to properly cover the return value (Andy Shevchenko)
      
         - Fix a possible integer overflow during multiplication in the ACPI
           PCC code (Manank Patel)
      
         - Make the ACPI device resources code skip IRQ override on Asus
           Vivobook S5602ZA (Tamim Khan)
      
         - Add LATT2021 to the list of device IDs that are ignored when
           returned by _DEP, because there are no drivers for them in the
           kernel and no plans to add such drivers (Hans de Goede)"
      
      * tag 'acpi-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: scan: Add LATT2021 to acpi_ignore_dep_ids[]
        ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA
        ACPI: PCC: Fix unintentional integer overflow
        device property: Fix documentation for *_match_string() APIs
      13f05fb2
    • Linus Torvalds's avatar
      Merge tag 'pm-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 6b872a5e
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These make the intel_pstate driver work as expected on all hybrid
        platforms to date (regardless of possible platform firmware issues),
        fix hybrid sleep on systems using suspend-to-idle by default, make the
        generic power domains code handle disabled idle states properly and
        update pm-graph.
      
        Specifics:
      
         - Make intel_pstate use what is known about the hardware instead of
           relying on information from the platform firmware (ACPI CPPC in
           particular) to establish the relationship between the HWP CPU
           performance levels and frequencies on all hybrid platforms
           available to date (Rafael Wysocki)
      
         - Allow hybrid sleep to use suspend-to-idle as a system suspend
           method if it is the current suspend method of choice (Mario
           Limonciello)
      
         - Fix handling of unavailable/disabled idle states in the generic
           power domains code (Sudeep Holla)
      
         - Update the pm-graph suite of utilities to version 5.10 which is
           fixes-mostly and does not add any new features (Todd Brandt)"
      
      * tag 'pm-6.1-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM: domains: Fix handling of unavailable/disabled idle states
        pm-graph v5.10
        cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores
        cpufreq: intel_pstate: Read all MSRs on the target CPU
        PM: hibernate: Allow hybrid sleep to work with s2idle
      6b872a5e
    • Jean-Philippe Brucker's avatar
      random: use arch_get_random*_early() in random_init() · f5e4ec15
      Jean-Philippe Brucker authored
      While reworking the archrandom handling, commit d349ab99 ("random:
      handle archrandom with multiple longs") switched to the non-early
      archrandom helpers in random_init(), which broke initialization of the
      entropy pool from the arm64 random generator.
      
      Indeed at that point the arm64 CPU features, which verify that all CPUs
      have compatible capabilities, are not finalized so arch_get_random_seed_longs()
      is unsuccessful. Instead random_init() should use the _early functions,
      which check only the boot CPU on arm64. On other architectures the
      _early functions directly call the normal ones.
      
      Fixes: d349ab99 ("random: handle archrandom with multiple longs")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJean-Philippe Brucker <jean-philippe@linaro.org>
      Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
      f5e4ec15
    • Sebastian Andrzej Siewior's avatar
      mm: multi-gen LRU: move lru_gen_add_mm() out of IRQ-off region · dda1c41a
      Sebastian Andrzej Siewior authored
      lru_gen_add_mm() has been added within an IRQ-off region in the commit
      mentioned below.  The other invocations of lru_gen_add_mm() are not within
      an IRQ-off region.
      
      The invocation within IRQ-off region is problematic on PREEMPT_RT because
      the function is using a spin_lock_t which must not be used within
      IRQ-disabled regions.
      
      The other invocations of lru_gen_add_mm() occur while
      task_struct::alloc_lock is acquired.  Move lru_gen_add_mm() after
      interrupts are enabled and before task_unlock().
      
      Link: https://lkml.kernel.org/r/20221026134830.711887-1-bigeasy@linutronix.de
      Fixes: bd74fdae ("mm: multi-gen LRU: support page table walks")
      Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Acked-by: default avatarYu Zhao <yuzhao@google.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: "Eric W . Biederman" <ebiederm@xmission.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      dda1c41a
    • Lukas Bulwahn's avatar
      lib: maple_tree: remove unneeded initialization in mtree_range_walk() · 1b9c9183
      Lukas Bulwahn authored
      Before the do-while loop in mtree_range_walk(), the variables next, min,
      max need to be initialized.  The variables last, prev_min and prev_max are
      set within the loop body before they are eventually used after exiting the
      loop body.
      
      As it is a do-while loop, the loop body is executed at least once, so the
      variables last, prev_min and prev_max do not need to be initialized before
      the loop body.
      
      Remove unneeded initialization of last and prev_min.
      
      The needless initialization was reported by clang-analyzer as Dead Stores.
      
      As the compiler already identifies these assignments as unneeded, it
      optimizes the assignments away.  Hence:
      
      No functional change. No change in object code.
      
      Link: https://lkml.kernel.org/r/20221026120029.12555-2-lukas.bulwahn@gmail.comSigned-off-by: default avatarLukas Bulwahn <lukas.bulwahn@gmail.com>
      Reviewed-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      1b9c9183
    • Liam Howlett's avatar
      mmap: fix remap_file_pages() regression · 1db43d3f
      Liam Howlett authored
      When using the VMA iterator, the final execution will set the variable
      'next' to NULL which causes the function to fail out.  Restore the break
      in the loop to exit the VMA iterator early without clearing NULL fixes the
      issue.
      
      Link: https://lore.kernel.org/lkml/29344.1666681759@jrobl/
      Link: https://lkml.kernel.org/r/20221025161222.2634030-1-Liam.Howlett@oracle.com
      Fixes: 763ecb03 (mm: remove the vma linked list)
      Signed-off-by: default avatarLiam R. Howlett <Liam.Howlett@oracle.com>
      Reported-by: default avatar"J. R. Okajima" <hooanon05g@gmail.com>
      Tested-by: default avatar"J. R. Okajima" <hooanon05g@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      1db43d3f
    • Ira Weiny's avatar
      mm/shmem: ensure proper fallback if page faults · 5dc21f0c
      Ira Weiny authored
      The kernel test robot flagged a recursive lock as a result of a conversion
      from kmap_atomic() to kmap_local_folio()[Link]
      
      The cause was due to the code depending on the kmap_atomic() side effect
      of disabling page faults.  In that case the code expects the fault to fail
      and take the fallback case.
      
      git archaeology implied that the recursion may not be an actual bug.[1]
      However, depending on the implementation of the mmap_lock and the
      condition of the call there may still be a deadlock.[2] So this is not
      purely a lockdep issue.  Considering a single threaded call stack there
      are 3 options.
      
      	1) Different mm's are in play (no issue)
      	2) Readlock implementation is recursive and same mm is in play
      	   (no issue)
      	3) Readlock implementation is _not_ recursive (issue)
      
      The mmap_lock is recursive so with a single thread there is no issue.
      
      However, Matthew pointed out a deadlock scenario when you consider
      additional process' and threads thusly.
      
      "The readlock implementation is only recursive if nobody else has taken a
      write lock.  If you have a multithreaded process, one of the other threads
      can call mmap() and that will prevent recursion (due to fairness).  Even
      if it's a different process that you're trying to acquire the mmap read
      lock on, you can still get into a deadly embrace.  eg:
      
      process A thread 1 takes read lock on own mmap_lock
      process A thread 2 calls mmap, blocks taking write lock
      process B thread 1 takes page fault, read lock on own mmap lock
      process B thread 2 calls mmap, blocks taking write lock
      process A thread 1 blocks taking read lock on process B
      process B thread 1 blocks taking read lock on process A
      
      Now all four threads are blocked waiting for each other."
      
      Regardless using pagefault_disable() ensures that no matter what locking
      implementation is used a deadlock will not occur.  Add an explicit
      pagefault_disable() and a big comment to explain this for future souls
      looking at this code.
      
      [1] https://lore.kernel.org/all/Y1MymJ%2FINb45AdaY@iweiny-desk3/
      [2] https://lore.kernel.org/lkml/Y1bXBtGTCym77%2FoD@casper.infradead.org/
      
      Link: https://lkml.kernel.org/r/20221025220108.2366043-1-ira.weiny@intel.com
      Link: https://lore.kernel.org/r/202210211215.9dc6efb5-yujie.liu@intel.com
      Fixes: 7a7256d5 ("shmem: convert shmem_mfill_atomic_pte() to use a folio")
      Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
      Reported-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Reported-by: default avatarkernel test robot <yujie.liu@intel.com>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Peter Xu <peterx@redhat.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      5dc21f0c