1. 12 Nov, 2022 4 commits
    • Jarkko Nikula's avatar
      i2c: designware: Remove needless initializations from i2c_dw_reg_slave() · 40015c67
      Jarkko Nikula authored
      These struct dw_i2c_dev members are not used in i2c-designware-slave.c
      so remove re-initialization of them from i2c_dw_reg_slave().
      Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      40015c67
    • Jarkko Nikula's avatar
      i2c: designware: Define software status flags with BIT() · 4d827824
      Jarkko Nikula authored
      Define software status flags with a BIT() macro. While at it remove
      STATUS_IDLE and replace its use with zero initialization and status
      flags clearing with a mask.
      Suggested-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      4d827824
    • Jarkko Nikula's avatar
      i2c: designware: Empty receive FIFO in slave interrupt handler · dcf1bf64
      Jarkko Nikula authored
      Writes from I2C bus often fail when testing the i2c-designware-slave.c
      with the slave-eeprom backend. The same writes work correctly when
      testing with a real 24c02 EEPROM chip.
      
      In the tests below an i2c-designware-slave.c instance with the
      slave-eeprom backend is configured to act as a simulated 24c02 at
      address 0x65 on an I2C host bus 6.
      
      1. i2cset -y 6 0x65 0x00 0x55
      
      Single byte 0x55 write into address 0x00. No data goes into simulated
      EEPROM. Debug prints from the i2c_dw_irq_handler_slave():
      
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x714 : INTR_STAT=0x204
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      
      2. i2ctransfer -y 6 w9@0x65 0x00 0xff-
      
      Write 8 bytes with decrementing value starting from 0xff at address 0x00
      and forward. Only some of the data goes into arbitrary addresses.
      Content is something like below but varies:
      
      00000000  f9 f8 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
      00000050  00 00 00 00 00 00 ff fe  00 00 00 00 00 00 00 00  |................|
      000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 fc fb fa  |................|
      
      In this case debug prints were:
      
      0x1 STATUS SLAVE_ACTIVITY=0x1 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x1 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x714 : INTR_STAT=0x204
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x514 : INTR_STAT=0x4
      0x1 STATUS SLAVE_ACTIVITY=0x0 : RAW_INTR_STAT=0x510 : INTR_STAT=0x0
      
      Both cases show there is more data coming from the receive FIFO still
      after detecting the STOP condition. This can be seen from interrupt
      status bits DW_IC_INTR_STOP_DET (0x200) and DW_IC_INTR_RX_FULL (0x4).
      
      Perhaps due interrupt latencies the receive FIFO is not read fast
      enough, STOP detection happens synchronously when it occurs on the I2C
      bus and the DW_IC_INTR_RX_FULL keeps coming as long as there are more
      bytes in the receive FIFO.
      
      Fix this by reading the receive FIFO completely empty whenever
      DW_IC_INTR_RX_FULL occurs. Use RFNE, Receive FIFO Not Empty bit in the
      DW_IC_STATUS register to loop through bytes in the FIFO.
      
      While at it do not test the return code from i2c_slave_event() for the
      I2C_SLAVE_WRITE_RECEIVED since to my understanding this hardware cannot
      generate NACK to incoming bytes and debug print itself does not have
      much value.
      Reported-by: default avatarTian Ye <tianye@sugon.com>
      Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      dcf1bf64
    • Jarkko Nikula's avatar
      i2c: designware: Fix slave state machine for sequential reads · c42edde5
      Jarkko Nikula authored
      Some read types from I2C bus don't work correctly when testing the
      i2c-designware-slave.c with the slave-eeprom backend. The same reads
      work correctly when testing with a real 24c02 EEPROM chip.
      
      In the following tests an i2c-designware-slave.c instance with the
      slave-eeprom backend is configured to act as a simulated 24c02 at
      address 0x65 on an I2C host bus 6:
      
      1. i2cdump -y 6 0x65 b (OK)
         Random read. Each byte are read using a byte address write with a
         current address read in a same message.
      2. i2cdump -y 6 0x65 c (OK, was NOK before commit 3b5f7f10 when it
                              was repeating the 1st byte)
         Repeated current address read. One byte address write message
         followed by repeated current address read messages.
      3. i2cdump -y 6 0x65 i (NOK, each 32 byte block repeats the 1st byte of
                              block)
         Sequential read using SMBus Block Read. For each 32 byte block a byte
         address write followed by 32 sequental reads in a same message.
      
      These findings are explained because the implementation has had a
      mismatch between hardware interrupts and what I2C slave events should be
      sent after those interrupts. Despite that the case 1 happened to have
      always the I2C slave events sent to a right order with a right data
      between backend and the I2C bus.
      
      Hardware generates the DW_IC_INTR_RD_REQ interrupt when another host is
      attempting to read and for sequential reads after. DW_IC_INTR_RX_DONE
      occurs when host does not acknowledge a transmitted byte which is an
      indication the end of transmission.
      
      Those interrupts do not match directly with I2C_SLAVE_READ_REQUESTED and
      I2C_SLAVE_READ_PROCESSED events which is how the code was and is
      practically using them. The slave-eeprom backend increases the buffer
      index with the I2C_SLAVE_READ_PROCESSED event and returns the data from
      current index when receiving only the I2C_SLAVE_READ_REQUESTED event.
      
      That explains the repeated bytes in case 3 and also case 2 before
      commit 3b5f7f10 ("i2c: designware: slave should do WRITE_REQUESTED
      before WRITE_RECEIVED").
      
      Patch fixes the case 3 while keep cases 1 and 2 working with following
      changes:
      
      - First DW_IC_INTR_RD_REQ interrupt will change the state machine to
        read in progress state, send I2C_SLAVE_READ_REQUESTED event and
        transmit the first byte from backend
      - Subsequent DW_IC_INTR_RD_REQ interrupts will send
        I2C_SLAVE_READ_PROCESSED events and transmit next bytes from backend
      - STOP won't change the state machine. Otherwise case 2 won't work since
        we cannot distinguish current address read from sequentiel read
      - DW_IC_INTR_RX_DONE interrupt is needless since there is no mechanism
        to inform it to a backend. It cannot be used to change state machine
        at the end of read either due the same reason than above
      - Next host write to us will change the state machine from read to write
        in progress state
      - STATUS_WRITE_IN_PROGRESS and STATUS_READ_IN_PROGRESS are considered
        now to be status flags not the state of the driver. This is how we
        treat them in i2c-designware-master.c
      
      While at it do not test the return code from i2c_slave_event() for
      I2C_SLAVE_READ_REQUESTED and I2C_SLAVE_READ_PROCESSED since it returns
      always 0.
      Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      c42edde5
  2. 02 Nov, 2022 3 commits
  3. 01 Nov, 2022 5 commits
  4. 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
  5. 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
  6. 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