Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v6.7.6-scx1 #13

Merged
merged 316 commits into from
Feb 26, 2024
Merged

v6.7.6-scx1 #13

merged 316 commits into from
Feb 26, 2024
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Feb 23, 2024

  1. tracing/trigger: Fix to return error if failed to alloc snapshot

    commit 0958b33 upstream.
    
    Fix register_snapshot_trigger() to return error code if it failed to
    allocate a snapshot instead of 0 (success). Unless that, it will register
    snapshot trigger without an error.
    
    Link: https://lore.kernel.org/linux-trace-kernel/170622977792.270660.2789298642759362200.stgit@devnote2
    
    Fixes: 0bbe7f7 ("tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation")
    Cc: [email protected]
    Cc: Vincent Donnefort <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhiramat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4b001ef View commit details
    Browse the repository at this point in the history
  2. fs/hugetlbfs/inode.c: mm/memory-failure.c: fix hugetlbfs hwpoison han…

    …dling
    
    commit 19d3e22 upstream.
    
    has_extra_refcount() makes the assumption that the page cache adds a ref
    count of 1 and subtracts this in the extra_pins case.  Commit a08c719
    (mm/filemap: remove hugetlb special casing in filemap.c) modifies
    __filemap_add_folio() by calling folio_ref_add(folio, nr); for all cases
    (including hugtetlb) where nr is the number of pages in the folio.  We
    should adjust the number of references coming from the page cache by
    subtracing the number of pages rather than 1.
    
    In hugetlbfs_read_iter(), folio_test_has_hwpoisoned() is testing the wrong
    flag as, in the hugetlb case, memory-failure code calls
    folio_test_set_hwpoison() to indicate poison.  folio_test_hwpoison() is
    the correct function to test for that flag.
    
    After these fixes, the hugetlb hwpoison read selftest passes all cases.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: a08c719 ("mm/filemap: remove hugetlb special casing in filemap.c")
    Signed-off-by: Sidhartha Kumar <[email protected]>
    Closes: https://lore.kernel.org/linux-mm/[email protected]/T/#m8e1469119e5b831bbd05d495f96b842e4a1c5519
    Reported-by: Muhammad Usama Anjum <[email protected]>
    Tested-by: Muhammad Usama Anjum <[email protected]>
    Acked-by: Miaohe Lin <[email protected]>
    Acked-by: Muchun Song <[email protected]>
    Cc: James Houghton <[email protected]>
    Cc: Jiaqi Yan <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Cc: Naoya Horiguchi <[email protected]>
    Cc: <[email protected]>	[6.7+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sidkumar99 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f38f737 View commit details
    Browse the repository at this point in the history
  3. selftests/mm: switch to bash from sh

    commit bc29036 upstream.
    
    Running charge_reserved_hugetlb.sh generates errors if sh is set to
    dash:
    
    ./charge_reserved_hugetlb.sh: 9: [[: not found
    ./charge_reserved_hugetlb.sh: 19: [[: not found
    ./charge_reserved_hugetlb.sh: 27: [[: not found
    ./charge_reserved_hugetlb.sh: 37: [[: not found
    ./charge_reserved_hugetlb.sh: 45: Syntax error: "(" unexpected
    
    Switch to using /bin/bash instead of /bin/sh.  Make the switch for
    write_hugetlb_memory.sh as well which is called from
    charge_reserved_hugetlb.sh.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Muhammad Usama Anjum <[email protected]>
    Cc: Muhammad Usama Anjum <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: David Laight <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    musamaanjum authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6c6e21c View commit details
    Browse the repository at this point in the history
  4. mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again

    commit 9319b64 upstream.
    
    (struct dirty_throttle_control *)->thresh is an unsigned long, but is
    passed as the u32 divisor argument to div_u64().  On architectures where
    unsigned long is 64 bytes, the argument will be implicitly truncated.
    
    Use div64_u64() instead of div_u64() so that the value used in the "is
    this a safe division" check is the same as the divisor.
    
    Also, remove redundant cast of the numerator to u64, as that should happen
    implicitly.
    
    This would be difficult to exploit in memcg domain, given the ratio-based
    arithmetic domain_drity_limits() uses, but is much easier in global
    writeback domain with a BDI_CAP_STRICTLIMIT-backing device, using e.g.
    vm.dirty_bytes=(1<<32)*PAGE_SIZE so that dtc->thresh == (1<<32)
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: f678959 ("mm/page-writeback.c: fix divide by zero in bdi_dirty_limits()")
    Signed-off-by: Zach O'Keefe <[email protected]>
    Cc: Maxim Patlasov <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    zokeefe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    65977be View commit details
    Browse the repository at this point in the history
  5. selftests/mm: Update va_high_addr_switch.sh to check CPU for la57 flag

    commit 52e63d6 upstream.
    
    In order for the page table level 5 to be in use, the CPU must have the
    setting enabled in addition to the CONFIG option. Check for the flag to be
    set to avoid false test failures on systems that do not have this cpu flag
    set.
    
    The test does a series of mmap calls including three using the
    MAP_FIXED flag and specifying an address that is 1<<47 or 1<<48.  These
    addresses are only available if you are using level 5 page tables,
    which requires both the CPU to have the capabiltiy (la57 flag) and the
    kernel to be configured.  Currently the test only checks for the kernel
    configuration option, so this test can still report a false positive.
    Here are the three failing lines:
    
    $ ./va_high_addr_switch | grep FAILED
    mmap(ADDR_SWITCH_HINT, 2 * PAGE_SIZE, MAP_FIXED): 0xffffffffffffffff - FAILED
    mmap(HIGH_ADDR, MAP_FIXED): 0xffffffffffffffff - FAILED
    mmap(ADDR_SWITCH_HINT, 2 * PAGE_SIZE, MAP_FIXED): 0xffffffffffffffff - FAILED
    
    I thought (for about a second) refactoring the test so that these three
    mmap calls will only be run on systems with the level 5 page tables
    available, but the whole point of the test is to check the level 5
    feature...
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4f2930c ("selftests/vm: only run 128TBswitch with 5-level paging")
    Signed-off-by: Audra Mitchell <[email protected]>
    Cc: Rafael Aquini <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: Adam Sindelar <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Audra Mitchell authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    16a0a9e View commit details
    Browse the repository at this point in the history
  6. selftests: mm: fix map_hugetlb failure on 64K page size systems

    commit 91b80cc upstream.
    
    On systems with 64k page size and 512M huge page sizes, the allocation and
    test succeeds but errors out at the munmap.  As the comment states, munmap
    will failure if its not HUGEPAGE aligned.  This is due to the length of
    the mapping being 1/2 the size of the hugepage causing the munmap to not
    be hugepage aligned.  Fix this by making the mapping length the full
    hugepage if the hugepage is larger than the length of the mapping.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Nico Pache <[email protected]>
    Cc: Donet Tom <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Nico Pache authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8e83cec View commit details
    Browse the repository at this point in the history
  7. scsi: storvsc: Fix ring buffer size calculation

    commit f4469f3 upstream.
    
    Current code uses the specified ring buffer size (either the default of 128
    Kbytes or a module parameter specified value) to encompass the one page
    ring buffer header plus the actual ring itself.  When the page size is 4K,
    carving off one page for the header isn't significant.  But when the page
    size is 64K on ARM64, only half of the default 128 Kbytes is left for the
    actual ring.  While this doesn't break anything, the smaller ring size
    could be a performance bottleneck.
    
    Fix this by applying the VMBUS_RING_SIZE macro to the specified ring buffer
    size.  This macro adds a page for the header, and rounds up the size to a
    page boundary, using the page size for which the kernel is built.  Use this
    new size for subsequent ring buffer calculations.  For example, on ARM64
    with 64K page size and the default ring size, this results in the actual
    ring being 128 Kbytes, which is intended.
    
    Cc: [email protected] # 5.15.x
    Signed-off-by: Michael Kelley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhklinux authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7eec74d View commit details
    Browse the repository at this point in the history
  8. nouveau: offload fence uevents work to workqueue

    commit 39126ab upstream.
    
    This should break the deadlock between the fctx lock and the irq lock.
    
    This offloads the processing off the work from the irq into a workqueue.
    
    Cc: [email protected]
    Signed-off-by: Dave Airlie <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/576237/
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    airlied authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    985d053 View commit details
    Browse the repository at this point in the history
  9. dm-crypt, dm-verity: disable tasklets

    commit 0a9bab3 upstream.
    
    Tasklets have an inherent problem with memory corruption. The function
    tasklet_action_common calls tasklet_trylock, then it calls the tasklet
    callback and then it calls tasklet_unlock. If the tasklet callback frees
    the structure that contains the tasklet or if it calls some code that may
    free it, tasklet_unlock will write into free memory.
    
    The commits 8e14f61 and d9a02e0 try to fix it for dm-crypt, but
    it is not a sufficient fix and the data corruption can still happen [1].
    There is no fix for dm-verity and dm-verity will write into free memory
    with every tasklet-processed bio.
    
    There will be atomic workqueues implemented in the kernel 6.9 [2]. They
    will have better interface and they will not suffer from the memory
    corruption problem.
    
    But we need something that stops the memory corruption now and that can be
    backported to the stable kernels. So, I'm proposing this commit that
    disables tasklets in both dm-crypt and dm-verity. This commit doesn't
    remove the tasklet support, because the tasklet code will be reused when
    atomic workqueues will be implemented.
    
    [1] https://lore.kernel.org/all/[email protected]/T/
    [2] https://lore.kernel.org/lkml/[email protected]/
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Cc: [email protected]
    Fixes: 39d42fa ("dm crypt: add flags to optionally bypass kcryptd workqueues")
    Fixes: 5721d4e ("dm verity: Add optional "try_verify_in_tasklet" feature")
    Signed-off-by: Mike Snitzer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Mikulas Patocka authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0c45a20 View commit details
    Browse the repository at this point in the history
  10. ASoC: amd: yc: Add DMI quirk for MSI Bravo 15 C7VF

    commit c6dce23 upstream.
    
    The laptop requires a quirk ID to enable its internal microphone. Add
    it to the DMI quirk table.
    
    Reported-by: Techno Mooney <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218402
    Cc: [email protected]
    Signed-off-by: Techno Mooney <[email protected]>
    Signed-off-by: Bagas Sanjaya <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Techno Mooney authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2b643d7 View commit details
    Browse the repository at this point in the history
  11. parisc: Prevent hung tasks when printing inventory on serial console

    commit c8708d7 upstream.
    
    Printing the inventory on a serial console can be quite slow and thus may
    trigger the hung task detector (CONFIG_DETECT_HUNG_TASK=y) and possibly
    reboot the machine. Adding a cond_resched() prevents this.
    
    Signed-off-by: Helge Deller <[email protected]>
    Cc: <[email protected]> # v6.0+
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hdeller authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    56343aa View commit details
    Browse the repository at this point in the history
  12. ALSA: hda/realtek: Fix the external mic not being recognised for Acer…

    … Swift 1 SF114-32
    
    commit efb56d8 upstream.
    
    If you connect an external headset/microphone to the 3.5mm jack on the
    Acer Swift 1 SF114-32 it does not recognize the microphone. This fixes
    that and gives the user the ability to choose between internal and
    headset mic.
    
    Signed-off-by: David Senoner <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    kada49 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5d08c61 View commit details
    Browse the repository at this point in the history
  13. ALSA: hda/realtek: Enable Mute LED on HP Laptop 14-fq0xxx

    commit f0d7897 upstream.
    
    This HP Laptop uses ALC236 codec with COEF 0x07 controlling the
    mute LED. Enable existing quirk for this device.
    
    Signed-off-by: Luka Guzenko <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    TheSmolBoi authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fe8e47a View commit details
    Browse the repository at this point in the history
  14. HID: bpf: remove double fdget()

    commit 7cdd210 upstream.
    
    When the kfunc hid_bpf_attach_prog() is called, we called twice fdget():
    one for fetching the type of the bpf program, and one for actually
    attaching the program to the device.
    
    The problem is that between those two calls, we have no guarantees that
    the prog_fd is still the same file descriptor for the given program.
    
    Solve this by calling bpf_prog_get() earlier, and use this to fetch the
    program type.
    
    Reported-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/bpf/CAO-hwJJ8vh8JD3-P43L-_CLNmPx0hWj44aom0O838vfP4=_1CA@mail.gmail.com/T/#t
    Cc: <[email protected]>
    Fixes: f5c27da ("HID: initial BPF implementation")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Benjamin Tissoires authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1211da2 View commit details
    Browse the repository at this point in the history
  15. HID: bpf: actually free hdev memory after attaching a HID-BPF program

    commit 89be8aa upstream.
    
    Turns out that I got my reference counts wrong and each successful
    bus_find_device() actually calls get_device(), and we need to manually
    call put_device().
    
    Ensure each bus_find_device() gets a matching put_device() when releasing
    the bpf programs and fix all the error paths.
    
    Cc: <[email protected]>
    Fixes: f5c27da ("HID: initial BPF implementation")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Benjamin Tissoires authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    46b08e8 View commit details
    Browse the repository at this point in the history
  16. HID: i2c-hid-of: fix NULL-deref on failed power up

    commit 00aab7d upstream.
    
    A while back the I2C HID implementation was split in an ACPI and OF
    part, but the new OF driver never initialises the client pointer which
    is dereferenced on power-up failures.
    
    Fixes: b33752c ("HID: i2c-hid: Reorganize so ACPI and OF are separate modules")
    Cc: [email protected]      # 5.12
    Cc: Douglas Anderson <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Douglas Anderson <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jhovold authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e28d6b6 View commit details
    Browse the repository at this point in the history
  17. HID: wacom: generic: Avoid reporting a serial of '0' to userspace

    commit ab41a31 upstream.
    
    The xf86-input-wacom driver does not treat '0' as a valid serial
    number and will drop any input report which contains an
    MSC_SERIAL = 0 event. The kernel driver already takes care to
    avoid sending any MSC_SERIAL event if the value of serial[0] == 0
    (which is the case for devices that don't actually report a
    serial number), but this is not quite sufficient.
    Only the lower 32 bits of the serial get reported to userspace,
    so if this portion of the serial is zero then there can still
    be problems.
    
    This commit allows the driver to report either the lower 32 bits
    if they are non-zero or the upper 32 bits otherwise.
    
    Signed-off-by: Jason Gerecke <[email protected]>
    Signed-off-by: Tatsunosuke Tobita <[email protected]>
    Fixes: f85c9dc ("HID: wacom: generic: Support tool ID and additional tool types")
    CC: [email protected] # v4.10
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    flying-elephant authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a5275c6 View commit details
    Browse the repository at this point in the history
  18. HID: wacom: Do not register input devices until after hid_hw_start

    commit c1d6708 upstream.
    
    If a input device is opened before hid_hw_start is called, events may
    not be received from the hardware. In the case of USB-backed devices,
    for example, the hid_hw_start function is responsible for filling in
    the URB which is submitted when the input device is opened. If a device
    is opened prematurely, polling will never start because the device will
    not have been in the correct state to send the URB.
    
    Because the wacom driver registers its input devices before calling
    hid_hw_start, there is a window of time where a device can be opened
    and end up in an inoperable state. Some ARM-based Chromebooks in particular
    reliably trigger this bug.
    
    This commit splits the wacom_register_inputs function into two pieces.
    One which is responsible for setting up the allocated inputs (and runs
    prior to hid_hw_start so that devices are ready for any input events
    they may end up receiving) and another which only registers the devices
    (and runs after hid_hw_start to ensure devices can be immediately opened
    without issue). Note that the functions to initialize the LEDs and remotes
    are also moved after hid_hw_start to maintain their own dependency chains.
    
    Fixes: 7704ac9 ("HID: wacom: implement generic HID handling for pen generic devices")
    Cc: [email protected] # v3.18+
    Suggested-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Jason Gerecke <[email protected]>
    Tested-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jigpu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    79187e8 View commit details
    Browse the repository at this point in the history
  19. iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP

    commit 621c625 upstream.
    
    When als_capture_sample() is called with usage ID
    HID_USAGE_SENSOR_TIME_TIMESTAMP, return 0. The HID sensor core ignores
    the return value for capture_sample() callback, so return value doesn't
    make difference. But correct the return value to return success instead
    of -EINVAL.
    
    Signed-off-by: Srinivas Pandruvada <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    spandruvada authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cc5c9c6 View commit details
    Browse the repository at this point in the history
  20. usb: ucsi: Add missing ppm_lock

    commit c9aed03 upstream.
    
    Calling ->sync_write must be done while holding the PPM lock as
    the mailbox logic does not support concurrent commands.
    
    At least since the addition of partner task this means that
    ucsi_acknowledge_connector_change should be called with the
    PPM lock held as it calls ->sync_write.
    
    Thus protect the only call to ucsi_acknowledge_connector_change
    with the PPM. All other calls to ->sync_write already happen
    under the PPM lock.
    
    Fixes: b9aa02c ("usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode checking")
    Cc: [email protected]
    Signed-off-by: "Christian A. Ehrhardt" <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Christian A. Ehrhardt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    330e7d7 View commit details
    Browse the repository at this point in the history
  21. usb: ulpi: Fix debugfs directory leak

    commit 3caf2b2 upstream.
    
    The ULPI per-device debugfs root is named after the ulpi device's
    parent, but ulpi_unregister_interface tries to remove a debugfs
    directory named after the ulpi device itself. This results in the
    directory sticking around and preventing subsequent (deferred) probes
    from succeeding. Change the directory name to match the ulpi device.
    
    Fixes: bd0a0a0 ("usb: ulpi: Add debugfs support")
    Cc: [email protected]
    Signed-off-by: Sean Anderson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sean-anderson-seco authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3371394 View commit details
    Browse the repository at this point in the history
  22. usb: ucsi_acpi: Fix command completion handling

    commit 2840143 upstream.
    
    In case of a spurious or otherwise delayed notification it is
    possible that CCI still reports the previous completion. The
    UCSI spec is aware of this and provides two completion bits in
    CCI, one for normal commands and one for acks. As acks and commands
    alternate the notification handler can determine if the completion
    bit is from the current command.
    
    The initial UCSI code correctly handled this but the distinction
    between the two completion bits was lost with the introduction of
    the new API.
    
    To fix this revive the ACK_PENDING bit for ucsi_acpi and only complete
    commands if the completion bit matches.
    
    Fixes: f56de27 ("usb: typec: ucsi: acpi: Move to the new API")
    Cc: [email protected]
    Signed-off-by: "Christian A. Ehrhardt" <[email protected]>
    Acked-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Christian A. Ehrhardt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f5e02ca View commit details
    Browse the repository at this point in the history
  23. USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT

    commit f17c34f upstream.
    
    The OTG 1.3 spec has the feature A_ALT_HNP_SUPPORT, which tells
    a device that it is connected to the wrong port. Some devices
    refuse to operate if you enable that feature, because it indicates
    to them that they ought to request to be connected to another port.
    
    According to the spec this feature may be used based only the following
    three conditions:
    
    6.5.3 a_alt_hnp_support
    Setting this feature indicates to the B-device that it is connected to
    an A-device port that is not capable of HNP, but that the A-device does
    have an alternate port that is capable of HNP.
    The A-device is required to set this feature under the following conditions:
    • the A-device has multiple receptacles
    • the A-device port that connects to the B-device does not support HNP
    • the A-device has another port that does support HNP
    
    A check for the third and first condition is missing. Add it.
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Cc: stable <[email protected]>
    Fixes: 7d2d641 ("usb: otg: don't set a_alt_hnp_support feature for OTG 2.0 device")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    oneukum authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    21e89fa View commit details
    Browse the repository at this point in the history
  24. usb: f_mass_storage: forbid async queue when shutdown happen

    commit b2d2d7e upstream.
    
    When write UDC to empty and unbind gadget driver from gadget device, it is
    possible that there are many queue failures for mass storage function.
    
    The root cause is mass storage main thread alaways try to queue request to
    receive a command from host if running flag is on, on platform like dwc3,
    if pull down called, it will not queue request again and return
    -ESHUTDOWN, but it not affect running flag of mass storage function.
    
    Check return code from mass storage function and clear running flag if it
    is -ESHUTDOWN, also indicate start in/out transfer failure to break loops.
    
    Cc: stable <[email protected]>
    Signed-off-by: yuan linyu <[email protected]>
    Reviewed-by: Alan Stern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    yuan linyu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ab04645 View commit details
    Browse the repository at this point in the history
  25. usb: chipidea: core: handle power lost in workqueue

    commit cc509b6 upstream.
    
    When power is recycled in usb controller during system power management,
    the controller will recognize it and switch role if role has been changed
    during power lost. In current design, it will be completed in resume()
    function. However, this may bring issues since usb class devices have
    their pm operations too and these device's resume() functions are still
    not being called at this point. When usb controller recognized host role
    should be stopped, these usb class devices will be removed at this point.
    But these usb class devices can't be removed in some cases, such as scsi
    devices. Since scsi driver may sync data to U-disk, however it will block
    there because scsi drvier can only handle pm request when is in suspended
    state. Therefore, there may exist a dependency between ci_resume() and usb
    class device's resume(). To break this potential dependency, we need to
    handle power lost work in a workqueue.
    
    Fixes: 74494b3 ("usb: chipidea: core: add controller resume support when controller is powered off")
    cc: [email protected]
    Signed-off-by: Xu Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Xu Yang authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3112bc8 View commit details
    Browse the repository at this point in the history
  26. usb: core: Prevent null pointer dereference in update_port_device_state

    commit 12783c0 upstream.
    
    Currently, the function update_port_device_state gets the usb_hub from
    udev->parent by calling usb_hub_to_struct_hub.
    However, in case the actconfig or the maxchild is 0, the usb_hub would
    be NULL and upon further accessing to get port_dev would result in null
    pointer dereference.
    
    Fix this by introducing an if check after the usb_hub is populated.
    
    Fixes: 83cb260 ("usb: core: add sysfs entry for usb device state")
    Cc: [email protected]
    Signed-off-by: Udipto Goswami <[email protected]>
    Reviewed-by: Alan Stern <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Udipto Goswami authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    465b545 View commit details
    Browse the repository at this point in the history
  27. usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend

    commit 61a3488 upstream.
    
    In current scenario if Plug-out and Plug-In performed continuously
    there could be a chance while checking for dwc->gadget_driver in
    dwc3_gadget_suspend, a NULL pointer dereference may occur.
    
    Call Stack:
    
    	CPU1:                           CPU2:
    	gadget_unbind_driver            dwc3_suspend_common
    	dwc3_gadget_stop                dwc3_gadget_suspend
                                            dwc3_disconnect_gadget
    
    CPU1 basically clears the variable and CPU2 checks the variable.
    Consider CPU1 is running and right before gadget_driver is cleared
    and in parallel CPU2 executes dwc3_gadget_suspend where it finds
    dwc->gadget_driver which is not NULL and resumes execution and then
    CPU1 completes execution. CPU2 executes dwc3_disconnect_gadget where
    it checks dwc->gadget_driver is already NULL because of which the
    NULL pointer deference occur.
    
    Cc: [email protected]
    Fixes: 9772b47 ("usb: dwc3: gadget: Fix suspend/resume during device mode")
    Acked-by: Thinh Nguyen <[email protected]>
    Signed-off-by: Uttkarsh Aggarwal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Uttkarsh Aggarwal authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    36695d5 View commit details
    Browse the repository at this point in the history
  28. interconnect: qcom: sc8180x: Mark CO0 BCM keepalive

    [ Upstream commit 85e985a ]
    
    The CO0 BCM needs to be up at all times, otherwise some hardware (like
    the UFS controller) loses its connection to the rest of the SoC,
    resulting in a hang of the platform, accompanied by a spectacular
    logspam.
    
    Mark it as keepalive to prevent such cases.
    
    Fixes: 9c8c6ba ("interconnect: qcom: Add SC8180x providers")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Georgi Djakov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    konradybcio authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7a3a70d View commit details
    Browse the repository at this point in the history
  29. interconnect: qcom: sm8550: Enable sync_state

    [ Upstream commit 24406f6 ]
    
    To ensure the interconnect votes are actually meaningful and in order to
    prevent holding all buses at FMAX, introduce the sync state callback.
    
    Fixes: e6f0d6a ("interconnect: qcom: Add SM8550 interconnect provider driver")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Georgi Djakov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    konradybcio authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0bb466a View commit details
    Browse the repository at this point in the history
  30. media: ir_toy: fix a memleak in irtoy_tx

    [ Upstream commit dc9ceb9 ]
    
    When irtoy_command fails, buf should be freed since it is allocated by
    irtoy_tx, or there is a memleak.
    
    Fixes: 4114978 ("media: ir_toy: prevent device from hanging during transmit")
    Signed-off-by: Zhipeng Lu <[email protected]>
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    AlexiousLu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b372594 View commit details
    Browse the repository at this point in the history
  31. driver core: fw_devlink: Improve detection of overlapping cycles

    [ Upstream commit 6442d79 ]
    
    fw_devlink can detect most overlapping/intersecting cycles. However it was
    missing a few corner cases because of an incorrect optimization logic that
    tries to avoid repeating cycle detection for devices that are already
    marked as part of a cycle.
    
    Here's an example provided by Xu Yang (edited for clarity):
    
                        usb
                      +-----+
       tcpc           |     |
      +-----+         |  +--|
      |     |----------->|EP|
      |--+  |         |  +--|
      |EP|<-----------|     |
      |--+  |         |  B  |
      |     |         +-----+
      |  A  |            |
      +-----+            |
         ^     +-----+   |
         |     |     |   |
         +-----|  C  |<--+
               |     |
               +-----+
               usb-phy
    
    Node A (tcpc) will be populated as device 1-0050.
    Node B (usb) will be populated as device 38100000.usb.
    Node C (usb-phy) will be populated as device 381f0040.usb-phy.
    
    The description below uses the notation:
    consumer --> supplier
    child ==> parent
    
    1. Node C is populated as device C. No cycles detected because cycle
       detection is only run when a fwnode link is converted to a device link.
    
    2. Node B is populated as device B. As we convert B --> C into a device
       link we run cycle detection and find and mark the device link/fwnode
       link cycle:
       C--> A --> B.EP ==> B --> C
    
    3. Node A is populated as device A. As we convert C --> A into a device
       link, we see it's already part of a cycle (from step 2) and don't run
       cycle detection. Thus we miss detecting the cycle:
       A --> B.EP ==> B --> A.EP ==> A
    
    Looking at it another way, A depends on B in one way:
    A --> B.EP ==> B
    
    But B depends on A in two ways and we only detect the first:
    B --> C --> A
    B --> A.EP ==> A
    
    To detect both of these, we remove the incorrect optimization attempt in
    step 3 and run cycle detection even if the fwnode link from which the
    device link is being created has already been marked as part of a cycle.
    
    Reported-by: Xu Yang <[email protected]>
    Closes: https://lore.kernel.org/lkml/DU2PR04MB8822693748725F85DC0CB86C8C792@DU2PR04MB8822.eurprd04.prod.outlook.com/
    Fixes: 3fb1686 ("driver core: fw_devlink: Make cycle detection more robust")
    Signed-off-by: Saravana Kannan <[email protected]>
    Tested-by: Xu Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Saravana Kannan authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2f2e305 View commit details
    Browse the repository at this point in the history
  32. powerpc/pseries/iommu: Fix iommu initialisation during DLPAR add

    [ Upstream commit ed8b94f ]
    
    When a PCI device is dynamically added, the kernel oopses with a NULL
    pointer dereference:
    
      BUG: Kernel NULL pointer dereference on read at 0x00000030
      Faulting instruction address: 0xc0000000006bbe5c
      Oops: Kernel access of bad area, sig: 11 [#1]
      LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in: rpadlpar_io rpaphp rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs xsk_diag bonding nft_compat nf_tables nfnetlink rfkill binfmt_misc dm_multipath rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_core_mod ib_umad ib_iser libiscsi scsi_transport_iscsi ib_ipoib rdma_cm iw_cm ib_cm mlx5_ib ib_uverbs ib_core pseries_rng drm drm_panel_orientation_quirks xfs libcrc32c mlx5_core mlxfw sd_mod t10_pi sg tls ibmvscsi ibmveth scsi_transport_srp vmx_crypto pseries_wdt psample dm_mirror dm_region_hash dm_log dm_mod fuse
      CPU: 17 PID: 2685 Comm: drmgr Not tainted 6.7.0-203405+ #66
      Hardware name: IBM,9080-HEX POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NH1060_008) hv:phyp pSeries
      NIP:  c0000000006bbe5c LR: c000000000a13e68 CTR: c0000000000579f8
      REGS: c00000009924f240 TRAP: 0300   Not tainted  (6.7.0-203405+)
      MSR:  8000000000009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 24002220  XER: 20040006
      CFAR: c000000000a13e64 DAR: 0000000000000030 DSISR: 40000000 IRQMASK: 0
      ...
      NIP sysfs_add_link_to_group+0x34/0x94
      LR  iommu_device_link+0x5c/0x118
      Call Trace:
       iommu_init_device+0x26c/0x318 (unreliable)
       iommu_device_link+0x5c/0x118
       iommu_init_device+0xa8/0x318
       iommu_probe_device+0xc0/0x134
       iommu_bus_notifier+0x44/0x104
       notifier_call_chain+0xb8/0x19c
       blocking_notifier_call_chain+0x64/0x98
       bus_notify+0x50/0x7c
       device_add+0x640/0x918
       pci_device_add+0x23c/0x298
       of_create_pci_dev+0x400/0x884
       of_scan_pci_dev+0x124/0x1b0
       __of_scan_bus+0x78/0x18c
       pcibios_scan_phb+0x2a4/0x3b0
       init_phb_dynamic+0xb8/0x110
       dlpar_add_slot+0x170/0x3b8 [rpadlpar_io]
       add_slot_store.part.0+0xb4/0x130 [rpadlpar_io]
       kobj_attr_store+0x2c/0x48
       sysfs_kf_write+0x64/0x78
       kernfs_fop_write_iter+0x1b0/0x290
       vfs_write+0x350/0x4a0
       ksys_write+0x84/0x140
       system_call_exception+0x124/0x330
       system_call_vectored_common+0x15c/0x2ec
    
    Commit a940904 ("powerpc/iommu: Add iommu_ops to report capabilities
    and allow blocking domains") broke DLPAR add of PCI devices.
    
    The above added iommu_device structure to pci_controller. During
    system boot, PCI devices are discovered and this newly added iommu_device
    structure is initialized by a call to iommu_device_register().
    
    During DLPAR add of a PCI device, a new pci_controller structure is
    allocated but there are no calls made to iommu_device_register()
    interface.
    
    Fix is to register the iommu device during DLPAR add as well.
    
    Fixes: a940904 ("powerpc/iommu: Add iommu_ops to report capabilities and allow blocking domains")
    Signed-off-by: Gaurav Batra <[email protected]>
    [mpe: Trim oops and tweak some change log wording]
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Gaurav Batra authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    12b55cf View commit details
    Browse the repository at this point in the history
  33. powerpc/6xx: set High BAT Enable flag on G2_LE cores

    [ Upstream commit a038a3f ]
    
    MMU_FTR_USE_HIGH_BATS is set for G2_LE cores and derivatives like e300cX,
    but the high BATs need to be enabled in HID2 to work. Add register
    definitions and add the needed setup to __setup_cpu_603.
    
    This fixes boot on CPUs like the MPC5200B with STRICT_KERNEL_RWX enabled
    on systems where the flag has not been set by the bootloader already.
    
    Fixes: e4d6654 ("powerpc/mm/32s: rework mmu_mapin_ram()")
    Signed-off-by: Matthias Schiffer <[email protected]>
    Reviewed-by: Christophe Leroy <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    tq-schifferm authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    04375cb View commit details
    Browse the repository at this point in the history
  34. powerpc/kasan: Fix addr error caused by page alignment

    [ Upstream commit 4a7aee9 ]
    
    In kasan_init_region, when k_start is not page aligned, at the begin of
    for loop, k_cur = k_start & PAGE_MASK is less than k_start, and then
    `va = block + k_cur - k_start` is less than block, the addr va is invalid,
    because the memory address space from va to block is not alloced by
    memblock_alloc, which will not be reserved by memblock_reserve later, it
    will be used by other places.
    
    As a result, memory overwriting occurs.
    
    for example:
    int __init __weak kasan_init_region(void *start, size_t size)
    {
    [...]
    	/* if say block(dcd97000) k_start(feef7400) k_end(feeff3fe) */
    	block = memblock_alloc(k_end - k_start, PAGE_SIZE);
    	[...]
    	for (k_cur = k_start & PAGE_MASK; k_cur < k_end; k_cur += PAGE_SIZE) {
    		/* at the begin of for loop
    		 * block(dcd97000) va(dcd96c00) k_cur(feef7000) k_start(feef7400)
    		 * va(dcd96c00) is less than block(dcd97000), va is invalid
    		 */
    		void *va = block + k_cur - k_start;
    		[...]
    	}
    [...]
    }
    
    Therefore, page alignment is performed on k_start before
    memblock_alloc() to ensure the validity of the VA address.
    
    Fixes: 663c0c9 ("powerpc/kasan: Fix shadow area set up for modules.")
    Signed-off-by: Jiangfeng Xiao <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    xiaojiangfeng authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    70ef2ba View commit details
    Browse the repository at this point in the history
  35. Revert "kobject: Remove redundant checks for whether ktype is NULL"

    [ Upstream commit 3ca8fba ]
    
    This reverts commit 1b28cb8.
    
    It is reported to cause problems, so revert it for now until the root
    cause can be found.
    
    Reported-by: kernel test robot <[email protected]>
    Fixes: 1b28cb8 ("kobject: Remove redundant checks for whether ktype is NULL")
    Cc: Zhen Lei <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Link: https://lore.kernel.org/r/2024020849-consensus-length-6264@gregkh
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b746d52 View commit details
    Browse the repository at this point in the history
  36. PCI: Fix active state requirement in PME polling

    [ Upstream commit 41044d5 ]
    
    The commit noted in fixes added a bogus requirement that runtime PM managed
    devices need to be in the RPM_ACTIVE state for PME polling.  In fact, only
    devices in low power states should be polled.
    
    However there's still a requirement that the device config space must be
    accessible, which has implications for both the current state of the polled
    device and the parent bridge, when present.  It's not sufficient to assume
    the bridge remains in D0 and cases have been observed where the bridge
    passes the D0 test, but the PM state indicates RPM_SUSPENDING and config
    space of the polled device becomes inaccessible during pci_pme_wakeup().
    
    Therefore, since the bridge is already effectively required to be in the
    RPM_ACTIVE state, formalize this in the code and elevate the PM usage count
    to maintain the state while polling the subordinate device.
    
    This resolves a regression reported in the bugzilla below where a
    Thunderbolt/USB4 hierarchy fails to scan for an attached NVMe endpoint
    downstream of a bridge in a D3hot power state.
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: d3fcd73 ("PCI: Fix runtime PM race with PME polling")
    Reported-by: Sanath S <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218360
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Sanath S <[email protected]>
    Reviewed-by: Rafael J. Wysocki <[email protected]>
    Cc: Lukas Wunner <[email protected]>
    Cc: Mika Westerberg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    awilliam authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a4f12e5 View commit details
    Browse the repository at this point in the history
  37. iio: adc: ad4130: zero-initialize clock init data

    [ Upstream commit a22b0a2 ]
    
    The clk_init_data struct does not have all its members
    initialized, causing issues when trying to expose the internal
    clock on the CLK pin.
    
    Fix this by zero-initializing the clk_init_data struct.
    
    Fixes: 6209406 ("iio: adc: ad4130: add AD4130 driver")
    Signed-off-by: Cosmin Tanislav <[email protected]>
    Reviewed-by: Nuno Sa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Demon000 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    02876e2 View commit details
    Browse the repository at this point in the history
  38. iio: adc: ad4130: only set GPIO_CTRL if pin is unused

    [ Upstream commit 78367c3 ]
    
    Currently, GPIO_CTRL bits are set even if the pins are used for
    measurements.
    
    GPIO_CTRL bits should only be set if the pin is not used for
    other functionality.
    
    Fix this by only setting the GPIO_CTRL bits if the pin has no
    other function.
    
    Fixes: 6209406 ("iio: adc: ad4130: add AD4130 driver")
    Signed-off-by: Cosmin Tanislav <[email protected]>
    Reviewed-by: Nuno Sa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Demon000 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    94a3da1 View commit details
    Browse the repository at this point in the history
  39. cifs: fix underflow in parse_server_interfaces()

    [ Upstream commit cffe487 ]
    
    In this loop, we step through the buffer and after each item we check
    if the size_left is greater than the minimum size we need.  However,
    the problem is that "bytes_left" is type ssize_t while sizeof() is type
    size_t.  That means that because of type promotion, the comparison is
    done as an unsigned and if we have negative bytes left the loop
    continues instead of ending.
    
    Fixes: fe856be ("CIFS: parse and store info on iface queries")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Shyam Prasad N <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Dan Carpenter authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    df2af9f View commit details
    Browse the repository at this point in the history
  40. i2c: qcom-geni: Correct I2C TRE sequence

    [ Upstream commit 83ef106 ]
    
    For i2c read operation in GSI mode, we are getting timeout
    due to malformed TRE basically incorrect TRE sequence
    in gpi(drivers/dma/qcom/gpi.c) driver.
    
    I2C driver has geni_i2c_gpi(I2C_WRITE) function which generates GO TRE and
    geni_i2c_gpi(I2C_READ)generates DMA TRE. Hence to generate GO TRE before
    DMA TRE, we should move geni_i2c_gpi(I2C_WRITE) before
    geni_i2c_gpi(I2C_READ) inside the I2C GSI mode transfer function
    i.e. geni_i2c_gpi_xfer().
    
    TRE stands for Transfer Ring Element - which is basically an element with
    size of 4 words. It contains all information like slave address,
    clk divider, dma address value data size etc).
    
    Mainly we have 3 TREs(Config, GO and DMA tre).
    - CONFIG TRE : consists of internal register configuration which is
                   required before start of the transfer.
    - DMA TRE :    contains DDR/Memory address, called as DMA descriptor.
    - GO TRE :     contains Transfer directions, slave ID, Delay flags, Length
                   of the transfer.
    
    I2c driver calls GPI driver API to config each TRE depending on the
    protocol.
    
    For read operation tre sequence will be as below which is not aligned
    to hardware programming guide.
    
    - CONFIG tre
    - DMA tre
    - GO tre
    
    As per Qualcomm's internal Hardware Programming Guide, we should configure
    TREs in below sequence for any RX only transfer.
    
    - CONFIG tre
    - GO tre
    - DMA tre
    
    Fixes: d870355 ("i2c: qcom-geni: Add support for GPI DMA")
    Reviewed-by: Andi Shyti <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Tested-by: Bryan O'Donoghue <[email protected]> # qrb5165-rb5
    Co-developed-by: Mukesh Kumar Savaliya <[email protected]>
    Signed-off-by: Mukesh Kumar Savaliya <[email protected]>
    Signed-off-by: Viken Dadhaniya <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Viken Dadhaniya authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9318483 View commit details
    Browse the repository at this point in the history
  41. irqchip/loongson-eiointc: Use correct struct type in eiointc_domain_a…

    …lloc()
    
    [ Upstream commit f1c2765 ]
    
    eiointc_domain_alloc() uses struct eiointc, which is not defined, for a
    pointer. Older compilers treat that as a forward declaration and due to
    assignment of a void pointer there is no warning emitted. As the variable
    is then handed in as a void pointer argument to irq_domain_set_info() the
    code is functional.
    
    Use struct eiointc_priv instead.
    
    [ tglx: Rewrote changelog ]
    
    Fixes: dd281e1 ("irqchip: Add Loongson Extended I/O interrupt controller support")
    Signed-off-by: Bibo Mao <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Huacai Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    bibo-mao authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4e09477 View commit details
    Browse the repository at this point in the history
  42. irqchip/gic-v3-its: Handle non-coherent GICv4 redistributors

    [ Upstream commit 846297e ]
    
    Although the GICv3 code base has gained some handling of systems failing to
    handle the shareability attributes, the GICv4 side of things has been
    firmly ignored.
    
    This is unfortunate, as the new recent addition of the "dma-noncoherent" is
    supposed to apply to all of the GICR tables, and not just the ones that are
    common to v3 and v4.
    
    Add some checks to handle the VPROPBASE/VPENDBASE shareability and
    cacheability attributes in the same way we deal with the other GICR_BASE
    registers, wrapping the flag check in a helper for improved readability.
    
    Note that this has been found by inspection only, as I don't have access to
    HW that suffers from this particular issue.
    
    Fixes: 3a0fff0 ("irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing")
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Lorenzo Pieralisi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Marc Zyngier authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d5ca650 View commit details
    Browse the repository at this point in the history
  43. powerpc/kasan: Limit KASAN thread size increase to 32KB

    [ Upstream commit f1acb10 ]
    
    KASAN is seen to increase stack usage, to the point that it was reported
    to lead to stack overflow on some 32-bit machines (see link).
    
    To avoid overflows the stack size was doubled for KASAN builds in
    commit 3e8635f ("powerpc/kasan: Force thread size increase with
    KASAN").
    
    However with a 32KB stack size to begin with, the doubling leads to a
    64KB stack, which causes build errors:
      arch/powerpc/kernel/switch.S:249: Error: operand out of range (0x000000000000fe50 is not between 0xffffffffffff8000 and 0x0000000000007fff)
    
    Although the asm could be reworked, in practice a 32KB stack seems
    sufficient even for KASAN builds - the additional usage seems to be in
    the 2-3KB range for a 64-bit KASAN build.
    
    So only increase the stack for KASAN if the stack size is < 32KB.
    
    Fixes: 18f14af ("powerpc/64s: Increase default stack size to 32KB")
    Reported-by: Spoorthy <[email protected]>
    Reported-by: Benjamin Gray <[email protected]>
    Reviewed-by: Benjamin Gray <[email protected]>
    Link: https://lore.kernel.org/linuxppc-dev/[email protected]%2F/
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    mpe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b29b16b View commit details
    Browse the repository at this point in the history
  44. powerpc/iommu: Fix the missing iommu_group_put() during platform doma…

    …in attach
    
    [ Upstream commit 0846dd7 ]
    
    The function spapr_tce_platform_iommu_attach_dev() is missing to call
    iommu_group_put() when the domain is already set. This refcount leak
    shows up with BUG_ON() during DLPAR remove operation as:
    
      KernelBug: Kernel bug in state 'None': kernel BUG at arch/powerpc/platforms/pseries/iommu.c:100!
      Oops: Exception in kernel mode, sig: 5 [#1]
      LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=8192 NUMA pSeries
      <snip>
      Hardware name: IBM,9080-HEX POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NH1060_016) hv:phyp pSeries
      NIP:  c0000000000ff4d4 LR: c0000000000ff4cc CTR: 0000000000000000
      REGS: c0000013aed5f840 TRAP: 0700   Tainted: G          I         (6.8.0-rc3-autotest-g99bd3cb0d12e)
      MSR:  8000000000029033 <SF,EE,ME,IR,DR,RI,LE>  CR: 44002402  XER: 20040000
      CFAR: c000000000a0d170 IRQMASK: 0
      ...
      NIP iommu_reconfig_notifier+0x94/0x200
      LR  iommu_reconfig_notifier+0x8c/0x200
      Call Trace:
        iommu_reconfig_notifier+0x8c/0x200 (unreliable)
        notifier_call_chain+0xb8/0x19c
        blocking_notifier_call_chain+0x64/0x98
        of_reconfig_notify+0x44/0xdc
        of_detach_node+0x78/0xb0
        ofdt_write.part.0+0x86c/0xbb8
        proc_reg_write+0xf4/0x150
        vfs_write+0xf8/0x488
        ksys_write+0x84/0x140
        system_call_exception+0x138/0x330
        system_call_vectored_common+0x15c/0x2ec
    
    The patch adds the missing iommu_group_put() call.
    
    Fixes: a8ca9fc ("powerpc/iommu: Do not do platform domain attach atctions after probe")
    Reported-by: Venkat Rao Bagalkote <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Shivaprasad G Bhat <[email protected]>
    Tested-by: Venkat Rao Bagalkote <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    ShivaprasadGBhat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c90fdea View commit details
    Browse the repository at this point in the history
  45. i2c: pasemi: split driver into two separate modules

    [ Upstream commit f44bff1 ]
    
    On powerpc, it is possible to compile test both the new apple (arm) and
    old pasemi (powerpc) drivers for the i2c hardware at the same time,
    which leads to a warning about linking the same object file twice:
    
    scripts/Makefile.build:244: drivers/i2c/busses/Makefile: i2c-pasemi-core.o is added to multiple modules: i2c-apple i2c-pasemi
    
    Rework the driver to have an explicit helper module, letting Kbuild
    take care of whether this should be built-in or a loadable driver.
    
    Fixes: 9bc5f4f ("i2c: pasemi: Split pci driver to its own file")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Sven Peter <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    arndb authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b50d5ba View commit details
    Browse the repository at this point in the history
  46. i2c: i801: Fix block process call transactions

    [ Upstream commit c1c9d0f ]
    
    According to the Intel datasheets, software must reset the block
    buffer index twice for block process call transactions: once before
    writing the outgoing data to the buffer, and once again before
    reading the incoming data from the buffer.
    
    The driver is currently missing the second reset, causing the wrong
    portion of the block buffer to be read.
    
    Signed-off-by: Jean Delvare <[email protected]>
    Reported-by: Piotr Zakowski <[email protected]>
    Closes: https://lore.kernel.org/linux-i2c/[email protected]/
    Fixes: 315cd67 ("i2c: i801: Add Block Write-Block Read Process Call support")
    Reviewed-by: Alexander Sverdlin <[email protected]>
    Signed-off-by: Andi Shyti <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    jdelvare authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    609c7c1 View commit details
    Browse the repository at this point in the history
  47. modpost: trim leading spaces when processing source files list

    [ Upstream commit 5d9a16b ]
    
    get_line() does not trim the leading spaces, but the
    parse_source_files() expects to get lines with source files paths where
    the first space occurs after the file path.
    
    Fixes: 70f30cf ("modpost: use read_text_file() and get_line() for reading text files")
    Signed-off-by: Radek Krejci <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    rkrejci authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    14bcdb2 View commit details
    Browse the repository at this point in the history
  48. kallsyms: ignore ARMv4 thunks along with others

    [ Upstream commit a951884 ]
    
    lld is now able to build ARMv4 and ARMv4T kernels, which means it can
    generate thunks for those (__ARMv4PILongThunk_*, __ARMv4PILongBXThunk_*)
    that can interfere with kallsyms table generation since they do not get
    ignore like the corresponding ARMv5+ ones are:
    
    Inconsistent kallsyms data
    Try "make KALLSYMS_EXTRA_PASS=1" as a workaround
    
    Replace the hardcoded list of thunk symbols with a more general regex that
    covers this one along with future symbols that follow the same pattern.
    
    Fixes: 5eb6e28 ("ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer")
    Fixes: efe6e30 ("kallsyms: fix nonconverging kallsyms table with lld")
    Suggested-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Arnd Bergmann <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    arndb authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    753b1a5 View commit details
    Browse the repository at this point in the history
  49. mptcp: fix data re-injection from stale subflow

    commit b6c620d upstream.
    
    When the MPTCP PM detects that a subflow is stale, all the packet
    scheduler must re-inject all the mptcp-level unacked data. To avoid
    acquiring unneeded locks, it first try to check if any unacked data
    is present at all in the RTX queue, but such check is currently
    broken, as it uses TCP-specific helper on an MPTCP socket.
    
    Funnily enough fuzzers and static checkers are happy, as the accessed
    memory still belongs to the mptcp_sock struct, and even from a
    functional perspective the recovery completed successfully, as
    the short-cut test always failed.
    
    A recent unrelated TCP change - commit d5fed5a ("tcp: reorganize
    tcp_sock fast path variables") - exposed the issue, as the tcp field
    reorganization makes the mptcp code always skip the re-inection.
    
    Fix the issue dropping the bogus call: we are on a slow path, the early
    optimization proved once again to be evil.
    
    Fixes: 1e1d9d6 ("mptcp: handle pending data on closed subflow")
    Cc: [email protected]
    Closes: multipath-tcp/mptcp_net-next#468
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/20240131-upstream-net-20240131-mptcp-ci-issues-v1-1-4c1c11e571ff@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Paolo Abeni authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    624902e View commit details
    Browse the repository at this point in the history
  50. selftests: mptcp: add missing kconfig for NF Filter

    commit 3645c84 upstream.
    
    Since the commit mentioned below, 'mptcp_join' selftests is using
    IPTables to add rules to the Filter table.
    
    It is then required to have IP_NF_FILTER KConfig.
    
    This KConfig is usually enabled by default in many defconfig, but we
    recently noticed that some CI were running our selftests without them
    enabled.
    
    Fixes: 8d014ea ("selftests: mptcp: add ADD_ADDR timeout test case")
    Cc: [email protected]
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    matttbe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2134f4f View commit details
    Browse the repository at this point in the history
  51. selftests: mptcp: add missing kconfig for NF Filter in v6

    commit 8c86fad upstream.
    
    Since the commit mentioned below, 'mptcp_join' selftests is using
    IPTables to add rules to the Filter table for IPv6.
    
    It is then required to have IP6_NF_FILTER KConfig.
    
    This KConfig is usually enabled by default in many defconfig, but we
    recently noticed that some CI were running our selftests without them
    enabled.
    
    Fixes: 523514e ("selftests: mptcp: add ADD_ADDR IPv6 test cases")
    Cc: [email protected]
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/20240131-upstream-net-20240131-mptcp-ci-issues-v1-3-4c1c11e571ff@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    matttbe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9734023 View commit details
    Browse the repository at this point in the history
  52. selftests: mptcp: add missing kconfig for NF Mangle

    commit 2d41f10 upstream.
    
    Since the commit mentioned below, 'mptcp_join' selftests is using
    IPTables to add rules to the Mangle table, only in IPv4.
    
    This KConfig is usually enabled by default in many defconfig, but we
    recently noticed that some CI were running our selftests without them
    enabled.
    
    Fixes: b6e074e ("selftests: mptcp: add infinite map testcase")
    Cc: [email protected]
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/20240131-upstream-net-20240131-mptcp-ci-issues-v1-4-4c1c11e571ff@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    matttbe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9afd7d7 View commit details
    Browse the repository at this point in the history
  53. selftests: mptcp: increase timeout to 30 min

    commit 4d4dfb2 upstream.
    
    On very slow environments -- e.g. when QEmu is used without KVM --,
    mptcp_join.sh selftest can take a bit more than 20 minutes. Bump the
    default timeout by 50% as it seems normal to take that long on some
    environments.
    
    When a debug kernel config is used, this selftest will take even longer,
    but that's certainly not a common test env to consider for the timeout.
    
    The Fixes tag that has been picked here is there simply to help having
    this patch backported to older stable versions. It is difficult to point
    to the exact commit that made some env reaching the timeout from time to
    time.
    
    Fixes: d17b968 ("selftests: mptcp: increase timeout to 20 minutes")
    Cc: [email protected]
    Acked-by: Paolo Abeni <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/20240131-upstream-net-20240131-mptcp-ci-issues-v1-5-4c1c11e571ff@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    matttbe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c593bfe View commit details
    Browse the repository at this point in the history
  54. selftests: mptcp: allow changing subtests prefix

    commit de46d13 upstream.
    
    If a CI executes the same selftest multiple times with different
    options, all results from the same subtests will have the same title,
    which confuse the CI. With the same title printed in TAP, the tests are
    considered as the same ones.
    
    Now, it is possible to override this prefix by using MPTCP_LIB_KSFT_TEST
    env var, and have a different title.
    
    While at it, use 'basename' to remove the suffix as well instead of
    using an extra 'sed'.
    
    Fixes: c419296 ("selftests: mptcp: lib: format subtests results in TAP")
    Cc: [email protected]
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://lore.kernel.org/r/20240131-upstream-net-20240131-mptcp-ci-issues-v1-7-4c1c11e571ff@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    matttbe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d5687d3 View commit details
    Browse the repository at this point in the history
  55. selftests: mptcp: add mptcp_lib_kill_wait

    commit bdbef0a upstream.
    
    To avoid duplicated code in different MPTCP selftests, we can add
    and use helpers defined in mptcp_lib.sh.
    
    Export kill_wait() helper in userspace_pm.sh into mptcp_lib.sh and
    rename it as mptcp_lib_kill_wait(). It can be used to instead of
    kill_wait() in mptcp_join.sh. Use the new helper in both scripts.
    
    Reviewed-by: Matthieu Baerts <[email protected]>
    Signed-off-by: Geliang Tang <[email protected]>
    Signed-off-by: Mat Martineau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    geliangtang authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    46e8e29 View commit details
    Browse the repository at this point in the history
  56. mptcp: drop the push_pending field

    commit bdd70eb upstream.
    
    Such field is there to avoid acquiring the data lock in a few spots,
    but it adds complexity to the already non trivial locking schema.
    
    All the relevant call sites (mptcp-level re-injection, set socket
    options), are slow-path, drop such field in favor of 'cb_flags', adding
    the relevant locking.
    
    This patch could be seen as an improvement, instead of a fix. But it
    simplifies the next patch. The 'Fixes' tag has been added to help having
    this series backported to stable.
    
    Fixes: e9d09ba ("mptcp: avoid atomic bit manipulation when possible")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Paolo Abeni authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    427ef4a View commit details
    Browse the repository at this point in the history
  57. mptcp: fix rcv space initialization

    commit 013e317 upstream.
    
    mptcp_rcv_space_init() is supposed to happen under the msk socket
    lock, but active msk socket does that without such protection.
    
    Leverage the existing mptcp_propagate_state() helper to that extent.
    We need to ensure mptcp_rcv_space_init will happen before
    mptcp_rcv_space_adjust(), and the release_cb does not assure that:
    explicitly check for such condition.
    
    While at it, move the wnd_end initialization out of mptcp_rcv_space_init(),
    it never belonged there.
    
    Note that the race does not produce ill effect in practice, but
    change allows cleaning-up and defying better the locking model.
    
    Fixes: a6b118f ("mptcp: add receive buffer auto-tuning")
    Cc: [email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Paolo Abeni authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    326ec67 View commit details
    Browse the repository at this point in the history
  58. mptcp: check addrs list in userspace_pm_get_local_id

    commit f012d79 upstream.
    
    Before adding a new entry in mptcp_userspace_pm_get_local_id(), it's
    better to check whether this address is already in userspace pm local
    address list. If it's in the list, no need to add a new entry, just
    return it's address ID and use this address.
    
    Fixes: 8b20137 ("mptcp: read attributes of addr entries managed by userspace PMs")
    Cc: [email protected]
    Signed-off-by: Geliang Tang <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    geliangtang authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    005a3ad View commit details
    Browse the repository at this point in the history
  59. mptcp: really cope with fastopen race

    commit 337cebb upstream.
    
    Fastopen and PM-trigger subflow shutdown can race, as reported by
    syzkaller.
    
    In my first attempt to close such race, I missed the fact that
    the subflow status can change again before the subflow_state_change
    callback is invoked.
    
    Address the issue additionally copying with all the states directly
    reachable from TCP_FIN_WAIT1.
    
    Fixes: 1e777f3 ("mptcp: add MSG_FASTOPEN sendmsg flag support")
    Fixes: 4fd19a3 ("mptcp: fix inconsistent state on fastopen race")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: multipath-tcp/mptcp_net-next#458
    Signed-off-by: Paolo Abeni <[email protected]>
    Reviewed-by: Mat Martineau <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Paolo Abeni authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e158fb9 View commit details
    Browse the repository at this point in the history
  60. Revert "powerpc/pseries/iommu: Fix iommu initialisation during DLPAR …

    …add"
    
    commit 1fba2bf upstream.
    
    This reverts commit ed8b94f.
    
    Gaurav reported that there are still problems with the patch and it
    should be reverted pending a fuller fix.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Michael Ellerman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mpe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d4f762d View commit details
    Browse the repository at this point in the history
  61. media: Revert "media: rkisp1: Drop IRQF_SHARED"

    commit a107d64 upstream.
    
    This reverts commit 85d2a31.
    
    The rkisp1 does share interrupt lines on some platforms, after all. Thus
    we need to revert this, and implement a fix for the rkisp1 shared irq
    handling in a follow-up patch.
    
    Closes: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    
    Reported-by: Mikhail Rudenko <[email protected]>
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    tomba authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ceaf2d0 View commit details
    Browse the repository at this point in the history
  62. scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock"

    commit 977fe77 upstream.
    
    This reverts commit 1a19755.
    
    This commit causes interrupts to be lost for FCoE devices, since it changed
    sping locks from "bh" to "irqsave".
    
    Instead, a work queue should be used, and will be addressed in a separate
    commit.
    
    Fixes: 1a19755 ("scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock")
    Signed-off-by: Lee Duncan <[email protected]>
    Link: https://lore.kernel.org/r/c578cdcd46b60470535c4c4a953e6a1feca0dffd.1707500786.git.lduncan@suse.com
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    gonzoleeman authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2567515 View commit details
    Browse the repository at this point in the history
  63. Revert "drm/amd: flush any delayed gfxoff on suspend entry"

    commit 9163616 upstream.
    
    commit ab47503 ("drm/amdgpu/sdma5.2: add begin/end_use ring
    callbacks") caused GFXOFF control to be used more heavily and the
    codepath that was removed from commit 0dee726 ("drm/amd: flush any
    delayed gfxoff on suspend entry") now can be exercised at suspend again.
    
    Users report that by using GNOME to suspend the lockscreen trigger will
    cause SDMA traffic and the system can deadlock.
    
    This reverts commit 0dee726.
    
    Acked-by: Alex Deucher <[email protected]>
    Fixes: ab47503 ("drm/amdgpu/sdma5.2: add begin/end_use ring callbacks")
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    superm1 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d855ceb View commit details
    Browse the repository at this point in the history
  64. Revert "drm/msm/gpu: Push gpu lock down past runpm"

    commit 917e9b7 upstream.
    
    This reverts commit abe2023.
    
    Changing the locking order means that scheduler/msm_job_run() can race
    with the recovery kthread worker, with the result that the GPU gets an
    extra runpm get when we are trying to power it off.  Leaving the GPU in
    an unrecovered state.
    
    I'll need to come up with a different scheme for appeasing lockdep.
    
    Signed-off-by: Rob Clark <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/573835/
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    robclark authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    33414f5 View commit details
    Browse the repository at this point in the history
  65. connector/cn_proc: revert "connector: Fix proc_event_num_listeners co…

    …unt not cleared"
    
    commit 8929f95 upstream.
    
    This reverts commit c46bfba ("connector: Fix proc_event_num_listeners
    count not cleared").
    
    It is not accurate to reset proc_event_num_listeners according to
    cn_netlink_send_mult() return value -ESRCH.
    
    In the case of stress-ng netlink-proc, -ESRCH will always be returned,
    because netlink_broadcast_filtered will return -ESRCH,
    which may cause stress-ng netlink-proc performance degradation.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Fixes: c46bfba ("connector: Fix proc_event_num_listeners count not cleared")
    Signed-off-by: Keqi Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    wangkeqichris authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7803ac5 View commit details
    Browse the repository at this point in the history
  66. spi: omap2-mcspi: Revert FIFO support without DMA

    commit e56c671 upstream.
    
    MCSPI controller have few limitations regarding the transaction
    size when the FIFO buffer is enabled and the WCNT feature is used
    to find the end of word, in this case if WCNT is not a multiple of
    the FIFO Almost Empty Level (AEL), then the FIFO empty event is not
    generated correctly. In addition to this limitation, few other unknown
    sequence of events that causes the FIFO empty status to not reflect the
    exact status were found when FIFO is being used without DMA enabled
    during extended testing in AM65x platform. Till the exact root cause
    is found and fixed, revert the FIFO support without DMA.
    
    See J721E Technical Reference Manual (SPRUI1C), section 12.1.5
    for further details: http://www.ti.com/lit/pdf/spruil1
    
    This reverts commit 75223bb ("spi: omap2-mcspi: Add FIFO support
    without DMA")
    
    Signed-off-by: Vaishnav Achath <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    vaishnavachath authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ff0dc12 View commit details
    Browse the repository at this point in the history
  67. drm/virtio: Set segment size for virtio_gpu device

    commit 9c64e74 upstream.
    
    Set the segment size of the virtio_gpu device to the value
    used by the drm helpers when allocating sg lists to fix the
    following complaint from DMA_API debug code:
    
    DMA-API: virtio-pci 0000:07:00.0: mapping sg segment longer than
    device claims to support [len=262144] [max=65536]
    
    Cc: [email protected]
    Tested-by: Zhenyu Zhang <[email protected]>
    Acked-by: Vivek Kasireddy <[email protected]>
    Signed-off-by: Sebastian Ott <[email protected]>
    Signed-off-by: Dmitry Osipenko <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Sebastian Ott authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    aca0c7d View commit details
    Browse the repository at this point in the history
  68. drm/amdgpu: Reset IH OVERFLOW_CLEAR bit

    commit 7330256 upstream.
    
    Allows us to detect subsequent IH ring buffer overflows as well.
    
    Cc: Joshua Ashton <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: [email protected]
    Signed-off-by: Friedrich Vock <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    pixelcluster authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2827633 View commit details
    Browse the repository at this point in the history
  69. drm/amd: Don't init MEC2 firmware when it fails to load

    commit 8ef85a0 upstream.
    
    The same calls are made directly above, but conditional on the firmware
    loading and validating successfully.
    
    Cc: [email protected]
    Fixes: 9931b67 ("drm/amd: Load GFX10 microcode during early_init")
    Signed-off-by: David McFarland <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    corngood authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    32208e4 View commit details
    Browse the repository at this point in the history
  70. drm/amd/display: fix incorrect mpc_combine array size

    commit 39079fe upstream.
    
    [why]
    MAX_SURFACES is per stream, while MAX_PLANES is per asic. The
    mpc_combine is an array that records all the planes per asic. Therefore
    MAX_PLANES should be used as the array size. Using MAX_SURFACES causes
    array overflow when there are more than 3 planes.
    
    [how]
    Use the MAX_PLANES for the mpc_combine array size.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: [email protected]
    Reviewed-by: Rodrigo Siqueira <[email protected]>
    Reviewed-by: Nevenko Stupar <[email protected]>
    Reviewed-by: Chaitanya Dhere <[email protected]>
    Acked-by: Tom Chung <[email protected]>
    Signed-off-by: Wenjing Liu <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Wenjing Liu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0bd8ef6 View commit details
    Browse the repository at this point in the history
  71. drm/amd/display: Fix dcn35 8k30 Underflow/Corruption Issue

    commit faf51b2 upstream.
    
    [why]
    odm calculation is missing for pipe split policy determination
    and cause Underflow/Corruption issue.
    
    [how]
    Add the odm calculation.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: [email protected]
    Reviewed-by: Charlene Liu <[email protected]>
    Acked-by: Tom Chung <[email protected]>
    Signed-off-by: Fangzhi Zuo <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Fangzhi Zuo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cdbe0be View commit details
    Browse the repository at this point in the history
  72. lsm: fix default return value of the socket_getpeersec_*() hooks

    commit 5a287d3 upstream.
    
    For these hooks the true "neutral" value is -EOPNOTSUPP, which is
    currently what is returned when no LSM provides this hook and what LSMs
    return when there is no security context set on the socket. Correct the
    value in <linux/lsm_hooks.h> and adjust the dispatch functions in
    security/security.c to avoid issues when the BPF LSM is enabled.
    
    Cc: [email protected]
    Fixes: 98e828a ("security: Refactor declaration of LSM hooks")
    Signed-off-by: Ondrej Mosnacek <[email protected]>
    [PM: subject line tweak]
    Signed-off-by: Paul Moore <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    WOnder93 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    31285b5 View commit details
    Browse the repository at this point in the history
  73. lsm: fix the logic in security_inode_getsecctx()

    commit 99b817c upstream.
    
    The inode_getsecctx LSM hook has previously been corrected to have
    -EOPNOTSUPP instead of 0 as the default return value to fix BPF LSM
    behavior. However, the call_int_hook()-generated loop in
    security_inode_getsecctx() was left treating 0 as the neutral value, so
    after an LSM returns 0, the loop continues to try other LSMs, and if one
    of them returns a non-zero value, the function immediately returns with
    said value. So in a situation where SELinux and the BPF LSMs registered
    this hook, -EOPNOTSUPP would be incorrectly returned whenever SELinux
    returned 0.
    
    Fix this by open-coding the call_int_hook() loop and making it use the
    correct LSM_RET_DEFAULT() value as the neutral one, similar to what
    other hooks do.
    
    Cc: [email protected]
    Reported-by: Stephen Smalley <[email protected]>
    Link: https://lore.kernel.org/selinux/CAEjxPJ4ev-pasUwGx48fDhnmjBnq_Wh90jYPwRQRAqXxmOKD4Q@mail.gmail.com/
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2257983
    Fixes: b36995b ("lsm: fix default return value for inode_getsecctx")
    Signed-off-by: Ondrej Mosnacek <[email protected]>
    Reviewed-by: Casey Schaufler <[email protected]>
    [PM: subject line tweak]
    Signed-off-by: Paul Moore <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    WOnder93 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d5d037f View commit details
    Browse the repository at this point in the history
  74. firewire: core: correct documentation of fw_csr_string() kernel API

    commit 5f9ab17 upstream.
    
    Against its current description, the kernel API can accepts all types of
    directory entries.
    
    This commit corrects the documentation.
    
    Cc: [email protected]
    Fixes: 3c2c58c ("firewire: core: fw_csr_string addendum")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Sakamoto <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    takaswie authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7a65128 View commit details
    Browse the repository at this point in the history
  75. ALSA: hda/realtek: Apply headset jack quirk for non-bass alc287 think…

    …pads
    
    commit 2468e89 upstream.
    
    There currently exists two thinkpad headset jack fixups:
    ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK
    ALC285_FIXUP_THINKPAD_HEADSET_JACK
    
    The latter is applied to alc285 and alc287 thinkpads which contain
    bass speakers.
    However, the former was only being applied to alc285 thinkpads,
    leaving non-bass alc287 thinkpads with no headset button controls.
    This patch fixes that by adding ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK
    to the alc287 chains, allowing the detection of headset buttons.
    
    Signed-off-by: José Relvas <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jrelvas-ipc authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b2e04d2 View commit details
    Browse the repository at this point in the history
  76. kbuild: Fix changing ELF file type for output of gen_btf for big endian

    commit e3a9ee9 upstream.
    
    Commit 90ceddc ("bpf: Support llvm-objcopy for vmlinux BTF")
    changed the ELF type of .btf.vmlinux.bin.o to ET_REL via dd, which works
    fine for little endian platforms:
    
       00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
      -00000010  03 00 b7 00 01 00 00 00  00 00 00 80 00 80 ff ff  |................|
      +00000010  01 00 b7 00 01 00 00 00  00 00 00 80 00 80 ff ff  |................|
    
    However, for big endian platforms, it changes the wrong byte, resulting
    in an invalid ELF file type, which ld.lld rejects:
    
       00000000  7f 45 4c 46 02 02 01 00  00 00 00 00 00 00 00 00  |.ELF............|
      -00000010  00 03 00 16 00 00 00 01  00 00 00 00 00 10 00 00  |................|
      +00000010  01 03 00 16 00 00 00 01  00 00 00 00 00 10 00 00  |................|
    
      Type:                              <unknown>: 103
    
      ld.lld: error: .btf.vmlinux.bin.o: unknown file type
    
    Fix this by updating the entire 16-bit e_type field rather than just a
    single byte, so that everything works correctly for all platforms and
    linkers.
    
       00000000  7f 45 4c 46 02 02 01 00  00 00 00 00 00 00 00 00  |.ELF............|
      -00000010  00 03 00 16 00 00 00 01  00 00 00 00 00 10 00 00  |................|
      +00000010  00 01 00 16 00 00 00 01  00 00 00 00 00 10 00 00  |................|
    
      Type:                              REL (Relocatable file)
    
    While in the area, update the comment to mention that binutils 2.35+
    matches LLD's behavior of rejecting an ET_EXEC input, which occurred
    after the comment was added.
    
    Cc: [email protected]
    Fixes: 90ceddc ("bpf: Support llvm-objcopy for vmlinux BTF")
    Link: llvm/llvm-project#75643
    Suggested-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Fangrui Song <[email protected]>
    Reviewed-by: Nicolas Schier <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Reviewed-by: Justin Stitt <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nathanchance authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6795037 View commit details
    Browse the repository at this point in the history
  77. nfc: nci: free rx_data_reassembly skb on NCI device cleanup

    commit bfb007a upstream.
    
    rx_data_reassembly skb is stored during NCI data exchange for processing
    fragmented packets. It is dropped only when the last fragment is processed
    or when an NTF packet with NCI_OP_RF_DEACTIVATE_NTF opcode is received.
    However, the NCI device may be deallocated before that which leads to skb
    leak.
    
    As by design the rx_data_reassembly skb is bound to the NCI device and
    nothing prevents the device to be freed before the skb is processed in
    some way and cleaned, free it on the NCI device cleanup.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 6a2968a ("NFC: basic NCI protocol implementation")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Fedor Pchelkin authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a3d90fb View commit details
    Browse the repository at this point in the history
  78. net: hsr: remove WARN_ONCE() in send_hsr_supervision_frame()

    commit 37e8c97 upstream.
    
    Syzkaller reported [1] hitting a warning after failing to allocate
    resources for skb in hsr_init_skb(). Since a WARN_ONCE() call will
    not help much in this case, it might be prudent to switch to
    netdev_warn_once(). At the very least it will suppress syzkaller
    reports such as [1].
    
    Just in case, use netdev_warn_once() in send_prp_supervision_frame()
    for similar reasons.
    
    [1]
    HSR: Could not send supervision frame
    WARNING: CPU: 1 PID: 85 at net/hsr/hsr_device.c:294 send_hsr_supervision_frame+0x60a/0x810 net/hsr/hsr_device.c:294
    RIP: 0010:send_hsr_supervision_frame+0x60a/0x810 net/hsr/hsr_device.c:294
    ...
    Call Trace:
     <IRQ>
     hsr_announce+0x114/0x370 net/hsr/hsr_device.c:382
     call_timer_fn+0x193/0x590 kernel/time/timer.c:1700
     expire_timers kernel/time/timer.c:1751 [inline]
     __run_timers+0x764/0xb20 kernel/time/timer.c:2022
     run_timer_softirq+0x58/0xd0 kernel/time/timer.c:2035
     __do_softirq+0x21a/0x8de kernel/softirq.c:553
     invoke_softirq kernel/softirq.c:427 [inline]
     __irq_exit_rcu kernel/softirq.c:632 [inline]
     irq_exit_rcu+0xb7/0x120 kernel/softirq.c:644
     sysvec_apic_timer_interrupt+0x95/0xb0 arch/x86/kernel/apic/apic.c:1076
     </IRQ>
     <TASK>
     asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:649
    ...
    
    This issue is also found in older kernels (at least up to 5.10).
    
    Cc: [email protected]
    Reported-by: [email protected]
    Fixes: 121c33b ("net: hsr: introduce common code for skb initialization")
    Signed-off-by: Nikita Zhandarovich <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Nikita Zhandarovich authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    547545e View commit details
    Browse the repository at this point in the history
  79. net: stmmac: do not clear TBS enable bit on link up/down

    commit 4896bb7 upstream.
    
    With the dma conf being reallocated on each call to stmmac_open(), any
    information in there is lost, unless we specifically handle it.
    
    The STMMAC_TBS_EN bit is set when adding an etf qdisc, and the etf qdisc
    therefore would stop working when link was set down and then back up.
    
    Fixes: ba39b34 ("net: ethernet: stmicro: stmmac: generate stmmac dma conf before open")
    Cc: [email protected]
    Signed-off-by: Esben Haabendal <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    esben authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8f1fd5d View commit details
    Browse the repository at this point in the history
  80. parisc: Fix random data corruption from exception handler

    commit 8b1d723 upstream.
    
    The current exception handler implementation, which assists when accessing
    user space memory, may exhibit random data corruption if the compiler decides
    to use a different register than the specified register %r29 (defined in
    ASM_EXCEPTIONTABLE_REG) for the error code. If the compiler choose another
    register, the fault handler will nevertheless store -EFAULT into %r29 and thus
    trash whatever this register is used for.
    Looking at the assembly I found that this happens sometimes in emulate_ldd().
    
    To solve the issue, the easiest solution would be if it somehow is
    possible to tell the fault handler which register is used to hold the error
    code. Using %0 or %1 in the inline assembly is not posssible as it will show
    up as e.g. %r29 (with the "%r" prefix), which the GNU assembler can not
    convert to an integer.
    
    This patch takes another, better and more flexible approach:
    We extend the __ex_table (which is out of the execution path) by one 32-word.
    In this word we tell the compiler to insert the assembler instruction
    "or %r0,%r0,%reg", where %reg references the register which the compiler
    choosed for the error return code.
    In case of an access failure, the fault handler finds the __ex_table entry and
    can examine the opcode. The used register is encoded in the lowest 5 bits, and
    the fault handler can then store -EFAULT into this register.
    
    Since we extend the __ex_table to 3 words we can't use the BUILDTIME_TABLE_SORT
    config option any longer.
    
    Signed-off-by: Helge Deller <[email protected]>
    Cc: <[email protected]> # v6.0+
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hdeller authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ce31d79 View commit details
    Browse the repository at this point in the history
  81. parisc: BTLB: Fix crash when setting up BTLB at CPU bringup

    commit 913b9d4 upstream.
    
    When using hotplug and bringing up a 32-bit CPU, ask the firmware about the
    BTLB information to set up the static (block) TLB entries.
    
    For that write access to the static btlb_info struct is needed, but
    since it is marked __ro_after_init the kernel segfaults with missing
    write permissions.
    
    Fix the crash by dropping the __ro_after_init annotation.
    
    Fixes: e5ef93d ("parisc: BTLB: Initialize BTLB tables at CPU startup")
    Signed-off-by: Helge Deller <[email protected]>
    Cc: <[email protected]> # v6.6+
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hdeller authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    aa52be5 View commit details
    Browse the repository at this point in the history
  82. xen-netback: properly sync TX responses

    commit 7b55984 upstream.
    
    Invoking the make_tx_response() / push_tx_responses() pair with no lock
    held would be acceptable only if all such invocations happened from the
    same context (NAPI instance or dealloc thread). Since this isn't the
    case, and since the interface "spec" also doesn't demand that multicast
    operations may only be performed with no in-flight transmits,
    MCAST_{ADD,DEL} processing also needs to acquire the response lock
    around the invocations.
    
    To prevent similar mistakes going forward, "downgrade" the present
    functions to private helpers of just the two remaining ones using them
    directly, with no forward declarations anymore. This involves renaming
    what so far was make_tx_response(), for the new function of that name
    to serve the new (wrapper) purpose.
    
    While there,
    - constify the txp parameters,
    - correct xenvif_idx_release()'s status parameter's type,
    - rename {,_}make_tx_response()'s status parameters for consistency with
      xenvif_idx_release()'s.
    
    Fixes: 210c34d ("xen-netback: add support for multicast control")
    Cc: [email protected]
    Signed-off-by: Jan Beulich <[email protected]>
    Reviewed-by: Paul Durrant <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jbeulich authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2c98846 View commit details
    Browse the repository at this point in the history
  83. um: Fix adding '-no-pie' for clang

    commit 846cfbe upstream.
    
    The kernel builds with -fno-PIE, so commit 883354a ("um: link
    vmlinux with -no-pie") added the compiler linker flag '-no-pie' via
    cc-option because '-no-pie' was only supported in GCC 6.1.0 and newer.
    
    While this works for GCC, this does not work for clang because cc-option
    uses '-c', which stops the pipeline right before linking, so '-no-pie'
    is unconsumed and clang warns, causing cc-option to fail just as it
    would if the option was entirely unsupported:
    
      $ clang -Werror -no-pie -c -o /dev/null -x c /dev/null
      clang-16: error: argument unused during compilation: '-no-pie' [-Werror,-Wunused-command-line-argument]
    
    A recent version of clang exposes this because it generates a relocation
    under '-mcmodel=large' that is not supported in PIE mode:
    
      /usr/sbin/ld: init/main.o: relocation R_X86_64_32 against symbol `saved_command_line' can not be used when making a PIE object; recompile with -fPIE
      /usr/sbin/ld: failed to set dynamic section sizes: bad value
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    Remove the cc-option check altogether. It is wasteful to invoke the
    compiler to check for '-no-pie' because only one supported compiler
    version does not support it, GCC 5.x (as it is supported with the
    minimum version of clang and GCC 6.1.0+). Use a combination of the
    gcc-min-version macro and CONFIG_CC_IS_CLANG to unconditionally add
    '-no-pie' with CONFIG_LD_SCRIPT_DYN=y, so that it is enabled with all
    compilers that support this. Furthermore, using gcc-min-version can help
    turn this back into
    
      LINK-$(CONFIG_LD_SCRIPT_DYN) += -no-pie
    
    when the minimum version of GCC is bumped past 6.1.0.
    
    Cc: [email protected]
    Closes: ClangBuiltLinux/linux#1982
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nathanchance authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3108ec2 View commit details
    Browse the repository at this point in the history
  84. modpost: Add '.ltext' and '.ltext.*' to TEXT_SECTIONS

    commit 3975865 upstream.
    
    After the linked LLVM change, building ARCH=um defconfig results in a
    segmentation fault in modpost. Prior to commit a23e758 ("modpost:
    unify 'sym' and 'to' in default_mismatch_handler()"), there was a
    warning:
    
      WARNING: modpost: vmlinux.o(__ex_table+0x88): Section mismatch in reference to the .ltext:(unknown)
      WARNING: modpost: The relocation at __ex_table+0x88 references
      section ".ltext" which is not in the list of
      authorized sections.  If you're adding a new section
      and/or if this reference is valid, add ".ltext" to the
      list of authorized sections to jump to on fault.
      This can be achieved by adding ".ltext" to
      OTHER_TEXT_SECTIONS in scripts/mod/modpost.c.
    
    The linked LLVM change moves global objects to the '.ltext' (and
    '.ltext.*' with '-ffunction-sections') sections with '-mcmodel=large',
    which ARCH=um uses. These sections should be handled just as '.text'
    and '.text.*' are, so add them to TEXT_SECTIONS.
    
    Cc: [email protected]
    Closes: ClangBuiltLinux/linux#1981
    Link: llvm/llvm-project@4bf8a68
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nathanchance authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3f9ba39 View commit details
    Browse the repository at this point in the history
  85. ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL

    commit c7de2d9 upstream.
    
    Vaio VJFE-ADL is equipped with ALC269VC, and it needs
    ALC298_FIXUP_SPK_VOLUME quirk to make its headset mic work.
    
    Signed-off-by: Edson Juliano Drosdeck <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    drosdeck authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1ae17e7 View commit details
    Browse the repository at this point in the history
  86. ALSA: hda/realtek - Add speaker pin verbtable for Dell dual speaker p…

    …latform
    
    commit fcfc9f7 upstream.
    
    SSID 0x0c0d platform. It can't mute speaker when HP plugged.
    This patch add quirk to fill speaker pin verbtable.
    And disable speaker passthrough.
    
    Signed-off-by: Kailang Yang <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    kailangyang authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6f8dbdb View commit details
    Browse the repository at this point in the history
  87. ASoC: codecs: wcd938x: handle deferred probe

    commit 086df71 upstream.
    
    WCD938x sound codec driver ignores return status of getting regulators
    and returns EINVAL instead of EPROBE_DEFER.  If regulator provider
    probes after the codec, system is left without probed audio:
    
      wcd938x_codec audio-codec: wcd938x_probe: Fail to obtain platform data
      wcd938x_codec: probe of audio-codec failed with error -22
    
    Fixes: 1657252 ("ASoC: codecs: wcd938x-sdw: add SoundWire driver")
    Cc:  <[email protected]>
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    krzk authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    315db31 View commit details
    Browse the repository at this point in the history
  88. ALSA: hda/cs8409: Suppress vmaster control for Dolphin models

    commit a2ed0a4 upstream.
    
    Customer has reported an issue with specific desktop platform
    where two CS42L42 codecs are connected to CS8409 HDA bridge.
    If "Master Volume Control" is created then on Ubuntu OS UCM
    left/right balance slider in UI audio settings has no effect.
    This patch will fix this issue for a target paltform.
    
    Fixes: 20e5077 ("ALSA: hda/cs8409: Add support for dolphin")
    Signed-off-by: Vitaly Rodionov <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Vitaly Rodionov authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e9f801b View commit details
    Browse the repository at this point in the history
  89. ALSA: hda/realtek: fix mute/micmute LEDs for HP ZBook Power

    commit 1513664 upstream.
    
    The HP ZBook Power using ALC236 codec which using 0x02 to
    control mute LED and 0x01 to control micmute LED.
    Therefore, add a quirk to make it works.
    
    Signed-off-by: Andy Chi <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Andy Chi authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e160dda View commit details
    Browse the repository at this point in the history
  90. binder: signal epoll threads of self-work

    commit 97830f3 upstream.
    
    In (e)poll mode, threads often depend on I/O events to determine when
    data is ready for consumption. Within binder, a thread may initiate a
    command via BINDER_WRITE_READ without a read buffer and then make use
    of epoll_wait() or similar to consume any responses afterwards.
    
    It is then crucial that epoll threads are signaled via wakeup when they
    queue their own work. Otherwise, they risk waiting indefinitely for an
    event leaving their work unhandled. What is worse, subsequent commands
    won't trigger a wakeup either as the thread has pending work.
    
    Fixes: 457b9a6 ("Staging: android: add binder driver")
    Cc: Arve Hjønnevåg <[email protected]>
    Cc: Martijn Coenen <[email protected]>
    Cc: Alice Ryhl <[email protected]>
    Cc: Steven Moreland <[email protected]>
    Cc: [email protected] # v4.19+
    Signed-off-by: Carlos Llamas <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Carlos Llamas authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    93b372c View commit details
    Browse the repository at this point in the history
  91. misc: fastrpc: Mark all sessions as invalid in cb_remove

    commit a4e61de upstream.
    
    In remoteproc shutdown sequence, rpmsg_remove will get called which
    would depopulate all the child nodes that have been created during
    rpmsg_probe. This would result in cb_remove call for all the context
    banks for the remoteproc. In cb_remove function, session 0 is
    getting skipped which is not correct as session 0 will never become
    available again. Add changes to mark session 0 also as invalid.
    
    Fixes: f6f9279 ("misc: fastrpc: Add Qualcomm fastrpc basic driver model")
    Cc: stable <[email protected]>
    Signed-off-by: Ekansh Gupta <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    quic-ekangupt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    00c48bf View commit details
    Browse the repository at this point in the history
  92. ext4: fix double-free of blocks due to wrong extents moved_len

    commit 55583e8 upstream.
    
    In ext4_move_extents(), moved_len is only updated when all moves are
    successfully executed, and only discards orig_inode and donor_inode
    preallocations when moved_len is not zero. When the loop fails to exit
    after successfully moving some extents, moved_len is not updated and
    remains at 0, so it does not discard the preallocations.
    
    If the moved extents overlap with the preallocated extents, the
    overlapped extents are freed twice in ext4_mb_release_inode_pa() and
    ext4_process_freed_data() (as described in commit 94d7c16 ("ext4:
    Fix double-free of blocks with EXT4_IOC_MOVE_EXT")), and bb_free is
    incremented twice. Hence when trim is executed, a zero-division bug is
    triggered in mb_update_avg_fragment_size() because bb_free is not zero
    and bb_fragments is zero.
    
    Therefore, update move_len after each extent move to avoid the issue.
    
    Reported-by: Wei Chen <[email protected]>
    Reported-by: xingwei lee <[email protected]>
    Closes: https://lore.kernel.org/r/CAO4mrferzqBUnCag8R3m2zf897ts9UEuhjFQGPtODT92rYyR2Q@mail.gmail.com
    Fixes: fcf6b1b ("ext4: refactor ext4_move_extents code base")
    CC:  <[email protected]> # 3.18
    Signed-off-by: Baokun Li <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    LiBaokun96 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    559ddac View commit details
    Browse the repository at this point in the history
  93. ext4: avoid bb_free and bb_fragments inconsistency in mb_free_blocks()

    commit 2331fd4 upstream.
    
    After updating bb_free in mb_free_blocks, it is possible to return without
    updating bb_fragments because the block being freed is found to have
    already been freed, which leads to inconsistency between bb_free and
    bb_fragments.
    
    Since the group may be unlocked in ext4_grp_locked_error(), this can lead
    to problems such as dividing by zero when calculating the average fragment
    length. Hence move the update of bb_free to after the block double-free
    check guarantees that the corresponding statistics are updated only after
    the core block bitmap is modified.
    
    Fixes: eabe044 ("ext4: speed-up releasing blocks on commit")
    CC:  <[email protected]> # 3.10
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    LiBaokun96 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    426e4d8 View commit details
    Browse the repository at this point in the history
  94. tracing/timerlat: Move hrtimer_init to timerlat_fd open()

    commit 1389358 upstream.
    
    Currently, the timerlat's hrtimer is initialized at the first read of
    timerlat_fd, and destroyed at close(). It works, but it causes an error
    if the user program open() and close() the file without reading.
    
    Here's an example:
    
     # echo NO_OSNOISE_WORKLOAD > /sys/kernel/debug/tracing/osnoise/options
     # echo timerlat > /sys/kernel/debug/tracing/current_tracer
    
     # cat <<EOF > ./timerlat_load.py
     # !/usr/bin/env python3
    
     timerlat_fd = open("/sys/kernel/tracing/osnoise/per_cpu/cpu0/timerlat_fd", 'r')
     timerlat_fd.close();
     EOF
    
     # ./taskset -c 0 ./timerlat_load.py
    <BOOM>
    
     BUG: kernel NULL pointer dereference, address: 0000000000000010
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: 0000 [#1] PREEMPT SMP NOPTI
     CPU: 1 PID: 2673 Comm: python3 Not tainted 6.6.13-200.fc39.x86_64 #1
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-1.fc39 04/01/2014
     RIP: 0010:hrtimer_active+0xd/0x50
     Code: 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 0f 1f 44 00 00 48 8b 57 30 <8b> 42 10 a8 01 74 09 f3 90 8b 42 10 a8 01 75 f7 80 7f 38 00 75 1d
     RSP: 0018:ffffb031009b7e10 EFLAGS: 00010286
     RAX: 000000000002db00 RBX: ffff9118f786db08 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: ffff9117a0e64400 RDI: ffff9118f786db08
     RBP: ffff9118f786db80 R08: ffff9117a0ddd420 R09: ffff9117804d4f70
     R10: 0000000000000000 R11: 0000000000000000 R12: ffff9118f786db08
     R13: ffff91178fdd5e20 R14: ffff9117840978c0 R15: 0000000000000000
     FS:  00007f2ffbab1740(0000) GS:ffff9118f7840000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000010 CR3: 00000001b402e000 CR4: 0000000000750ee0
     PKRU: 55555554
     Call Trace:
      <TASK>
      ? __die+0x23/0x70
      ? page_fault_oops+0x171/0x4e0
      ? srso_alias_return_thunk+0x5/0x7f
      ? avc_has_extended_perms+0x237/0x520
      ? exc_page_fault+0x7f/0x180
      ? asm_exc_page_fault+0x26/0x30
      ? hrtimer_active+0xd/0x50
      hrtimer_cancel+0x15/0x40
      timerlat_fd_release+0x48/0xe0
      __fput+0xf5/0x290
      __x64_sys_close+0x3d/0x80
      do_syscall_64+0x60/0x90
      ? srso_alias_return_thunk+0x5/0x7f
      ? __x64_sys_ioctl+0x72/0xd0
      ? srso_alias_return_thunk+0x5/0x7f
      ? syscall_exit_to_user_mode+0x2b/0x40
      ? srso_alias_return_thunk+0x5/0x7f
      ? do_syscall_64+0x6c/0x90
      ? srso_alias_return_thunk+0x5/0x7f
      ? exit_to_user_mode_prepare+0x142/0x1f0
      ? srso_alias_return_thunk+0x5/0x7f
      ? syscall_exit_to_user_mode+0x2b/0x40
      ? srso_alias_return_thunk+0x5/0x7f
      ? do_syscall_64+0x6c/0x90
      entry_SYSCALL_64_after_hwframe+0x6e/0xd8
     RIP: 0033:0x7f2ffb321594
     Code: 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 80 3d d5 cd 0d 00 00 74 13 b8 03 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 3c c3 0f 1f 00 55 48 89 e5 48 83 ec 10 89 7d
     RSP: 002b:00007ffe8d8eef18 EFLAGS: 00000202 ORIG_RAX: 0000000000000003
     RAX: ffffffffffffffda RBX: 00007f2ffba4e668 RCX: 00007f2ffb321594
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
     RBP: 00007ffe8d8eef40 R08: 0000000000000000 R09: 0000000000000000
     R10: 55c926e3167eae79 R11: 0000000000000202 R12: 0000000000000003
     R13: 00007ffe8d8ef030 R14: 0000000000000000 R15: 00007f2ffba4e668
      </TASK>
     CR2: 0000000000000010
     ---[ end trace 0000000000000000 ]---
    
    Move hrtimer_init to timerlat_fd open() to avoid this problem.
    
    Link: https://lore.kernel.org/linux-trace-kernel/7324dd3fc0035658c99b825204a66049389c56e3.1706798888.git.bristot@kernel.org
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: [email protected]
    Fixes: e88ed22 ("tracing/timerlat: Add user-space interface")
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2354d29 View commit details
    Browse the repository at this point in the history
  95. tracing: Fix wasted memory in saved_cmdlines logic

    commit 44dc5c4 upstream.
    
    While looking at improving the saved_cmdlines cache I found a huge amount
    of wasted memory that should be used for the cmdlines.
    
    The tracing data saves pids during the trace. At sched switch, if a trace
    occurred, it will save the comm of the task that did the trace. This is
    saved in a "cache" that maps pids to comms and exposed to user space via
    the /sys/kernel/tracing/saved_cmdlines file. Currently it only caches by
    default 128 comms.
    
    The structure that uses this creates an array to store the pids using
    PID_MAX_DEFAULT (which is usually set to 32768). This causes the structure
    to be of the size of 131104 bytes on 64 bit machines.
    
    In hex: 131104 = 0x20020, and since the kernel allocates generic memory in
    powers of two, the kernel would allocate 0x40000 or 262144 bytes to store
    this structure. That leaves 131040 bytes of wasted space.
    
    Worse, the structure points to an allocated array to store the comm names,
    which is 16 bytes times the amount of names to save (currently 128), which
    is 2048 bytes. Instead of allocating a separate array, make the structure
    end with a variable length string and use the extra space for that.
    
    This is similar to a recommendation that Linus had made about eventfs_inode names:
    
      https://lore.kernel.org/all/[email protected]/
    
    Instead of allocating a separate string array to hold the saved comms,
    have the structure end with: char saved_cmdlines[]; and round up to the
    next power of two over sizeof(struct saved_cmdline_buffers) + num_cmdlines * TASK_COMM_LEN
    It will use this extra space for the saved_cmdline portion.
    
    Now, instead of saving only 128 comms by default, by using this wasted
    space at the end of the structure it can save over 8000 comms and even
    saves space by removing the need for allocating the other array.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Vincent Donnefort <[email protected]>
    Cc: Sven Schnelle <[email protected]>
    Cc: Mete Durlu <[email protected]>
    Fixes: 939c7a4 ("tracing: Introduce saved_cmdlines_size file")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b8a36f5 View commit details
    Browse the repository at this point in the history
  96. tracing/synthetic: Fix trace_string() return value

    commit 9b63263 upstream.
    
    Fix trace_string() by assigning the string length to the return variable
    which got lost in commit ddeea49 ("tracing/synthetic: Use union
    instead of casts") and caused trace_string() to always return 0.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Mathieu Desnoyers <[email protected]>
    Fixes: ddeea49 ("tracing/synthetic: Use union instead of casts")
    Acked-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Thorsten Blum <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    toblux authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    33e669c View commit details
    Browse the repository at this point in the history
  97. tracing/probes: Fix to show a parse error for bad type for $comm

    commit 8c427cc upstream.
    
    Fix to show a parse error for bad type (non-string) for $comm/$COMM and
    immediate-string. With this fix, error_log file shows appropriate error
    message as below.
    
     /sys/kernel/tracing # echo 'p vfs_read $comm:u32' >> kprobe_events
    sh: write error: Invalid argument
     /sys/kernel/tracing # echo 'p vfs_read \"hoge":u32' >> kprobe_events
    sh: write error: Invalid argument
     /sys/kernel/tracing # cat error_log
    
    [   30.144183] trace_kprobe: error: $comm and immediate-string only accepts string type
      Command: p vfs_read $comm:u32
                                ^
    [   62.618500] trace_kprobe: error: $comm and immediate-string only accepts string type
      Command: p vfs_read \"hoge":u32
                                  ^
    Link: https://lore.kernel.org/all/170602215411.215583.2238016352271091852.stgit@devnote2/
    
    Fixes: 3dd1f7f ("tracing: probeevent: Fix to make the type of $comm string")
    Cc: [email protected]
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhiramat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f9a10a6 View commit details
    Browse the repository at this point in the history
  98. tracing/probes: Fix to set arg size and fmt after setting type from BTF

    commit 9a571c1 upstream.
    
    Since the BTF type setting updates probe_arg::type, the type size
    calculation and setting print-fmt should be done after that.
    Without this fix, the argument size and print-fmt can be wrong.
    
    Link: https://lore.kernel.org/all/170602218196.215583.6417859469540955777.stgit@devnote2/
    
    Fixes: b576e09 ("tracing/probes: Support function parameters if BTF is available")
    Cc: [email protected]
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhiramat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    eaaab29 View commit details
    Browse the repository at this point in the history
  99. tracing/probes: Fix to search structure fields correctly

    commit 9704669 upstream.
    
    Fix to search a field from the structure which has anonymous union
    correctly.
    Since the reference `type` pointer was updated in the loop, the search
    loop suddenly aborted where it hits an anonymous union. Thus it can not
    find the field after the anonymous union. This avoids updating the
    cursor `type` pointer in the loop.
    
    Link: https://lore.kernel.org/all/170791694361.389532.10047514554799419688.stgit@devnote2/
    
    Fixes: 302db0f ("tracing/probes: Add a function to search a member of a struct/union")
    Cc: [email protected]
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhiramat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9e847e0 View commit details
    Browse the repository at this point in the history
  100. Revert "workqueue: Override implicit ordered attribute in workqueue_a…

    …pply_unbound_cpumask()"
    
    commit aac8a59 upstream.
    
    This reverts commit ca10d85.
    
    The commit allowed workqueue_apply_unbound_cpumask() to clear __WQ_ORDERED
    on now removed implicitly ordered workqueues. This was incorrect in that
    system-wide config change shouldn't break ordering properties of all
    workqueues. The reason why apply_workqueue_attrs() path was allowed to do so
    was because it was targeting the specific workqueue - either the workqueue
    had WQ_SYSFS set or the workqueue user specifically tried to change
    max_active, both of which indicate that the workqueue doesn't need to be
    ordered.
    
    The implicitly ordered workqueue promotion was removed by the previous
    commit 3bc1e71 ("workqueue: Don't implicitly make UNBOUND workqueues w/
    @max_active==1 ordered"). However, it didn't update this path and broke
    build. Let's revert the commit which was incorrect in the first place which
    also fixes build.
    
    Signed-off-by: Tejun Heo <[email protected]>
    Fixes: 3bc1e71 ("workqueue: Don't implicitly make UNBOUND workqueues w/ @max_active==1 ordered")
    Fixes: ca10d85 ("workqueue: Override implicit ordered attribute in workqueue_apply_unbound_cpumask()")
    Cc: [email protected] # v6.6+
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    htejun authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c1f5bae View commit details
    Browse the repository at this point in the history
  101. staging: iio: ad5933: fix type mismatch regression

    commit 6db053c upstream.
    
    Commit 4c3577d ("Staging: iio: impedance-analyzer: Fix sparse
    warning") fixed a compiler warning, but introduced a bug that resulted
    in one of the two 16 bit IIO channels always being zero (when both are
    enabled).
    
    This is because int is 32 bits wide on most architectures and in the
    case of a little-endian machine the two most significant bytes would
    occupy the buffer for the second channel as 'val' is being passed as a
    void pointer to 'iio_push_to_buffers()'.
    
    Fix by defining 'val' as u16. Tested working on ARM64.
    
    Fixes: 4c3577d ("Staging: iio: impedance-analyzer: Fix sparse warning")
    Signed-off-by: David Schiller <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    davidschillerJKU authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    325b9d7 View commit details
    Browse the repository at this point in the history
  102. iio: magnetometer: rm3100: add boundary check for the value read from…

    … RM3100_REG_TMRC
    
    commit 792595b upstream.
    
    Recently, we encounter kernel crash in function rm3100_common_probe
    caused by out of bound access of array rm3100_samp_rates (because of
    underlying hardware failures). Add boundary check to prevent out of
    bound access.
    
    Fixes: 121354b ("iio: magnetometer: Add driver support for PNI RM3100")
    Suggested-by: Zhouyi Zhou <[email protected]>
    Signed-off-by: zhili.liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    zhili.liu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    57d05db View commit details
    Browse the repository at this point in the history
  103. iio: core: fix memleak in iio_device_register_sysfs

    commit 95a0d59 upstream.
    
    When iio_device_register_sysfs_group() fails, we should
    free iio_dev_opaque->chan_attr_group.attrs to prevent
    potential memleak.
    
    Fixes: 32f1717 ("iio: core: rework iio device group creation")
    Signed-off-by: Dinghao Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dinghaoliu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3db312e View commit details
    Browse the repository at this point in the history
  104. iio: commom: st_sensors: ensure proper DMA alignment

    commit 862cf85 upstream.
    
    Aligning the buffer to the L1 cache is not sufficient in some platforms
    as they might have larger cacheline sizes for caches after L1 and thus,
    we can't guarantee DMA safety.
    
    That was the whole reason to introduce IIO_DMA_MINALIGN in [1]. Do the same
    for st_sensors common buffer.
    
    While at it, moved the odr_lock before buffer_data as we definitely
    don't want any other data to share a cacheline with the buffer.
    
    [1]: https://lore.kernel.org/linux-iio/[email protected]/
    
    Fixes: e031d5f ("iio:st_sensors: remove buffer allocation at each buffer enable")
    Signed-off-by: Nuno Sa <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nunojsa authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2952cd9 View commit details
    Browse the repository at this point in the history
  105. iio: accel: bma400: Fix a compilation problem

    commit 4cb8184 upstream.
    
    The kernel fails when compiling without `CONFIG_REGMAP_I2C` but with
    `CONFIG_BMA400`.
    ```
    ld: drivers/iio/accel/bma400_i2c.o: in function `bma400_i2c_probe':
    bma400_i2c.c:(.text+0x23): undefined reference to `__devm_regmap_init_i2c'
    ```
    
    Link: https://download.01.org/0day-ci/archive/20240131/[email protected]/config
    Fixes: 465c811 ("iio: accel: Add driver for the BMA400")
    Fixes: 9bea106 ("iio: accel: bma400: add support for bma400 spi")
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    superm1 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    bc8c28a View commit details
    Browse the repository at this point in the history
  106. iio: adc: ad_sigma_delta: ensure proper DMA alignment

    commit 5959851 upstream.
    
    Aligning the buffer to the L1 cache is not sufficient in some platforms
    as they might have larger cacheline sizes for caches after L1 and thus,
    we can't guarantee DMA safety.
    
    That was the whole reason to introduce IIO_DMA_MINALIGN in [1]. Do the same
    for the sigma_delta ADCs.
    
    [1]: https://lore.kernel.org/linux-iio/[email protected]/
    
    Fixes: 0fb6ee8 ("iio: ad_sigma_delta: Don't put SPI transfer buffer on the stack")
    Signed-off-by: Nuno Sa <[email protected]>
    Link: https://lore.kernel.org/r/20240117-dev_sigma_delta_no_irq_flags-v1-1-db39261592cf@analog.com
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nunojsa authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d2cc2d1 View commit details
    Browse the repository at this point in the history
  107. iio: imu: adis: ensure proper DMA alignment

    commit 8e98b87 upstream.
    
    Aligning the buffer to the L1 cache is not sufficient in some platforms
    as they might have larger cacheline sizes for caches after L1 and thus,
    we can't guarantee DMA safety.
    
    That was the whole reason to introduce IIO_DMA_MINALIGN in [1]. Do the same
    for the sigma_delta ADCs.
    
    [1]: https://lore.kernel.org/linux-iio/[email protected]/
    
    Fixes: ccd2b52 ("staging:iio: Add common ADIS library")
    Signed-off-by: Nuno Sa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nunojsa authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e5925d3 View commit details
    Browse the repository at this point in the history
  108. iio: imu: bno055: serdev requires REGMAP

    commit 35ec2d0 upstream.
    
    There are a ton of build errors when REGMAP is not set, so select
    REGMAP to fix all of them.
    
    Examples (not all of them):
    
    ../drivers/iio/imu/bno055/bno055_ser_core.c:495:15: error: variable 'bno055_ser_regmap_bus' has initializer but incomplete type
      495 | static struct regmap_bus bno055_ser_regmap_bus = {
    ../drivers/iio/imu/bno055/bno055_ser_core.c:496:10: error: 'struct regmap_bus' has no member named 'write'
      496 |         .write = bno055_ser_write_reg,
    ../drivers/iio/imu/bno055/bno055_ser_core.c:497:10: error: 'struct regmap_bus' has no member named 'read'
      497 |         .read = bno055_ser_read_reg,
    ../drivers/iio/imu/bno055/bno055_ser_core.c: In function 'bno055_ser_probe':
    ../drivers/iio/imu/bno055/bno055_ser_core.c:532:18: error: implicit declaration of function 'devm_regmap_init'; did you mean 'vmem_map_init'? [-Werror=implicit-function-declaration]
      532 |         regmap = devm_regmap_init(&serdev->dev, &bno055_ser_regmap_bus,
    ../drivers/iio/imu/bno055/bno055_ser_core.c:532:16: warning: assignment to 'struct regmap *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
      532 |         regmap = devm_regmap_init(&serdev->dev, &bno055_ser_regmap_bus,
    ../drivers/iio/imu/bno055/bno055_ser_core.c: At top level:
    ../drivers/iio/imu/bno055/bno055_ser_core.c:495:26: error: storage size of 'bno055_ser_regmap_bus' isn't known
      495 | static struct regmap_bus bno055_ser_regmap_bus = {
    
    Fixes: 2eef5a9 ("iio: imu: add BNO055 serdev driver")
    Signed-off-by: Randy Dunlap <[email protected]>
    Cc: Andrea Merello <[email protected]>
    Cc: Jonathan Cameron <[email protected]>
    Cc: Lars-Peter Clausen <[email protected]>
    Cc: [email protected]
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rddunlap authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f6ca564 View commit details
    Browse the repository at this point in the history
  109. iio: pressure: bmp280: Add missing bmp085 to SPI id table

    commit b67f3e6 upstream.
    
    "bmp085" is missing in bmp280_spi_id[] table, which leads to the next
    warning in dmesg:
    
        SPI driver bmp280 has no spi_device_id for bosch,bmp085
    
    Add "bmp085" to bmp280_spi_id[] by mimicking its existing description in
    bmp280_of_spi_match[] table to fix the above warning.
    
    Signed-off-by: Sam Protsenko <[email protected]>
    Fixes: b26b4e9 ("iio: pressure: bmp280: add SPI interface driver")
    Reviewed-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Sam Protsenko authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    016ecfd View commit details
    Browse the repository at this point in the history
  110. pmdomain: mediatek: fix race conditions with genpd

    commit c41336f upstream.
    
    If the power domains are registered first with genpd and *after that*
    the driver attempts to power them on in the probe sequence, then it is
    possible that a race condition occurs if genpd tries to power them on
    in the same time.
    The same is valid for powering them off before unregistering them
    from genpd.
    Attempt to fix race conditions by first removing the domains from genpd
    and *after that* powering down domains.
    Also first power up the domains and *after that* register them
    to genpd.
    
    Fixes: 59b644b ("soc: mediatek: Add MediaTek SCPSYS power domains")
    Signed-off-by: Eugen Hristev <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ehristev authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3cd1d92 View commit details
    Browse the repository at this point in the history
  111. media: rc: bpf attach/detach requires write permission

    commit 6a9d552 upstream.
    
    Note that bpf attach/detach also requires CAP_NET_ADMIN.
    
    Cc: [email protected]
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    seanyoung authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    caf2da1 View commit details
    Browse the repository at this point in the history
  112. eventfs: Remove "lookup" parameter from create_dir/file_dentry()

    commit b0f7e2d upstream.
    
    The "lookup" parameter is a way to differentiate the call to
    create_file/dir_dentry() from when it's just a lookup (no need to up the
    dentry refcount) and accessed via a readdir (need to up the refcount).
    
    But reality, it just makes the code more complex. Just up the refcount and
    let the caller decide to dput() the result or not.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5785aa2 View commit details
    Browse the repository at this point in the history
  113. eventfs: Stop using dcache_readdir() for getdents()

    commit 493ec81 upstream.
    
    The eventfs creates dynamically allocated dentries and inodes. Using the
    dcache_readdir() logic for its own directory lookups requires hiding the
    cursor of the dcache logic and playing games to allow the dcache_readdir()
    to still have access to the cursor while the eventfs saved what it created
    and what it needs to release.
    
    Instead, just have eventfs have its own iterate_shared callback function
    that will fill in the dent entries. This simplifies the code quite a bit.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d34d930 View commit details
    Browse the repository at this point in the history
  114. eventfs: Have eventfs_iterate() stop immediately if ei->is_freed is set

    commit e109dea upstream.
    
    If ei->is_freed is set in eventfs_iterate(), it means that the directory
    that is being iterated on is in the process of being freed. Just exit the
    loop immediately when that is ever detected, and separate out the return
    of the entry->callback() from ei->is_freed.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1f15b2d View commit details
    Browse the repository at this point in the history
  115. eventfs: Do ctx->pos update for all iterations in eventfs_iterate()

    commit 1e4624e upstream.
    
    The ctx->pos was only updated when it added an entry, but the "skip to
    current pos" check (c--) happened for every loop regardless of if the
    entry was added or not. This inconsistency caused readdir to be incorrect.
    
    It was due to:
    
    	for (i = 0; i < ei->nr_entries; i++) {
    
    		if (c > 0) {
    			c--;
    			continue;
    		}
    
    		mutex_lock(&eventfs_mutex);
    		/* If ei->is_freed then just bail here, nothing more to do */
    		if (ei->is_freed) {
    			mutex_unlock(&eventfs_mutex);
    			goto out;
    		}
    		r = entry->callback(name, &mode, &cdata, &fops);
    		mutex_unlock(&eventfs_mutex);
    
    		[..]
    		ctx->pos++;
    	}
    
    But this can cause the iterator to return a file that was already read.
    That's because of the way the callback() works. Some events may not have
    all files, and the callback can return 0 to tell eventfs to skip the file
    for this directory.
    
    for instance, we have:
    
     # ls /sys/kernel/tracing/events/ftrace/function
    format  hist  hist_debug  id  inject
    
    and
    
     # ls /sys/kernel/tracing/events/sched/sched_switch/
    enable  filter  format  hist  hist_debug  id  inject  trigger
    
    Where the function directory is missing "enable", "filter" and
    "trigger". That's because the callback() for events has:
    
    static int event_callback(const char *name, umode_t *mode, void **data,
    			  const struct file_operations **fops)
    {
    	struct trace_event_file *file = *data;
    	struct trace_event_call *call = file->event_call;
    
    [..]
    
    	/*
    	 * Only event directories that can be enabled should have
    	 * triggers or filters, with the exception of the "print"
    	 * event that can have a "trigger" file.
    	 */
    	if (!(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) {
    		if (call->class->reg && strcmp(name, "enable") == 0) {
    			*mode = TRACE_MODE_WRITE;
    			*fops = &ftrace_enable_fops;
    			return 1;
    		}
    
    		if (strcmp(name, "filter") == 0) {
    			*mode = TRACE_MODE_WRITE;
    			*fops = &ftrace_event_filter_fops;
    			return 1;
    		}
    	}
    
    	if (!(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE) ||
    	    strcmp(trace_event_name(call), "print") == 0) {
    		if (strcmp(name, "trigger") == 0) {
    			*mode = TRACE_MODE_WRITE;
    			*fops = &event_trigger_fops;
    			return 1;
    		}
    	}
    [..]
    	return 0;
    }
    
    Where the function event has the TRACE_EVENT_FL_IGNORE_ENABLE set.
    
    This means that the entries array elements for "enable", "filter" and
    "trigger" when called on the function event will have the callback return
    0 and not 1, to tell eventfs to skip these files for it.
    
    Because the "skip to current ctx->pos" check happened for all entries, but
    the ctx->pos++ only happened to entries that exist, it would confuse the
    reading of a directory. Which would cause:
    
     # ls /sys/kernel/tracing/events/ftrace/function/
    format  hist  hist  hist_debug  hist_debug  id  inject  inject
    
    The missing "enable", "filter" and "trigger" caused ls to show "hist",
    "hist_debug" and "inject" twice.
    
    Update the ctx->pos for every iteration to keep its update and the "skip"
    update consistent. This also means that on error, the ctx->pos needs to be
    decremented if it was incremented without adding something.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: 493ec81 ("eventfs: Stop using dcache_readdir() for getdents()")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6bb41c8 View commit details
    Browse the repository at this point in the history
  116. eventfs: Read ei->entries before ei->children in eventfs_iterate()

    commit 704f960 upstream.
    
    In order to apply a shortcut to skip over the current ctx->pos
    immediately, by using the ei->entries array, the reading of that array
    should be first. Moving the array reading before the linked list reading
    will make the shortcut change diff nicer to read.
    
    Link: https://lore.kernel.org/all/CAHk-=wiKwDUDv3+jCsv-uacDcHDVTYsXtBR9=6sGM5mqX+DhOg@mail.gmail.com/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    305c4e4 View commit details
    Browse the repository at this point in the history
  117. eventfs: Shortcut eventfs_iterate() by skipping entries already read

    commit 1de94b5 upstream.
    
    As the ei->entries array is fixed for the duration of the eventfs_inode,
    it can be used to skip over already read entries in eventfs_iterate().
    
    That is, if ctx->pos is greater than zero, there's no reason in doing the
    loop across the ei->entries array for the entries less than ctx->pos.
    Instead, start the lookup of the entries at the current ctx->pos.
    
    Link: https://lore.kernel.org/all/CAHk-=wiKwDUDv3+jCsv-uacDcHDVTYsXtBR9=6sGM5mqX+DhOg@mail.gmail.com/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Suggested-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    74807c4 View commit details
    Browse the repository at this point in the history
  118. eventfs: Have the inodes all for files and directories all be the same

    commit 53c4105 upstream.
    
    The dentries and inodes are created in the readdir for the sole purpose of
    getting a consistent inode number. Linus stated that is unnecessary, and
    that all inodes can have the same inode number. For a virtual file system
    they are pretty meaningless.
    
    Instead use a single unique inode number for all files and one for all
    directories.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al  Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Suggested-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    639a492 View commit details
    Browse the repository at this point in the history
  119. eventfs: Do not create dentries nor inodes in iterate_shared

    commit 852e46e upstream.
    
    The original eventfs code added a wrapper around the dcache_readdir open
    callback and created all the dentries and inodes at open, and increment
    their ref count. A wrapper was added around the dcache_readdir release
    function to decrement all the ref counts of those created inodes and
    dentries. But this proved to be buggy[1] for when a kprobe was created
    during a dir read, it would create a dentry between the open and the
    release, and because the release would decrement all ref counts of all
    files and directories, that would include the kprobe directory that was
    not there to have its ref count incremented in open. This would cause the
    ref count to go to negative and later crash the kernel.
    
    To solve this, the dentries and inodes that were created and had their ref
    count upped in open needed to be saved. That list needed to be passed from
    the open to the release, so that the release would only decrement the ref
    counts of the entries that were incremented in the open.
    
    Unfortunately, the dcache_readdir logic was already using the
    file->private_data, which is the only field that can be used to pass
    information from the open to the release. What was done was the eventfs
    created another descriptor that had a void pointer to save the
    dcache_readdir pointer, and it wrapped all the callbacks, so that it could
    save the list of entries that had their ref counts incremented in the
    open, and pass it to the release. The wrapped callbacks would just put
    back the dcache_readdir pointer and call the functions it used so it could
    still use its data[2].
    
    But Linus had an issue with the "hijacking" of the file->private_data
    (unfortunately this discussion was on a security list, so no public link).
    Which we finally agreed on doing everything within the iterate_shared
    callback and leave the dcache_readdir out of it[3]. All the information
    needed for the getents() could be created then.
    
    But this ended up being buggy too[4]. The iterate_shared callback was not
    the right place to create the dentries and inodes. Even Christian Brauner
    had issues with that[5].
    
    An attempt was to go back to creating the inodes and dentries at
    the open, create an array to store the information in the
    file->private_data, and pass that information to the other callbacks.[6]
    
    The difference between that and the original method, is that it does not
    use dcache_readdir. It also does not up the ref counts of the dentries and
    pass them. Instead, it creates an array of a structure that saves the
    dentry's name and inode number. That information is used in the
    iterate_shared callback, and the array is freed in the dir release. The
    dentries and inodes created in the open are not used for the iterate_share
    or release callbacks. Just their names and inode numbers.
    
    Linus did not like that either[7] and just wanted to remove the dentries
    being created in iterate_shared and use the hard coded inode numbers.
    
    [ All this while Linus enjoyed an unexpected vacation during the merge
      window due to lack of power. ]
    
    [1] https://lore.kernel.org/linux-trace-kernel/[email protected]/
    [2] https://lore.kernel.org/linux-trace-kernel/[email protected]/
    [3] https://lore.kernel.org/linux-trace-kernel/[email protected]/
    [4] https://lore.kernel.org/all/[email protected]/
    [5] https://lore.kernel.org/all/20240111-unzahl-gefegt-433acb8a841d@brauner/
    [6] https://lore.kernel.org/all/[email protected]/
    [7] https://lore.kernel.org/all/[email protected]/
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al  Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Fixes: 493ec81 ("eventfs: Stop using dcache_readdir() for getdents()")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f9f6478 View commit details
    Browse the repository at this point in the history
  120. eventfs: Use kcalloc() instead of kzalloc()

    commit 1057066 upstream.
    
    As noted in the "Deprecated Interfaces, Language Features, Attributes,
    and Conventions" documentation [1], size calculations (especially
    multiplication) should not be performed in memory allocator (or similar)
    function arguments due to the risk of them overflowing. This could lead
    to values wrapping around and a smaller allocation being made than the
    caller was expecting. Using those allocations could lead to linear
    overflows of heap memory and other misbehaviors.
    
    So, use the purpose specific kcalloc() function instead of the argument
    size * count in the kzalloc() function.
    
    [1] https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Link: KSPP/linux#162
    Signed-off-by: Erick Archer <[email protected]>
    Reviewed-by: Gustavo A. R. Silva <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Erick Archer authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    add271b View commit details
    Browse the repository at this point in the history
  121. eventfs: Save directory inodes in the eventfs_inode structure

    commit 834bf76 upstream.
    
    The eventfs inodes and directories are allocated when referenced. But this
    leaves the issue of keeping consistent inode numbers and the number is
    only saved in the inode structure itself. When the inode is no longer
    referenced, it can be freed. When the file that the inode was representing
    is referenced again, the inode is once again created, but the inode number
    needs to be the same as it was before.
    
    Just making the inode numbers the same for all files is fine, but that
    does not work with directories. The find command will check for loops via
    the inode number and having the same inode number for directories triggers:
    
      # find /sys/kernel/tracing
    find: File system loop detected;
    '/sys/kernel/debug/tracing/events/initcall/initcall_finish' is part of the same file system loop as
    '/sys/kernel/debug/tracing/events/initcall'.
    [..]
    
    Linus pointed out that the eventfs_inode structure ends with a single
    32bit int, and on 64 bit machines, there's likely a 4 byte hole due to
    alignment. We can use this hole to store the inode number for the
    eventfs_inode. All directories in eventfs are represented by an
    eventfs_inode and that data structure can hold its inode number.
    
    That last int was also purposely placed at the end of the structure to
    prevent holes from within. Now that there's a 4 byte number to hold the
    inode, both the inode number and the last integer can be moved up in the
    structure for better cache locality, where the llist and rcu fields can be
    moved to the end as they are only used when the eventfs_inode is being
    deleted.
    
    Link: https://lore.kernel.org/all/CAMuHMdXKiorg-jiuKoZpfZyDJ3Ynrfb8=X+c7x0Eewxn-YRdCA@mail.gmail.com/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Reported-by: Geert Uytterhoeven <[email protected]>
    Tested-by: Geert Uytterhoeven <[email protected]>
    Fixes: 53c4105 ("eventfs: Have the inodes all for files and directories all be the same")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Reviewed-by: Kees Cook <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fd72519 View commit details
    Browse the repository at this point in the history
  122. tracefs: Zero out the tracefs_inode when allocating it

    commit d81786f upstream.
    
    eventfs uses the tracefs_inode and assumes that it's already initialized
    to zero. That is, it doesn't set fields to zero (like ti->private) after
    getting its tracefs_inode. This causes bugs due to stale values.
    
    Just initialize the entire structure to zero on allocation so there isn't
    any more surprises.
    
    This is a partial fix to access to ti->private. The assignment still needs
    to be made before the dentry is instantiated.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: 5790b1f ("eventfs: Remove eventfs_file and just use eventfs_inode")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Suggested-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    75daf79 View commit details
    Browse the repository at this point in the history
  123. eventfs: Initialize the tracefs inode properly

    commit 4fa4b01 upstream.
    
    The tracefs-specific fields in the inode were not initialized before the
    inode was exposed to others through the dentry with 'd_instantiate()'.
    
    Move the field initializations up to before the d_instantiate.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: 5790b1f ("eventfs: Remove eventfs_file and just use eventfs_inode")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    db82c1f View commit details
    Browse the repository at this point in the history
  124. tracefs: Avoid using the ei->dentry pointer unnecessarily

    commit 99c001c upstream.
    
    The eventfs_find_events() code tries to walk up the tree to find the
    event directory that a dentry belongs to, in order to then find the
    eventfs inode that is associated with that event directory.
    
    However, it uses an odd combination of walking the dentry parent,
    looking up the eventfs inode associated with that, and then looking up
    the dentry from there.  Repeat.
    
    But the code shouldn't have back-pointers to dentries in the first
    place, and it should just walk the dentry parenthood chain directly.
    
    Similarly, 'set_top_events_ownership()' looks up the dentry from the
    eventfs inode, but the only reason it wants a dentry is to look up the
    superblock in order to look up the root dentry.
    
    But it already has the real filesystem inode, which has that same
    superblock pointer.  So just pass in the superblock pointer using the
    information that's already there, instead of looking up extraneous data
    that is irrelevant.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5a9e538 View commit details
    Browse the repository at this point in the history
  125. tracefs: dentry lookup crapectomy

    commit 49304c2 upstream.
    
    The dentry lookup for eventfs files was very broken, and had lots of
    signs of the old situation where the filesystem names were all created
    statically in the dentry tree, rather than being looked up dynamically
    based on the eventfs data structures.
    
    You could see it in the naming - how it claimed to "create" dentries
    rather than just look up the dentries that were given it.
    
    You could see it in various nonsensical and very incorrect operations,
    like using "simple_lookup()" on the dentries that were passed in, which
    only results in those dentries becoming negative dentries.  Which meant
    that any other lookup would possibly return ENOENT if it saw that
    negative dentry before the data was then later filled in.
    
    You could see it in the immense amount of nonsensical code that didn't
    actually just do lookups.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Al Viro <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3edf198 View commit details
    Browse the repository at this point in the history
  126. eventfs: Remove unused d_parent pointer field

    commit 408600b upstream.
    
    It's never used
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    29147ef View commit details
    Browse the repository at this point in the history
  127. eventfs: Clean up dentry ops and add revalidate function

    commit 8dce06e upstream.
    
    In order for the dentries to stay up-to-date with the eventfs changes,
    just add a 'd_revalidate' function that checks the 'is_freed' bit.
    
    Also, clean up the dentry release to actually use d_release() rather
    than the slightly odd d_iput() function.  We don't care about the inode,
    all we want to do is to get rid of the refcount to the eventfs data
    added by dentry->d_fsdata.
    
    It would probably be cleaner to make eventfs its own filesystem, or at
    least set its own dentry ops when looking up eventfs files.  But as it
    is, only eventfs dentries use d_fsdata, so we don't really need to split
    these things up by use.
    
    Another thing that might be worth doing is to make all eventfs lookups
    mark their dentries as not worth caching.  We could do that with
    d_delete(), but the DCACHE_DONTCACHE flag would likely be even better.
    
    As it is, the dentries are all freeable, but they only tend to get freed
    at memory pressure rather than more proactively.  But that's a separate
    issue.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4cb9ddb View commit details
    Browse the repository at this point in the history
  128. eventfs: Get rid of dentry pointers without refcounts

    commit 43aa6f9 upstream.
    
    The eventfs inode had pointers to dentries (and child dentries) without
    actually holding a refcount on said pointer.  That is fundamentally
    broken, and while eventfs tried to then maintain coherence with dentries
    going away by hooking into the '.d_iput' callback, that doesn't actually
    work since it's not ordered wrt lookups.
    
    There were two reasonms why eventfs tried to keep a pointer to a dentry:
    
     - the creation of a 'events' directory would actually have a stable
       dentry pointer that it created with tracefs_start_creating().
    
       And it needed that dentry when tearing it all down again in
       eventfs_remove_events_dir().
    
       This use is actually ok, because the special top-level events
       directory dentries are actually stable, not just a temporary cache of
       the eventfs data structures.
    
     - the 'eventfs_inode' (aka ei) needs to stay around as long as there
       are dentries that refer to it.
    
       It then used these dentry pointers as a replacement for doing
       reference counting: it would try to make sure that there was only
       ever one dentry associated with an event_inode, and keep a child
       dentry array around to see which dentries might still refer to the
       parent ei.
    
    This gets rid of the invalid dentry pointer use, and renames the one
    valid case to a different name to make it clear that it's not just any
    random dentry.
    
    The magic child dentry array that is kind of a "reverse reference list"
    is simply replaced by having child dentries take a ref to the ei.  As
    does the directory dentries.  That makes the broken use case go away.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5a43bad View commit details
    Browse the repository at this point in the history
  129. eventfs: Warn if an eventfs_inode is freed without is_freed being set

    commit 5a49f99 upstream.
    
    There should never be a case where an evenfs_inode is being freed without
    is_freed being set. Add a WARN_ON_ONCE() if it ever happens. That would
    mean there was one too many put_ei()s.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Linus Torvalds <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    17919df View commit details
    Browse the repository at this point in the history
  130. eventfs: Restructure eventfs_inode structure to be more condensed

    commit 264424d upstream.
    
    Some of the eventfs_inode structure has holes in it. Rework the structure
    to be a bit more condensed, and also remove the no longer used llist
    field.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Linus Torvalds <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fe32ecf View commit details
    Browse the repository at this point in the history
  131. eventfs: Remove fsnotify*() functions from lookup()

    commit 12d823b upstream.
    
    The dentries and inodes are created when referenced in the lookup code.
    There's no reason to call fsnotify_*() functions when they are created by
    a reference. It doesn't make any sense.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20240201002719.GS2087318@ZenIV/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Linus Torvalds <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Fixes: a376007 ("eventfs: Implement functions to create files and dirs when accessed");
    Suggested-by: Al Viro <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    af18bb6 View commit details
    Browse the repository at this point in the history
  132. eventfs: Keep all directory links at 1

    commit ca18577 upstream.
    
    The directory link count in eventfs was somewhat bogus. It was only being
    updated when a directory child was being looked up and not on creation.
    
    One solution would be to update in get_attr() the link count by iterating
    the ei->children list and then adding 2. But that could slow down simple
    stat() calls, especially if it's done on all directories in eventfs.
    
    Another solution would be to add a parent pointer to the eventfs_inode
    and keep track of the number of sub directories it has on creation. But
    this adds overhead for something not really worthwhile.
    
    The solution decided upon is to keep all directory links in eventfs as 1.
    This tells user space not to rely on the hard links of directories. Which
    in this case it shouldn't.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20240201002719.GS2087318@ZenIV/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Cc: Linus Torvalds <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Ajay Kaher <[email protected]>
    Fixes: c1504e5 ("eventfs: Implement eventfs dir creation functions")
    Suggested-by: Al Viro <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    80a27b4 View commit details
    Browse the repository at this point in the history
  133. getrusage: move thread_group_cputime_adjusted() outside of lock_task_…

    …sighand()
    
    commit daa694e upstream.
    
    Patch series "getrusage: use sig->stats_lock", v2.
    
    
    This patch (of 2):
    
    thread_group_cputime() does its own locking, we can safely shift
    thread_group_cputime_adjusted() which does another for_each_thread loop
    outside of ->siglock protected section.
    
    This is also preparation for the next patch which changes getrusage() to
    use stats_lock instead of siglock, thread_group_cputime() takes the same
    lock.  With the current implementation recursive read_seqbegin_or_lock()
    is fine, thread_group_cputime() can't enter the slow mode if the caller
    holds stats_lock, yet this looks more safe and better performance-wise.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Oleg Nesterov <[email protected]>
    Reported-by: Dylan Hatch <[email protected]>
    Tested-by: Dylan Hatch <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    oleg-nesterov authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    03b309a View commit details
    Browse the repository at this point in the history
  134. getrusage: use sig->stats_lock rather than lock_task_sighand()

    commit f7ec1cd upstream.
    
    lock_task_sighand() can trigger a hard lockup. If NR_CPUS threads call
    getrusage() at the same time and the process has NR_THREADS, spin_lock_irq
    will spin with irqs disabled O(NR_CPUS * NR_THREADS) time.
    
    Change getrusage() to use sig->stats_lock, it was specifically designed
    for this type of use. This way it runs lockless in the likely case.
    
    TODO:
    	- Change do_task_stat() to use sig->stats_lock too, then we can
    	  remove spin_lock_irq(siglock) in wait_task_zombie().
    
    	- Turn sig->stats_lock into seqcount_rwlock_t, this way the
    	  readers in the slow mode won't exclude each other. See
    	  https://lore.kernel.org/all/[email protected]/
    
    	- stats_lock has to disable irqs because ->siglock can be taken
    	  in irq context, it would be very nice to change __exit_signal()
    	  to avoid the siglock->stats_lock dependency.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Oleg Nesterov <[email protected]>
    Reported-by: Dylan Hatch <[email protected]>
    Tested-by: Dylan Hatch <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    oleg-nesterov authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    dede74e View commit details
    Browse the repository at this point in the history
  135. ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails

    commit 108a020 upstream.
    
    ksmbd_iov_pin_rsp_read() doesn't free the provided aux buffer if it
    fails. Seems to be the caller's responsibility to clear the buffer in
    error case.
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: e2b76ab ("ksmbd: add support for read compound")
    Cc: [email protected]
    Signed-off-by: Fedor Pchelkin <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Fedor Pchelkin authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6ee943c View commit details
    Browse the repository at this point in the history
  136. drm/nouveau: fix several DMA buffer leaks

    commit 042b5f8 upstream.
    
    Nouveau manages GSP-RM DMA buffers with nvkm_gsp_mem objects.  Several of
    these buffers are never dealloced.  Some of them can be deallocated
    right after GSP-RM is initialized, but the rest need to stay until the
    driver unloads.
    
    Also futher bullet-proof these objects by poisoning the buffer and
    clearing the nvkm_gsp_mem object when it is deallocated.  Poisoning
    the buffer should trigger an error (or crash) from GSP-RM if it tries
    to access the buffer after we've deallocated it, because we were wrong
    about when it is safe to deallocate.
    
    Finally, change the mem->size field to a size_t because that's the same
    type that dma_alloc_coherent expects.
    
    Cc: <[email protected]> # v6.7
    Fixes: 176fdcb ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
    Signed-off-by: Timur Tabi <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ttabi authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6190d4c View commit details
    Browse the repository at this point in the history
  137. drm/buddy: Fix alloc_range() error handling code

    commit 8746c6c upstream.
    
    Few users have observed display corruption when they boot
    the machine to KDE Plasma or playing games. We have root
    caused the problem that whenever alloc_range() couldn't
    find the required memory blocks the function was returning
    SUCCESS in some of the corner cases.
    
    The right approach would be if the total allocated size
    is less than the required size, the function should
    return -ENOSPC.
    
    Cc: <[email protected]> # 6.7+
    Fixes: 0a1844b ("drm/buddy: Improve contiguous memory allocation")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3097
    Tested-by: Mario Limonciello <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Acked-by: Christian König <[email protected]>
    Reviewed-by: Matthew Auld <[email protected]>
    Signed-off-by: Arunpravin Paneer Selvam <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Christian König <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    arunpravin24 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4b59c3f View commit details
    Browse the repository at this point in the history
  138. drm/msm: Wire up tlb ops

    commit 8c7bfd8 upstream.
    
    The brute force iommu_flush_iotlb_all() was good enough for unmap, but
    in some cases a map operation could require removing a table pte entry
    to replace with a block entry.  This also requires tlb invalidation.
    Missing this was resulting an obscure iova fault on what should be a
    valid buffer address.
    
    Thanks to Robin Murphy for helping me understand the cause of the fault.
    
    Cc: Robin Murphy <[email protected]>
    Cc: [email protected]
    Fixes: b145c6e ("drm/msm: Add support to create a local pagetable")
    Signed-off-by: Rob Clark <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/578117/
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    robclark authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ae073b8 View commit details
    Browse the repository at this point in the history
  139. drm/amd/display: Add align done check

    commit 94b38b8 upstream.
    
    [WHY]
    We Double-check link status if training successful,
    but miss the lane align status.
    
    [HOW]
    Add the lane align status check
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: [email protected]
    Reviewed-by: Wenjing Liu <[email protected]>
    Acked-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Zhikai Zhai <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Zhikai Zhai authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1bb5321 View commit details
    Browse the repository at this point in the history
  140. drm/i915/dp: Limit SST link rate to <=8.1Gbps

    commit ad26d56 upstream.
    
    Limit the link rate to HBR3 or below (<=8.1Gbps) in SST mode.
    UHBR (10Gbps+) link rates require 128b/132b channel encoding
    which we have not yet hooked up into the SST/no-sideband codepaths.
    
    Cc: [email protected]
    Signed-off-by: Ville Syrjälä <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Reviewed-by: Jani Nikula <[email protected]>
    (cherry picked from commit 6061811)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    vsyrjala authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cf1041f View commit details
    Browse the repository at this point in the history
  141. drm/prime: Support page array >= 4GB

    commit b671cd3 upstream.
    
    Without unsigned long typecast, the size is passed in as zero if page
    array size >= 4GB, nr_pages >= 0x100000, then sg list converted will
    have the first and the last chunk lost.
    
    Signed-off-by: Philip Yang <[email protected]>
    Acked-by: Felix Kuehling <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    CC: [email protected]
    Signed-off-by: Christian König <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    PhilipYangA authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ce57fb9 View commit details
    Browse the repository at this point in the history
  142. drm/amdgpu/soc21: update VCN 4 max HEVC encoding resolution

    commit 2f54242 upstream.
    
    Update the maximum resolution reported for HEVC encoding on VCN 4
    devices to reflect its 8K encoding capability.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3159
    Signed-off-by: Thong <[email protected]>
    Reviewed-by: Ruijing Dong <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    thaithong authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1604846 View commit details
    Browse the repository at this point in the history
  143. drm/amd/display: Fix MST Null Ptr for RV

    commit e6a7df9 upstream.
    
    The change try to fix below error specific to RV platform:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000008
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    CPU: 4 PID: 917 Comm: sway Not tainted 6.3.9-arch1-1 #1 124dc55df4f5272ccb409f39ef4872fc2b3376a2
    Hardware name: LENOVO 20NKS01Y00/20NKS01Y00, BIOS R12ET61W(1.31 ) 07/28/2022
    RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
    Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
    RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
    RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
    RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
    R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
    R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
    FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
    Call Trace:
     <TASK>
     ? __die+0x23/0x70
     ? page_fault_oops+0x171/0x4e0
     ? plist_add+0xbe/0x100
     ? exc_page_fault+0x7c/0x180
     ? asm_exc_page_fault+0x26/0x30
     ? drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
     ? drm_dp_atomic_find_time_slots+0x28/0x260 [drm_display_helper 0e67723696438d8e02b741593dd50d80b44c2026]
     compute_mst_dsc_configs_for_link+0x2ff/0xa40 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
     ? fill_plane_buffer_attributes+0x419/0x510 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
     compute_mst_dsc_configs_for_state+0x1e1/0x250 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
     amdgpu_dm_atomic_check+0xecd/0x1190 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
     drm_atomic_check_only+0x5c5/0xa40
     drm_mode_atomic_ioctl+0x76e/0xbc0
     ? _copy_to_user+0x25/0x30
     ? drm_ioctl+0x296/0x4b0
     ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
     drm_ioctl_kernel+0xcd/0x170
     drm_ioctl+0x26d/0x4b0
     ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
     amdgpu_drm_ioctl+0x4e/0x90 [amdgpu 62e600d2a75e9158e1cd0a243bdc8e6da040c054]
     __x64_sys_ioctl+0x94/0xd0
     do_syscall_64+0x60/0x90
     ? do_syscall_64+0x6c/0x90
     entry_SYSCALL_64_after_hwframe+0x72/0xdc
    RIP: 0033:0x7f4dad17f76f
    Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c>
    RSP: 002b:00007ffd9ae859f0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 000055e255a55900 RCX: 00007f4dad17f76f
    RDX: 00007ffd9ae85a90 RSI: 00000000c03864bc RDI: 000000000000000b
    RBP: 00007ffd9ae85a90 R08: 0000000000000003 R09: 0000000000000003
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c03864bc
    R13: 000000000000000b R14: 000055e255a7fc60 R15: 000055e255a01eb0
     </TASK>
    Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device ccm cmac algif_hash algif_skcipher af_alg joydev mousedev bnep >
     typec libphy k10temp ipmi_msghandler roles i2c_scmi acpi_cpufreq mac_hid nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_mas>
    CR2: 0000000000000008
    ---[ end trace 0000000000000000 ]---
    RIP: 0010:drm_dp_atomic_find_time_slots+0x5e/0x260 [drm_display_helper]
    Code: 01 00 00 48 8b 85 60 05 00 00 48 63 80 88 00 00 00 3b 43 28 0f 8d 2e 01 00 00 48 8b 53 30 48 8d 04 80 48 8d 04 c2 48 8b 40 18 <48> 8>
    RSP: 0018:ffff960cc2df77d8 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: ffff8afb87e81280 RCX: 0000000000000224
    RDX: ffff8afb9ee37c00 RSI: ffff8afb8da1a578 RDI: ffff8afb87e81280
    RBP: ffff8afb83d67000 R08: 0000000000000001 R09: ffff8afb9652f850
    R10: ffff960cc2df7908 R11: 0000000000000002 R12: 0000000000000000
    R13: ffff8afb8d7688a0 R14: ffff8afb8da1a578 R15: 0000000000000224
    FS:  00007f4dac35ce00(0000) GS:ffff8afe30b00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000008 CR3: 000000010ddc6000 CR4: 00000000003506e0
    
    With a second DP monitor connected, drm_atomic_state in dm atomic check
    sequence does not include the connector state for the old/existing/first
    DP monitor. In such case, dsc determination policy would hit a null ptr
    when it tries to iterate the old/existing stream that does not have a
    valid connector state attached to it. When that happens, dm atomic check
    should call drm_atomic_get_connector_state for a new connector state.
    Existing dm has already done that, except for RV due to it does not have
    official support of dsc where .num_dsc is not defined in dcn10 resource
    cap, that prevent from getting drm_atomic_get_connector_state called.
    So, skip dsc determination policy for ASICs that don't have DSC support.
    
    Cc: [email protected] # 6.1+
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2314
    Reviewed-by: Wayne Lin <[email protected]>
    Acked-by: Hamza Mahfooz <[email protected]>
    Signed-off-by: Fangzhi Zuo <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Fangzhi Zuo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5cd7185 View commit details
    Browse the repository at this point in the history
  144. drm/amd/display: Increase frame-larger-than for all display_mode_vba …

    …files
    
    commit e63e35f upstream.
    
    After a recent change in LLVM, allmodconfig (which has CONFIG_KCSAN=y
    and CONFIG_WERROR=y enabled) has a few new instances of
    -Wframe-larger-than for the mode support and system configuration
    functions:
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:3393:6: error: stack frame size (2144) exceeds limit (2048) in 'dml20v2_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
       3393 | void dml20v2_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
            |      ^
      1 error generated.
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:3520:6: error: stack frame size (2192) exceeds limit (2048) in 'dml21_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
       3520 | void dml21_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
            |      ^
      1 error generated.
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3286:6: error: stack frame size (2128) exceeds limit (2048) in 'dml20_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
       3286 | void dml20_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
            |      ^
      1 error generated.
    
    Without the sanitizers enabled, there are no warnings.
    
    This was the catalyst for commit 6740ec9 ("drm/amd/display:
    Increase frame warning limit with KASAN or KCSAN in dml2") and that same
    change was made to dml in commit 5b750b2 ("drm/amd/display:
    Increase frame warning limit with KASAN or KCSAN in dml") but the
    frame_warn_flag variable was not applied to all files. Do so now to
    clear up the warnings and make all these files consistent.
    
    Cc: [email protected]
    Closes: https://github.com/ClangBuiltLinux/linux/issue/1990
    Signed-off-by: Nathan Chancellor <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nathanchance authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ddb9e72 View commit details
    Browse the repository at this point in the history
  145. drm/amd/display: Fix array-index-out-of-bounds in dcn35_clkmgr

    commit 46806e5 upstream.
    
    [Why]
    There is a potential memory access violation while
    iterating through array of dcn35 clks.
    
    [How]
    Limit iteration per array size.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: [email protected]
    Reviewed-by: Nicholas Kazlauskas <[email protected]>
    Acked-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Roman Li authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ca400d8 View commit details
    Browse the repository at this point in the history
  146. drm/amd/display: Preserve original aspect ratio in create stream

    commit deb1102 upstream.
    
    [Why]
    The original picture aspect ratio in mode struct may have chance be
    overwritten with wrong aspect ratio data in create_stream_for_sink().
    It will create a different VIC output and cause HDMI compliance test
    failed.
    
    [How]
    Preserve the original picture aspect ratio data during create the
    stream.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Cc: [email protected]
    Reviewed-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Tom Chung authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0c292ad View commit details
    Browse the repository at this point in the history
  147. drm/amdgpu: Avoid fetching VRAM vendor info

    commit 5517394 upstream.
    
    The present way to fetch VRAM vendor information turns out to be not
    reliable on GFX 9.4.3 dGPUs as well. Avoid using the data.
    
    Signed-off-by: Lijo Lazar <[email protected]>
    Reviewed-by: Hawking Zhang <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Lijo Lazar authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    76aeeb8 View commit details
    Browse the repository at this point in the history
  148. hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove

    commit e0526ec upstream.
    
    In commit ac50476 ("hv_netvsc: Disable NAPI before closing the
    VMBus channel"), napi_disable was getting called for all channels,
    including all subchannels without confirming if they are enabled or not.
    
    This caused hv_netvsc getting hung at napi_disable, when netvsc_probe()
    has finished running but nvdev->subchan_work has not started yet.
    netvsc_subchan_work() -> rndis_set_subchannel() has not created the
    sub-channels and because of that netvsc_sc_open() is not running.
    netvsc_remove() calls cancel_work_sync(&nvdev->subchan_work), for which
    netvsc_subchan_work did not run.
    
    netif_napi_add() sets the bit NAPI_STATE_SCHED because it ensures NAPI
    cannot be scheduled. Then netvsc_sc_open() -> napi_enable will clear the
    NAPIF_STATE_SCHED bit, so it can be scheduled. napi_disable() does the
    opposite.
    
    Now during netvsc_device_remove(), when napi_disable is called for those
    subchannels, napi_disable gets stuck on infinite msleep.
    
    This fix addresses this problem by ensuring that napi_disable() is not
    getting called for non-enabled NAPI struct.
    But netif_napi_del() is still necessary for these non-enabled NAPI struct
    for cleanup purpose.
    
    Call trace:
    [  654.559417] task:modprobe        state:D stack:    0 pid: 2321 ppid:  1091 flags:0x00004002
    [  654.568030] Call Trace:
    [  654.571221]  <TASK>
    [  654.573790]  __schedule+0x2d6/0x960
    [  654.577733]  schedule+0x69/0xf0
    [  654.581214]  schedule_timeout+0x87/0x140
    [  654.585463]  ? __bpf_trace_tick_stop+0x20/0x20
    [  654.590291]  msleep+0x2d/0x40
    [  654.593625]  napi_disable+0x2b/0x80
    [  654.597437]  netvsc_device_remove+0x8a/0x1f0 [hv_netvsc]
    [  654.603935]  rndis_filter_device_remove+0x194/0x1c0 [hv_netvsc]
    [  654.611101]  ? do_wait_intr+0xb0/0xb0
    [  654.615753]  netvsc_remove+0x7c/0x120 [hv_netvsc]
    [  654.621675]  vmbus_remove+0x27/0x40 [hv_vmbus]
    
    Cc: [email protected]
    Fixes: ac50476 ("hv_netvsc: Disable NAPI before closing the VMBus channel")
    Signed-off-by: Souradeep Chakrabarti <[email protected]>
    Reviewed-by: Dexuan Cui <[email protected]>
    Reviewed-by: Haiyang Zhang <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://lore.kernel.org/r/1706686551-28510-1-git-send-email-schakrabarti@linux.microsoft.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Souradeep Chakrabarti authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0e8875d View commit details
    Browse the repository at this point in the history
  149. ring-buffer: Clean ring_buffer_poll_wait() error return

    commit 66bbea9 upstream.
    
    The return type for ring_buffer_poll_wait() is __poll_t. This is behind
    the scenes an unsigned where we can set event bits. In case of a
    non-allocated CPU, we do return instead -EINVAL (0xffffffea). Lucky us,
    this ends up setting few error bits (EPOLLERR | EPOLLHUP | EPOLLNVAL), so
    user-space at least is aware something went wrong.
    
    Nonetheless, this is an incorrect code. Replace that -EINVAL with a
    proper EPOLLERR to clean that output. As this doesn't change the
    behaviour, there's no need to treat this change as a bug fix.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: [email protected]
    Fixes: 6721cb6 ("ring-buffer: Do not poll non allocated cpu buffers")
    Signed-off-by: Vincent Donnefort <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    vdonnefort authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f385565 View commit details
    Browse the repository at this point in the history
  150. net: dsa: mv88e6xxx: Fix failed probe due to unsupported C45 reads

    commit 585b40e upstream.
    
    Not all mv88e6xxx device support C45 read/write operations. Those
    which do not return -EOPNOTSUPP. However, when phylib scans the bus,
    it considers this fatal, and the probe of the MDIO bus fails, which in
    term causes the mv88e6xxx probe as a whole to fail.
    
    When there is no device on the bus for a given address, the pull up
    resistor on the data line results in the read returning 0xffff. The
    phylib core code understands this when scanning for devices on the
    bus. C45 allows multiple devices to be supported at one address, so
    phylib will perform a few reads at each address, so although thought
    not the most efficient solution, it is a way to avoid fatal
    errors. Make use of this as a minimal fix for stable to fix the
    probing problems.
    
    Follow up patches will rework how C45 operates to make it similar to
    C22 which considers -ENODEV as a none-fatal, and swap mv88e6xxx to
    using this.
    
    Cc: [email protected]
    Fixes: 743a19e ("net: dsa: mv88e6xxx: Separate C22 and C45 transactions")
    Reported-by: Tim Menninger <[email protected]>
    Signed-off-by: Andrew Lunn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    lunn authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3d9204a View commit details
    Browse the repository at this point in the history
  151. nfp: flower: add hardware offload check for post ct entry

    commit cefa98e upstream.
    
    The nfp offload flow pay will not allocate a mask id when the out port
    is openvswitch internal port. This is because these flows are used to
    configure the pre_tun table and are never actually send to the firmware
    as an add-flow message. When a tc rule which action contains ct and
    the post ct entry's out port is openvswitch internal port, the merge
    offload flow pay with the wrong mask id of 0 will be send to the
    firmware. Actually, the nfp can not support hardware offload for this
    situation, so return EOPNOTSUPP.
    
    Fixes: bd0fe7f ("nfp: flower-ct: add zone table entry when handling pre/post_ct flows")
    CC: [email protected] # 5.14+
    Signed-off-by: Hui Zhou <[email protected]>
    Signed-off-by: Louis Peens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    zhouhui-Corigine authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fadaea4 View commit details
    Browse the repository at this point in the history
  152. nfp: flower: fix hardware offload for the transfer layer port

    commit 3a007b8 upstream.
    
    The nfp driver will merge the tp source port and tp destination port
    into one dword which the offset must be zero to do hardware offload.
    However, the mangle action for the tp source port and tp destination
    port is separated for tc ct action. Modify the mangle action for the
    FLOW_ACT_MANGLE_HDR_TYPE_TCP and FLOW_ACT_MANGLE_HDR_TYPE_UDP to
    satisfy the nfp driver offload check for the tp port.
    
    The mangle action provides a 4B value for source, and a 4B value for
    the destination, but only 2B of each contains the useful information.
    For offload the 2B of each is combined into a single 4B word. Since the
    incoming mask for the source is '0xFFFF<mask>' the shift-left will
    throw away the 0xFFFF part. When this gets combined together in the
    offload it will clear the destination field. Fix this by setting the
    lower bits back to 0xFFFF, effectively doing a rotate-left operation on
    the mask.
    
    Fixes: 5cee92c ("nfp: flower: support hw offload for ct nat action")
    CC: [email protected] # 6.1+
    Signed-off-by: Hui Zhou <[email protected]>
    Signed-off-by: Louis Peens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    zhouhui-Corigine authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    876de8a View commit details
    Browse the repository at this point in the history
  153. serial: core: Fix atomicity violation in uart_tiocmget

    commit 3092678 upstream.
    
    In uart_tiocmget():
        result = uport->mctrl;
        uart_port_lock_irq(uport);
        result |= uport->ops->get_mctrl(uport);
        uart_port_unlock_irq(uport);
        ...
        return result;
    
    In uart_update_mctrl():
        uart_port_lock_irqsave(port, &flags);
        ...
        port->mctrl = (old & ~clear) | set;
        ...
        port->ops->set_mctrl(port, port->mctrl);
        ...
        uart_port_unlock_irqrestore(port, flags);
    
    An atomicity violation is identified due to the concurrent execution of
    uart_tiocmget() and uart_update_mctrl(). After assigning
    result = uport->mctrl, the mctrl value may change in uart_update_mctrl(),
    leading to a mismatch between the value returned by
    uport->ops->get_mctrl(uport) and the mctrl value previously read.
    This can result in uart_tiocmget() returning an incorrect value.
    
    This possible bug is found by an experimental static analysis tool
    developed by our team, BassCheck[1]. This tool analyzes the locking APIs
    to extract function pairs that can be concurrently executed, and then
    analyzes the instructions in the paired functions to identify possible
    concurrency bugs including data races and atomicity violations. The above
    possible bug is reported when our tool analyzes the source code of
    Linux 5.17.
    
    To address this issue, it is suggested to move the line
    result = uport->mctrl inside the uart_port_lock block to ensure atomicity
    and prevent the mctrl value from being altered during the execution of
    uart_tiocmget(). With this patch applied, our tool no longer reports the
    bug, with the kernel configuration allyesconfig for x86_64. Due to the
    absence of the requisite hardware, we are unable to conduct runtime
    testing of the patch. Therefore, our verification is solely based on code
    logic analysis.
    
    [1] https://sites.google.com/view/basscheck/
    
    Fixes: c5f4644 ("[PATCH] Serial: Adjust serial locking")
    Cc: [email protected]
    Signed-off-by: Gui-Dong Han <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    2045gemini authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f143090 View commit details
    Browse the repository at this point in the history
  154. serial: max310x: set default value when reading clock ready bit

    commit 0419373 upstream.
    
    If regmap_read() returns a non-zero value, the 'val' variable can be left
    uninitialized.
    
    Clear it before calling regmap_read() to make sure we properly detect
    the clock ready bit.
    
    Fixes: 4cf9a88 ("serial: max310x: Check the clock readiness")
    Cc: [email protected]
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hvilleneuvedoo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    97fb620 View commit details
    Browse the repository at this point in the history
  155. serial: max310x: improve crystal stable clock detection

    commit 93cd256 upstream.
    
    Some people are seeing a warning similar to this when using a crystal:
    
        max310x 11-006c: clock is not stable yet
    
    The datasheet doesn't mention the maximum time to wait for the clock to be
    stable when using a crystal, and it seems that the 10ms delay in the driver
    is not always sufficient.
    
    Jan Kundrát reported that it took three tries (each separated by 10ms) to
    get a stable clock.
    
    Modify behavior to check stable clock ready bit multiple times (20), and
    waiting 10ms between each try.
    
    Note: the first draft of the driver originally used a 50ms delay, without
    checking the clock stable bit.
    Then a loop with 1000 retries was implemented, each time reading the clock
    stable bit.
    
    Fixes: 4cf9a88 ("serial: max310x: Check the clock readiness")
    Cc: [email protected]
    Suggested-by: Jan Kundrát <[email protected]>
    Link: https://www.spinics.net/lists/linux-serial/msg35773.html
    Link: https://lore.kernel.org/all/[email protected]/raw
    Link: boundarydevices/linux@e5dfe3e
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hvilleneuvedoo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b2b6972 View commit details
    Browse the repository at this point in the history
  156. serial: max310x: fail probe if clock crystal is unstable

    commit 8afa6c6 upstream.
    
    A stable clock is really required in order to use this UART, so log an
    error message and bail out if the chip reports that the clock is not
    stable.
    
    Fixes: 4cf9a88 ("serial: max310x: Check the clock readiness")
    Cc: [email protected]
    Suggested-by: Jan Kundrát <[email protected]>
    Link: https://www.spinics.net/lists/linux-serial/msg35773.html
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hvilleneuvedoo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    53aa5f1 View commit details
    Browse the repository at this point in the history
  157. serial: max310x: prevent infinite while() loop in port startup

    commit b35f8db upstream.
    
    If there is a problem after resetting a port, the do/while() loop that
    checks the default value of DIVLSB register may run forever and spam the
    I2C bus.
    
    Add a delay before each read of DIVLSB, and a maximum number of tries to
    prevent that situation from happening.
    
    Also fail probe if port reset is unsuccessful.
    
    Fixes: 10d8b34 ("serial: max310x: Driver rework")
    Cc: [email protected]
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    hvilleneuvedoo authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    da1a807 View commit details
    Browse the repository at this point in the history
  158. ftrace: Fix DIRECT_CALLS to use SAVE_REGS by default

    commit a8b9cf6 upstream.
    
    The commit 60c8971 ("ftrace: Make DIRECT_CALLS work WITH_ARGS
    and !WITH_REGS") changed DIRECT_CALLS to use SAVE_ARGS when there
    are multiple ftrace_ops at the same function, but since the x86 only
    support to jump to direct_call from ftrace_regs_caller, when we set
    the function tracer on the same target function on x86, ftrace-direct
    does not work as below (this actually works on arm64.)
    
    At first, insmod ftrace-direct.ko to put a direct_call on
    'wake_up_process()'.
    
     # insmod kernel/samples/ftrace/ftrace-direct.ko
     # less trace
    ...
              <idle>-0       [006] ..s1.   564.686958: my_direct_func: waking up rcu_preempt-17
              <idle>-0       [007] ..s1.   564.687836: my_direct_func: waking up kcompactd0-63
              <idle>-0       [006] ..s1.   564.690926: my_direct_func: waking up rcu_preempt-17
              <idle>-0       [006] ..s1.   564.696872: my_direct_func: waking up rcu_preempt-17
              <idle>-0       [007] ..s1.   565.191982: my_direct_func: waking up kcompactd0-63
    
    Setup a function filter to the 'wake_up_process' too, and enable it.
    
     # cd /sys/kernel/tracing/
     # echo wake_up_process > set_ftrace_filter
     # echo function > current_tracer
     # less trace
    ...
              <idle>-0       [006] ..s3.   686.180972: wake_up_process <-call_timer_fn
              <idle>-0       [006] ..s3.   686.186919: wake_up_process <-call_timer_fn
              <idle>-0       [002] ..s3.   686.264049: wake_up_process <-call_timer_fn
              <idle>-0       [002] d.h6.   686.515216: wake_up_process <-kick_pool
              <idle>-0       [002] d.h6.   686.691386: wake_up_process <-kick_pool
    
    Then, only function tracer is shown on x86.
    But if you enable 'kprobe on ftrace' event (which uses SAVE_REGS flag)
    on the same function, it is shown again.
    
     # echo 'p wake_up_process' >> dynamic_events
     # echo 1 > events/kprobes/p_wake_up_process_0/enable
     # echo > trace
     # less trace
    ...
              <idle>-0       [006] ..s2.  2710.345919: p_wake_up_process_0: (wake_up_process+0x4/0x20)
              <idle>-0       [006] ..s3.  2710.345923: wake_up_process <-call_timer_fn
              <idle>-0       [006] ..s1.  2710.345928: my_direct_func: waking up rcu_preempt-17
              <idle>-0       [006] ..s2.  2710.349931: p_wake_up_process_0: (wake_up_process+0x4/0x20)
              <idle>-0       [006] ..s3.  2710.349934: wake_up_process <-call_timer_fn
              <idle>-0       [006] ..s1.  2710.349937: my_direct_func: waking up rcu_preempt-17
    
    To fix this issue, use SAVE_REGS flag for multiple ftrace_ops flag of
    direct_call by default.
    
    Link: https://lore.kernel.org/linux-trace-kernel/170484558617.178953.1590516949390270842.stgit@devnote2
    
    Fixes: 60c8971 ("ftrace: Make DIRECT_CALLS work WITH_ARGS and !WITH_REGS")
    Cc: [email protected]
    Cc: Florent Revest <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Reviewed-by: Mark Rutland <[email protected]>
    Tested-by: Mark Rutland <[email protected]> [arm64]
    Acked-by: Jiri Olsa <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mhiramat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d4d18c0 View commit details
    Browse the repository at this point in the history
  159. powerpc/64: Set task pt_regs->link to the LR value on scv entry

    commit aad98ef upstream.
    
    Nysal reported that userspace backtraces are missing in offcputime bcc
    tool. As an example:
        $ sudo ./bcc/tools/offcputime.py -uU
        Tracing off-CPU time (us) of user threads by user stack... Hit Ctrl-C to end.
    
        ^C
    	write
    	-                python (9107)
    	    8
    
    	write
    	-                sudo (9105)
    	    9
    
    	mmap
    	-                python (9107)
    	    16
    
    	clock_nanosleep
    	-                multipathd (697)
    	    3001604
    
    The offcputime bcc tool attaches a bpf program to a kprobe on
    finish_task_switch(), which is usually hit on a syscall from userspace.
    With the switch to system call vectored, we started setting
    pt_regs->link to zero. This is because system call vectored behaves like
    a function call with LR pointing to the system call return address, and
    with no modification to SRR0/SRR1. The LR value does indicate our next
    instruction, so it is being saved as pt_regs->nip, and pt_regs->link is
    being set to zero. This is not a problem by itself, but BPF uses perf
    callchain infrastructure for capturing stack traces, and that stores LR
    as the second entry in the stack trace. perf has code to cope with the
    second entry being zero, and skips over it. However, generic userspace
    unwinders assume that a zero entry indicates end of the stack trace,
    resulting in a truncated userspace stack trace.
    
    Rather than fixing all userspace unwinders to ignore/skip past the
    second entry, store the real LR value in pt_regs->link so that there
    continues to be a valid, though duplicate entry in the stack trace.
    
    With this change:
        $ sudo ./bcc/tools/offcputime.py -uU
        Tracing off-CPU time (us) of user threads by user stack... Hit Ctrl-C to end.
    
        ^C
    	write
    	write
    	[unknown]
    	[unknown]
    	[unknown]
    	[unknown]
    	[unknown]
    	PyObject_VectorcallMethod
    	[unknown]
    	[unknown]
    	PyObject_CallOneArg
    	PyFile_WriteObject
    	PyFile_WriteString
    	[unknown]
    	[unknown]
    	PyObject_Vectorcall
    	_PyEval_EvalFrameDefault
    	PyEval_EvalCode
    	[unknown]
    	[unknown]
    	[unknown]
    	_PyRun_SimpleFileObject
    	_PyRun_AnyFileObject
    	Py_RunMain
    	[unknown]
    	Py_BytesMain
    	[unknown]
    	__libc_start_main
    	-                python (1293)
    	    7
    
    	write
    	write
    	[unknown]
    	sudo_ev_loop_v1
    	sudo_ev_dispatch_v1
    	[unknown]
    	[unknown]
    	[unknown]
    	[unknown]
    	__libc_start_main
    	-                sudo (1291)
    	    7
    
    	syscall
    	syscall
    	bpf_open_perf_buffer_opts
    	[unknown]
    	[unknown]
    	[unknown]
    	[unknown]
    	_PyObject_MakeTpCall
    	PyObject_Vectorcall
    	_PyEval_EvalFrameDefault
    	PyEval_EvalCode
    	[unknown]
    	[unknown]
    	[unknown]
    	_PyRun_SimpleFileObject
    	_PyRun_AnyFileObject
    	Py_RunMain
    	[unknown]
    	Py_BytesMain
    	[unknown]
    	__libc_start_main
    	-                python (1293)
    	    11
    
    	clock_nanosleep
    	clock_nanosleep
    	nanosleep
    	sleep
    	[unknown]
    	[unknown]
    	__clone
    	-                multipathd (698)
    	    3001661
    
    Fixes: 7fa95f9 ("powerpc/64s: system call support for scv/rfscv instructions")
    Cc: [email protected]
    Reported-by: "Nysal Jan K.A" <[email protected]>
    Signed-off-by: Naveen N Rao <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rnav authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    992c8a5 View commit details
    Browse the repository at this point in the history
  160. powerpc/cputable: Add missing PPC_FEATURE_BOOKE on PPC64 Book-E

    commit eb6d871 upstream.
    
    Commit e320a76 ("powerpc/cputable: Split cpu_specs[] out of
    cputable.h") moved the cpu_specs to separate header files. Previously
    PPC_FEATURE_BOOKE was enabled by CONFIG_PPC_BOOK3E_64. The definition in
    cpu_specs_e500mc.h for PPC64 no longer enables PPC_FEATURE_BOOKE.
    
    This breaks user space reading the ELF hwcaps and expect
    PPC_FEATURE_BOOKE. Debugging an application with gdb is no longer
    working on e5500/e6500 because the 64-bit detection relies on
    PPC_FEATURE_BOOKE for Book-E.
    
    Fixes: e320a76 ("powerpc/cputable: Split cpu_specs[] out of cputable.h")
    Cc: [email protected] # v6.1+
    Signed-off-by: David Engraf <[email protected]>
    Reviewed-by: Christophe Leroy <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dengraf authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8ba0a9d View commit details
    Browse the repository at this point in the history
  161. powerpc/pseries: fix accuracy of stolen time

    commit cbecc9f upstream.
    
    powerVM hypervisor updates the VPA fields with stolen time data.
    It currently reports enqueue_dispatch_tb and ready_enqueue_tb for
    this purpose. In linux these two fields are used to report the stolen time.
    
    The VPA fields are updated at the TB frequency. On powerPC its mostly
    set at 512Mhz. Hence this needs a conversion to ns when reporting it
    back as rest of the kernel timings are in ns. This conversion is already
    handled in tb_to_ns function. So use that function to report accurate
    stolen time.
    
    Observed this issue and used an Capped Shared Processor LPAR(SPLPAR) to
    simplify the experiments. In all these cases, 100% VP Load is run using
    stress-ng workload. Values of stolen time is in percentages as reported
    by mpstat. With the patch values are close to expected.
    
    		6.8.rc1		+Patch
    12EC/12VP	   0.0		   0.0
    12EC/24VP	  25.7		  50.2
    12EC/36VP	  37.3		  69.2
    12EC/48VP	  38.5		  78.3
    
    Fixes: 0e8a631 ("powerpc/pseries: Implement CONFIG_PARAVIRT_TIME_ACCOUNTING")
    Cc: [email protected] # v6.1+
    Signed-off-by: Shrikanth Hegde <[email protected]>
    Reviewed-by: Nicholas Piggin <[email protected]>
    Reviewed-by: Srikar Dronamraju <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Shrikanth Hegde authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8fd2674 View commit details
    Browse the repository at this point in the history
  162. serial: core: introduce uart_port_tx_flags()

    commit 3ee0796 upstream.
    
    And an enum with a flag: UART_TX_NOSTOP. To NOT call
    __port->ops->stop_tx() when the circular buffer is empty. mxs-uart needs
    this (see the next patch).
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Cc: stable <[email protected]>
    Tested-by: Emil Kronborg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jiri Slaby (SUSE) authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7e63709 View commit details
    Browse the repository at this point in the history
  163. serial: mxs-auart: fix tx

    commit 7be50f2 upstream.
    
    Emil reports:
      After updating Linux on an i.MX28 board, serial communication over
      AUART broke. When I TX from the board and measure on the TX pin, it
      seems like the HW fifo is not emptied before the transmission is
      stopped.
    
    MXS performs weird things with stop_tx(). The driver makes it
    conditional on uart_tx_stopped().
    
    So the driver needs special handling. Pass the brand new UART_TX_NOSTOP
    to uart_port_tx_flags() and handle the stop on its own.
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Reported-by: Emil Kronborg <[email protected]>
    Cc: stable <[email protected]>
    Fixes: 2d141e6 ("tty: serial: use uart_port_tx() helper")
    Closes: https://lore.kernel.org/all/miwgbnvy3hjpnricubg76ytpn7xoceehwahupy25bubbduu23s@om2lptpa26xw/
    Tested-by: Stefan Wahren <[email protected]>
    Tested-by: Emil Kronborg <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jiri Slaby (SUSE) authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    501c4f2 View commit details
    Browse the repository at this point in the history
  164. x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6

    commit f6a1892 upstream.
    
    The kernel built with MCRUSOE is unbootable on Transmeta Crusoe.  It shows
    the following error message:
    
      This kernel requires an i686 CPU, but only detected an i586 CPU.
      Unable to boot - please use a kernel appropriate for your CPU.
    
    Remove MCRUSOE from the condition introduced in commit in Fixes, effectively
    changing X86_MINIMUM_CPU_FAMILY back to 5 on that machine, which matches the
    CPU family given by CPUID.
    
      [ bp: Massage commit message. ]
    
    Fixes: 25d76ac ("x86/Kconfig: Explicitly enumerate i686-class CPUs in Kconfig")
    Signed-off-by: Aleksander Mazur <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Acked-by: H. Peter Anvin <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Aleksander Mazur authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d79adbe View commit details
    Browse the repository at this point in the history
  165. x86/fpu: Stop relying on userspace for info to fault in xsave buffer

    commit d877550 upstream.
    
    Before this change, the expected size of the user space buffer was
    taken from fx_sw->xstate_size. fx_sw->xstate_size can be changed
    from user-space, so it is possible construct a sigreturn frame where:
    
     * fx_sw->xstate_size is smaller than the size required by valid bits in
       fx_sw->xfeatures.
     * user-space unmaps parts of the sigrame fpu buffer so that not all of
       the buffer required by xrstor is accessible.
    
    In this case, xrstor tries to restore and accesses the unmapped area
    which results in a fault. But fault_in_readable succeeds because buf +
    fx_sw->xstate_size is within the still mapped area, so it goes back and
    tries xrstor again. It will spin in this loop forever.
    
    Instead, fault in the maximum size which can be touched by XRSTOR (taken
    from fpstate->user_size).
    
    [ dhansen: tweak subject / changelog ]
    
    Fixes: fcb3635 ("x86/fpu/signal: Handle #PF in the direct restore path")
    Reported-by: Konstantin Bogomolov <[email protected]>
    Suggested-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Andrei Vagin <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/20240130063603.3392627-1-avagin%40google.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    avagin authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    627e28c View commit details
    Browse the repository at this point in the history
  166. KVM: x86: make KVM_REQ_NMI request iff NMI pending for vcpu

    commit 6231c9e upstream.
    
    kvm_vcpu_ioctl_x86_set_vcpu_events() routine makes 'KVM_REQ_NMI'
    request for a vcpu even when its 'events->nmi.pending' is zero.
    Ex:
        qemu_thread_start
         kvm_vcpu_thread_fn
          qemu_wait_io_event
           qemu_wait_io_event_common
            process_queued_cpu_work
             do_kvm_cpu_synchronize_post_init/_reset
              kvm_arch_put_registers
               kvm_put_vcpu_events (cpu, level=[2|3])
    
    This leads vCPU threads in QEMU to constantly acquire & release the
    global mutex lock, delaying the guest boot due to lock contention.
    Add check to make KVM_REQ_NMI request only if vcpu has NMI pending.
    
    Fixes: bdedff2 ("KVM: x86: Route pending NMIs from userspace through process_nmi()")
    Cc: [email protected]
    Signed-off-by: Prasad Pandit <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Prasad Pandit authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fa2b524 View commit details
    Browse the repository at this point in the history
  167. KVM: x86/pmu: Fix type length error when reading pmu->fixed_ctr_ctrl

    commit 05519c8 upstream.
    
    Use a u64 instead of a u8 when taking a snapshot of pmu->fixed_ctr_ctrl
    when reprogramming fixed counters, as truncating the value results in KVM
    thinking fixed counter 2 is already disabled (the bug also affects fixed
    counters 3+, but KVM doesn't yet support those).  As a result, if the
    guest disables fixed counter 2, KVM will get a false negative and fail to
    reprogram/disable emulation of the counter, which can leads to incorrect
    counts and spurious PMIs in the guest.
    
    Fixes: 76d287b ("KVM: x86/pmu: Drop "u8 ctrl, int idx" for reprogram_fixed_counter()")
    Cc: [email protected]
    Signed-off-by: Mingwei Zhang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [sean: rewrite changelog to call out the effects of the bug]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    mzhang3579 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6d10c8c View commit details
    Browse the repository at this point in the history
  168. x86/mm/ident_map: Use gbpages only where full GB page should be mapped.

    commit d794734 upstream.
    
    When ident_pud_init() uses only gbpages to create identity maps, large
    ranges of addresses not actually requested can be included in the
    resulting table; a 4K request will map a full GB.  On UV systems, this
    ends up including regions that will cause hardware to halt the system
    if accessed (these are marked "reserved" by BIOS).  Even processor
    speculation into these regions is enough to trigger the system halt.
    
    Only use gbpages when map creation requests include the full GB page
    of space.  Fall back to using smaller 2M pages when only portions of a
    GB page are included in the request.
    
    No attempt is made to coalesce mapping requests. If a request requires
    a map entry at the 2M (pmd) level, subsequent mapping requests within
    the same 1G region will also be at the pmd level, even if adjacent or
    overlapping such requests could have been combined to map a full
    gbpage.  Existing usage starts with larger regions and then adds
    smaller regions, so this should not have any great consequence.
    
    [ dhansen: fix up comment formatting, simplifty changelog ]
    
    Signed-off-by: Steve Wahl <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/all/20240126164841.170866-1-steve.wahl%40hpe.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    swahlhpe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7143c5f View commit details
    Browse the repository at this point in the history
  169. io_uring/net: fix multishot accept overflow handling

    commit a37ee9e upstream.
    
    If we hit CQ ring overflow when attempting to post a multishot accept
    completion, we don't properly save the result or return code. This
    results in losing the accepted fd value.
    
    Instead, we return the result from the poll operation that triggered
    the accept retry. This is generally POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND
    which is 0xc3, or 195, which looks like a valid file descriptor, but it
    really has no connection to that.
    
    Handle this like we do for other multishot completions - assign the
    result, and return IOU_STOP_MULTISHOT to cancel any further completions
    from this request when overflow is hit. This preserves the result, as we
    should, and tells the application that the request needs to be re-armed.
    
    Cc: [email protected]
    Fixes: 515e269 ("io_uring: revert "io_uring fix multishot accept ordering"")
    Link: axboe/liburing#1062
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    axboe authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6e85c91 View commit details
    Browse the repository at this point in the history
  170. mmc: slot-gpio: Allow non-sleeping GPIO ro

    commit cc9432c upstream.
    
    This change uses the appropriate _cansleep or non-sleeping API for
    reading GPIO read-only state. This allows users with GPIOs that
    never sleepbeing called in atomic context.
    
    Implement the same mechanism as in commit 52af318 ("mmc: Allow
    non-sleeping GPIO cd").
    
    Signed-off-by: Alexander Stein <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    tq-steina authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6c905ce View commit details
    Browse the repository at this point in the history
  171. gpiolib: add gpio_device_get_base() stub for !GPIOLIB

    commit ebe0c15 upstream.
    
    Add empty stub of gpio_device_get_base() when GPIOLIB is not enabled.
    
    Cc: <[email protected]>
    Fixes: 8c85a10 ("gpiolib: provide gpio_device_get_base()")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    krzk authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5484120 View commit details
    Browse the repository at this point in the history
  172. gpiolib: add gpiod_to_gpio_device() stub for !GPIOLIB

    commit 6ac8637 upstream.
    
    Add empty stub of gpiod_to_gpio_device() when GPIOLIB is not enabled.
    
    Cc: <[email protected]>
    Fixes: 370232d ("gpiolib: provide gpiod_to_gpio_device()")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    krzk authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    88716f5 View commit details
    Browse the repository at this point in the history
  173. ALSA: hda/realtek: fix mute/micmute LED For HP mt645

    commit 32f03f4 upstream.
    
    The HP mt645 G7 Thin Client uses an ALC236 codec and needs the
    ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF quirk to make the mute and
    micmute LEDs work.
    
    There are two variants of the USB-C PD chip on this device. Each uses
    a different BIOS and board ID, hence the two entries.
    
    Signed-off-by: Eniac Zhang <[email protected]>
    Signed-off-by: Alexandru Gagniuc <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    eniachp authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f83ebf0 View commit details
    Browse the repository at this point in the history
  174. ALSA: hda/conexant: Add quirk for SWS JS201D

    commit 4639c50 upstream.
    
    The SWS JS201D need a different pinconfig from windows driver.
    Add a quirk to use a specific pinconfig to SWS JS201D.
    
    Signed-off-by: bo liu <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    bo liu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6b11286 View commit details
    Browse the repository at this point in the history
  175. ALSA: hda/realtek: add IDs for Dell dual spk platform

    commit fddab35 upstream.
    
    This patch adds another two IDs for the Dell dual speaker platform.
    
    Signed-off-by: Shuming Fan <[email protected]>
    Cc: <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    shumingfan authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e8a2c84 View commit details
    Browse the repository at this point in the history
  176. nilfs2: fix data corruption in dsync block recovery for small block s…

    …izes
    
    commit 67b8bcb upstream.
    
    The helper function nilfs_recovery_copy_block() of
    nilfs_recovery_dsync_blocks(), which recovers data from logs created by
    data sync writes during a mount after an unclean shutdown, incorrectly
    calculates the on-page offset when copying repair data to the file's page
    cache.  In environments where the block size is smaller than the page
    size, this flaw can cause data corruption and leak uninitialized memory
    bytes during the recovery process.
    
    Fix these issues by correcting this byte offset calculation on the page.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Tested-by: Ryusuke Konishi <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    konis authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2000016 View commit details
    Browse the repository at this point in the history
  177. nilfs2: fix hang in nilfs_lookup_dirty_data_buffers()

    commit 38296af upstream.
    
    Syzbot reported a hang issue in migrate_pages_batch() called by mbind()
    and nilfs_lookup_dirty_data_buffers() called in the log writer of nilfs2.
    
    While migrate_pages_batch() locks a folio and waits for the writeback to
    complete, the log writer thread that should bring the writeback to
    completion picks up the folio being written back in
    nilfs_lookup_dirty_data_buffers() that it calls for subsequent log
    creation and was trying to lock the folio.  Thus causing a deadlock.
    
    In the first place, it is unexpected that folios/pages in the middle of
    writeback will be updated and become dirty.  Nilfs2 adds a checksum to
    verify the validity of the log being written and uses it for recovery at
    mount, so data changes during writeback are suppressed.  Since this is
    broken, an unclean shutdown could potentially cause recovery to fail.
    
    Investigation revealed that the root cause is that the wait for writeback
    completion in nilfs_page_mkwrite() is conditional, and if the backing
    device does not require stable writes, data may be modified without
    waiting.
    
    Fix these issues by making nilfs_page_mkwrite() wait for writeback to
    finish regardless of the stable write requirement of the backing device.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1d1d1a7 ("mm: only enforce stable page writes if the backing device requires it")
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Reported-by: [email protected]
    Closes: https://lkml.kernel.org/r/[email protected]
    Tested-by: Ryusuke Konishi <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    konis authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e385854 View commit details
    Browse the repository at this point in the history
  178. crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown…

    …_locked
    
    commit ccb88e9 upstream.
    
    The SEV platform device can be shutdown with a null psp_master,
    e.g., using DEBUG_TEST_DRIVER_REMOVE.  Found using KASAN:
    
    [  137.148210] ccp 0000:23:00.1: enabling device (0000 -> 0002)
    [  137.162647] ccp 0000:23:00.1: no command queues available
    [  137.170598] ccp 0000:23:00.1: sev enabled
    [  137.174645] ccp 0000:23:00.1: psp enabled
    [  137.178890] general protection fault, probably for non-canonical address 0xdffffc000000001e: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN NOPTI
    [  137.182693] KASAN: null-ptr-deref in range [0x00000000000000f0-0x00000000000000f7]
    [  137.182693] CPU: 93 PID: 1 Comm: swapper/0 Not tainted 6.8.0-rc1+ #311
    [  137.182693] RIP: 0010:__sev_platform_shutdown_locked+0x51/0x180
    [  137.182693] Code: 08 80 3c 08 00 0f 85 0e 01 00 00 48 8b 1d 67 b6 01 08 48 b8 00 00 00 00 00 fc ff df 48 8d bb f0 00 00 00 48 89 f9 48 c1 e9 03 <80> 3c 01 00 0f 85 fe 00 00 00 48 8b 9b f0 00 00 00 48 85 db 74 2c
    [  137.182693] RSP: 0018:ffffc900000cf9b0 EFLAGS: 00010216
    [  137.182693] RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 000000000000001e
    [  137.182693] RDX: 0000000000000000 RSI: 0000000000000008 RDI: 00000000000000f0
    [  137.182693] RBP: ffffc900000cf9c8 R08: 0000000000000000 R09: fffffbfff58f5a66
    [  137.182693] R10: ffffc900000cf9c8 R11: ffffffffac7ad32f R12: ffff8881e5052c28
    [  137.182693] R13: ffff8881e5052c28 R14: ffff8881758e43e8 R15: ffffffffac64abf8
    [  137.182693] FS:  0000000000000000(0000) GS:ffff889de7000000(0000) knlGS:0000000000000000
    [  137.182693] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  137.182693] CR2: 0000000000000000 CR3: 0000001cf7c7e000 CR4: 0000000000350ef0
    [  137.182693] Call Trace:
    [  137.182693]  <TASK>
    [  137.182693]  ? show_regs+0x6c/0x80
    [  137.182693]  ? __die_body+0x24/0x70
    [  137.182693]  ? die_addr+0x4b/0x80
    [  137.182693]  ? exc_general_protection+0x126/0x230
    [  137.182693]  ? asm_exc_general_protection+0x2b/0x30
    [  137.182693]  ? __sev_platform_shutdown_locked+0x51/0x180
    [  137.182693]  sev_firmware_shutdown.isra.0+0x1e/0x80
    [  137.182693]  sev_dev_destroy+0x49/0x100
    [  137.182693]  psp_dev_destroy+0x47/0xb0
    [  137.182693]  sp_destroy+0xbb/0x240
    [  137.182693]  sp_pci_remove+0x45/0x60
    [  137.182693]  pci_device_remove+0xaa/0x1d0
    [  137.182693]  device_remove+0xc7/0x170
    [  137.182693]  really_probe+0x374/0xbe0
    [  137.182693]  ? srso_return_thunk+0x5/0x5f
    [  137.182693]  __driver_probe_device+0x199/0x460
    [  137.182693]  driver_probe_device+0x4e/0xd0
    [  137.182693]  __driver_attach+0x191/0x3d0
    [  137.182693]  ? __pfx___driver_attach+0x10/0x10
    [  137.182693]  bus_for_each_dev+0x100/0x190
    [  137.182693]  ? __pfx_bus_for_each_dev+0x10/0x10
    [  137.182693]  ? __kasan_check_read+0x15/0x20
    [  137.182693]  ? srso_return_thunk+0x5/0x5f
    [  137.182693]  ? _raw_spin_unlock+0x27/0x50
    [  137.182693]  driver_attach+0x41/0x60
    [  137.182693]  bus_add_driver+0x2a8/0x580
    [  137.182693]  driver_register+0x141/0x480
    [  137.182693]  __pci_register_driver+0x1d6/0x2a0
    [  137.182693]  ? srso_return_thunk+0x5/0x5f
    [  137.182693]  ? esrt_sysfs_init+0x1cd/0x5d0
    [  137.182693]  ? __pfx_sp_mod_init+0x10/0x10
    [  137.182693]  sp_pci_init+0x22/0x30
    [  137.182693]  sp_mod_init+0x14/0x30
    [  137.182693]  ? __pfx_sp_mod_init+0x10/0x10
    [  137.182693]  do_one_initcall+0xd1/0x470
    [  137.182693]  ? __pfx_do_one_initcall+0x10/0x10
    [  137.182693]  ? parameq+0x80/0xf0
    [  137.182693]  ? srso_return_thunk+0x5/0x5f
    [  137.182693]  ? __kmalloc+0x3b0/0x4e0
    [  137.182693]  ? kernel_init_freeable+0x92d/0x1050
    [  137.182693]  ? kasan_populate_vmalloc_pte+0x171/0x190
    [  137.182693]  ? srso_return_thunk+0x5/0x5f
    [  137.182693]  kernel_init_freeable+0xa64/0x1050
    [  137.182693]  ? __pfx_kernel_init+0x10/0x10
    [  137.182693]  kernel_init+0x24/0x160
    [  137.182693]  ? __switch_to_asm+0x3e/0x70
    [  137.182693]  ret_from_fork+0x40/0x80
    [  137.182693]  ? __pfx_kernel_init+0x10/0x10
    [  137.182693]  ret_from_fork_asm+0x1b/0x30
    [  137.182693]  </TASK>
    [  137.182693] Modules linked in:
    [  137.538483] ---[ end trace 0000000000000000 ]---
    
    Fixes: 1b05ece ("crypto: ccp - During shutdown, check SEV data pointer before using")
    Cc: [email protected]
    Reviewed-by: Mario Limonciello <[email protected]>
    Signed-off-by: Kim Phillips <[email protected]>
    Reviewed-by: Liam Merwick <[email protected]>
    Acked-by: John Allen <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    kimphillamd authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b5909f1 View commit details
    Browse the repository at this point in the history
  179. crypto: algif_hash - Remove bogus SGL free on zero-length error path

    commit 24c890d upstream.
    
    When a zero-length message is hashed by algif_hash, and an error
    is triggered, it tries to free an SG list that was never allocated
    in the first place.  Fix this by not freeing the SG list on the
    zero-length error path.
    
    Reported-by: Shigeru Yoshida <[email protected]>
    Reported-by: xingwei lee <[email protected]>
    Fixes: b6d972f ("crypto: af_alg/hash: Fix recvmsg() after sendmsg(MSG_MORE)")
    Cc: <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Reported-by: [email protected]
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    herbertx authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    775f3c1 View commit details
    Browse the repository at this point in the history
  180. nfp: use correct macro for LengthSelect in BAR config

    commit b3d4f7f upstream.
    
    The 1st and 2nd expansion BAR configuration registers are configured,
    when the driver starts up, in variables 'barcfg_msix_general' and
    'barcfg_msix_xpb', respectively. The 'LengthSelect' field is ORed in
    from bit 0, which is incorrect. The 'LengthSelect' field should
    start from bit 27.
    
    This has largely gone un-noticed because
    NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT happens to be 0.
    
    Fixes: 4cb584e ("nfp: add CPP access core")
    Cc: [email protected] # 4.11+
    Signed-off-by: Daniel Basilio <[email protected]>
    Signed-off-by: Louis Peens <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    dan-basilio authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8a2ad02 View commit details
    Browse the repository at this point in the history
  181. nfp: enable NETDEV_XDP_ACT_REDIRECT feature flag

    commit 0f4d6f0 upstream.
    
    Enable previously excluded xdp feature flag for NFD3 devices. This
    feature flag is required in order to bind nfp interfaces to an xdp
    socket and the nfp driver does in fact support the feature.
    
    Fixes: 66c0e13 ("drivers: net: turn on XDP features")
    Cc: [email protected] # 6.3+
    Signed-off-by: James Hershaw <[email protected]>
    Signed-off-by: Louis Peens <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jamesroberthershaw authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8b0f64f View commit details
    Browse the repository at this point in the history
  182. nfp: flower: prevent re-adding mac index for bonded port

    commit 1a1c133 upstream.
    
    When physical ports are reset (either through link failure or manually
    toggled down and up again) that are slaved to a Linux bond with a tunnel
    endpoint IP address on the bond device, not all tunnel packets arriving
    on the bond port are decapped as expected.
    
    The bond dev assigns the same MAC address to itself and each of its
    slaves. When toggling a slave device, the same MAC address is therefore
    offloaded to the NFP multiple times with different indexes.
    
    The issue only occurs when re-adding the shared mac. The
    nfp_tunnel_add_shared_mac() function has a conditional check early on
    that checks if a mac entry already exists and if that mac entry is
    global: (entry && nfp_tunnel_is_mac_idx_global(entry->index)). In the
    case of a bonded device (For example br-ex), the mac index is obtained,
    and no new index is assigned.
    
    We therefore modify the conditional in nfp_tunnel_add_shared_mac() to
    check if the port belongs to the LAG along with the existing checks to
    prevent a new global mac index from being re-assigned to the slave port.
    
    Fixes: 20cce88 ("nfp: flower: enable MAC address sharing for offloadable devs")
    CC: [email protected] # 5.1+
    Signed-off-by: Daniel de Villiers <[email protected]>
    Signed-off-by: Louis Peens <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    daniel-devilliers authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6a5611c View commit details
    Browse the repository at this point in the history
  183. wifi: iwlwifi: fix double-free bug

    commit 353d321 upstream.
    
    The storage for the TLV PC register data wasn't done like all
    the other storage in the drv->fw area, which is cleared at the
    end of deallocation. Therefore, the freeing must also be done
    differently, explicitly NULL'ing it out after the free, since
    otherwise there's a nasty double-free bug here if a file fails
    to load after this has been parsed, and we get another free
    later (e.g. because no other file exists.) Fix that by adding
    the missing NULL assignment.
    
    Cc: [email protected]
    Fixes: 5e31b3d ("wifi: iwlwifi: dbg: print pc register data once fw dump occurred")
    Reported-by: Guy Kaplan <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Reviewed-by: Gregory Greenman <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240123200528.675f3c24ec0d.I6ab4015cd78d82dd95471f840629972ef0331de3@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jmberg-intel authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d24eb9a View commit details
    Browse the repository at this point in the history
  184. wifi: cfg80211: fix wiphy delayed work queueing

    commit b743287 upstream.
    
    When a wiphy work is queued with timer, and then again
    without a delay, it's started immediately but *also*
    started again after the timer expires. This can lead,
    for example, to warnings in mac80211's offchannel code
    as reported by Jouni. Running the same work twice isn't
    expected, of course. Fix this by deleting the timer at
    this point, when queuing immediately due to delay=0.
    
    Cc: [email protected]
    Reported-by: Jouni Malinen <[email protected]>
    Fixes: a3ee4dc ("wifi: cfg80211: add a work abstraction with special semantics")
    Link: https://msgid.link/20240125095108.2feb0eaaa446.I4617f3210ed0e7f252290d5970dac6a876aa595b@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jmberg-intel authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f1ff55b View commit details
    Browse the repository at this point in the history
  185. wifi: mac80211: reload info pointer in ieee80211_tx_dequeue()

    commit c98d883 upstream.
    
    This pointer can change here since the SKB can change, so we
    actually later open-coded IEEE80211_SKB_CB() again. Reload
    the pointer where needed, so the monitor-mode case using it
    gets fixed, and then use info-> later as well.
    
    Cc: [email protected]
    Fixes: 5316821 ("mac80211: fix VLAN handling with TXQs")
    Link: https://msgid.link/20240131164910.b54c28d583bc.I29450cec84ea6773cff5d9c16ff92b836c331471@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jmberg-intel authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cd1f56c View commit details
    Browse the repository at this point in the history
  186. wifi: iwlwifi: mvm: fix a crash when we run out of stations

    commit b719838 upstream.
    
    A DoS tool that injects loads of authentication frames made our AP
    crash. The iwl_mvm_is_dup() function couldn't find the per-queue
    dup_data which was not allocated.
    
    The root cause for that is that we ran out of stations in the firmware
    and we didn't really add the station to the firmware, yet we didn't
    return an error to mac80211.
    Mac80211 was thinking that we have the station and because of that,
    sta_info::uploaded was set to 1. This allowed
    ieee80211_find_sta_by_ifaddr() to return a valid station object, but
    that ieee80211_sta didn't have any iwl_mvm_sta object initialized and
    that caused the crash mentioned earlier when we got Rx on that station.
    
    Cc: [email protected]
    Fixes: 57974a5 ("wifi: iwlwifi: mvm: refactor iwl_mvm_mac_sta_state_common()")
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240206175739.1f76c44b2486.I6a00955e2842f15f0a089db2f834adb9d10fbe35@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    egrumbach authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c12f0f4 View commit details
    Browse the repository at this point in the history
  187. PCI: dwc: Fix a 64bit bug in dw_pcie_ep_raise_msix_irq()

    commit b5d1b4b upstream.
    
    The "msg_addr" variable is u64.  However, the "aligned_offset" is an
    unsigned int.  This means that when the code does:
    
      msg_addr &= ~aligned_offset;
    
    it will unintentionally zero out the high 32 bits.  Use ALIGN_DOWN() to do
    the alignment instead.
    
    Fixes: 2217fff ("PCI: dwc: endpoint: Fix dw_pcie_ep_raise_msix_irq() alignment support")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dan Carpenter <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Dan Carpenter authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    30e04e8 View commit details
    Browse the repository at this point in the history
  188. irqchip/irq-brcmstb-l2: Add write memory barrier before exit

    commit b0344d6 upstream.
    
    It was observed on Broadcom devices that use GIC v3 architecture L1
    interrupt controllers as the parent of brcmstb-l2 interrupt controllers
    that the deactivation of the parent interrupt could happen before the
    brcmstb-l2 deasserted its output. This would lead the GIC to reactivate the
    interrupt only to find that no L2 interrupt was pending. The result was a
    spurious interrupt invoking handle_bad_irq() with its associated
    messaging. While this did not create a functional problem it is a waste of
    cycles.
    
    The hazard exists because the memory mapped bus writes to the brcmstb-l2
    registers are buffered and the GIC v3 architecture uses a very efficient
    system register write to deactivate the interrupt.
    
    Add a write memory barrier prior to invoking chained_irq_exit() to
    introduce a dsb(st) on those systems to ensure the system register write
    cannot be executed until the memory mapped writes are visible to the
    system.
    
    [ florian: Added Fixes tag ]
    
    Fixes: 7f646e9 ("irqchip: brcmstb-l2: Add Broadcom Set Top Box  Level-2 interrupt controller")
    Signed-off-by: Doug Berger <[email protected]>
    Signed-off-by: Florian Fainelli <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Acked-by: Florian Fainelli <[email protected]>
    Acked-by: Marc Zyngier <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Doug Berger authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    58a7171 View commit details
    Browse the repository at this point in the history
  189. irqchip/gic-v3-its: Restore quirk probing for ACPI-based systems

    commit 8b02da0 upstream.
    
    While refactoring the way the ITSs are probed, the handling of quirks
    applicable to ACPI-based platforms was lost. As a result, systems such as
    HIP07 lose their GICv4 functionnality, and some other may even fail to
    boot, unless they are configured to boot with DT.
    
    Move the enabling of quirks into its_probe_one(), making it common to all
    firmware implementations.
    
    Fixes: 9585a49 ("irqchip/gic-v3-its: Split allocation from initialisation of its_node")
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Lorenzo Pieralisi <[email protected]>
    Reviewed-by: Zenghui Yu <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Marc Zyngier authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4c60c61 View commit details
    Browse the repository at this point in the history
  190. irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update

    commit af9acbf upstream.
    
    When updating the affinity of a VPE, the VMOVP command is currently skipped
    if the two CPUs are part of the same VPE affinity.
    
    But this is wrong, as the doorbell corresponding to this VPE is still
    delivered on the 'old' CPU, which screws up the balancing.  Furthermore,
    offlining that 'old' CPU results in doorbell interrupts generated for this
    VPE being discarded.
    
    The harsh reality is that VMOVP cannot be elided when a set_affinity()
    request occurs. It needs to be obeyed, and if an optimisation is to be
    made, it is at the point where the affinity change request is made (such as
    in KVM).
    
    Drop the VMOVP elision altogether, and only use the vpe_table_mask
    to try and stay within the same ITS affinity group if at all possible.
    
    Fixes: dd3f050 (irqchip/gic-v4.1: Implement the v4.1 flavour of VMOVP)
    Reported-by: Kunkun Jiang <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Marc Zyngier authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ec02586 View commit details
    Browse the repository at this point in the history
  191. thunderbolt: Fix setting the CNS bit in ROUTER_CS_5

    commit ec4d82f upstream.
    
    The bit 23, CM TBT3 Not Supported (CNS), in ROUTER_CS_5 indicates
    whether a USB4 Connection Manager is TBT3-Compatible and should be:
        0b for TBT3-Compatible
        1b for Not TBT3-Compatible
    
    Fixes: b040798 ("thunderbolt: Add initial support for USB4")
    Cc: [email protected]
    Signed-off-by: Mohammad Rahimi <[email protected]>
    Signed-off-by: Mika Westerberg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    MhmRhm authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1fd4b2a View commit details
    Browse the repository at this point in the history
  192. smb: client: set correct id, uid and cruid for multiuser automounts

    commit 4508ec1 upstream.
    
    When uid, gid and cruid are not specified, we need to dynamically
    set them into the filesystem context used for automounting otherwise
    they'll end up reusing the values from the parent mount.
    
    Fixes: 9fd29a5 ("cifs: use fs_context for automounts")
    Reported-by: Shane Nehring <[email protected]>
    Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2259257
    Cc: [email protected] # 6.2+
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    pcacjr authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7590ba9 View commit details
    Browse the repository at this point in the history
  193. smb: Fix regression in writes when non-standard maximum write size ne…

    …gotiated
    
    commit 4860abb upstream.
    
    The conversion to netfs in the 6.3 kernel caused a regression when
    maximum write size is set by the server to an unexpected value which is
    not a multiple of 4096 (similarly if the user overrides the maximum
    write size by setting mount parm "wsize", but sets it to a value that
    is not a multiple of 4096).  When negotiated write size is not a
    multiple of 4096 the netfs code can skip the end of the final
    page when doing large sequential writes, causing data corruption.
    
    This section of code is being rewritten/removed due to a large
    netfs change, but until that point (ie for the 6.3 kernel until now)
    we can not support non-standard maximum write sizes.
    
    Add a warning if a user specifies a wsize on mount that is not
    a multiple of 4096 (and round down), also add a change where we
    round down the maximum write size if the server negotiates a value
    that is not a multiple of 4096 (we also have to check to make sure that
    we do not round it down to zero).
    
    Reported-by: "R. Diez" <[email protected]>
    Fixes: d08089f ("cifs: Change the I/O paths to use an iterator rather than a page list")
    Suggested-by: Ronnie Sahlberg <[email protected]>
    Acked-by: Ronnie Sahlberg <[email protected]>
    Tested-by: Matthew Ruffell <[email protected]>
    Reviewed-by: Shyam Prasad N <[email protected]>
    Cc: [email protected] # v6.3+
    Cc: David Howells <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Steve French authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    63c35af View commit details
    Browse the repository at this point in the history
  194. KVM: s390: vsie: fix race during shadow creation

    commit fe75233 upstream.
    
    Right now it is possible to see gmap->private being zero in
    kvm_s390_vsie_gmap_notifier resulting in a crash.  This is due to the
    fact that we add gmap->private == kvm after creation:
    
    static int acquire_gmap_shadow(struct kvm_vcpu *vcpu,
                                   struct vsie_page *vsie_page)
    {
    [...]
            gmap = gmap_shadow(vcpu->arch.gmap, asce, edat);
            if (IS_ERR(gmap))
                    return PTR_ERR(gmap);
            gmap->private = vcpu->kvm;
    
    Let children inherit the private field of the parent.
    
    Reported-by: Marc Hartmayer <[email protected]>
    Fixes: a3508fb ("KVM: s390: vsie: initial support for nested virtualization")
    Cc: <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Reviewed-by: Janosch Frank <[email protected]>
    Reviewed-by: David Hildenbrand <[email protected]>
    Reviewed-by: Claudio Imbrenda <[email protected]>
    Signed-off-by: Christian Borntraeger <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    borntraeger authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    28bb278 View commit details
    Browse the repository at this point in the history
  195. KVM: arm64: Fix circular locking dependency

    commit 10c02aa upstream.
    
    The rule inside kvm enforces that the vcpu->mutex is taken *inside*
    kvm->lock. The rule is violated by the pkvm_create_hyp_vm() which acquires
    the kvm->lock while already holding the vcpu->mutex lock from
    kvm_vcpu_ioctl(). Avoid the circular locking dependency altogether by
    protecting the hyp vm handle with the config_lock, much like we already
    do for other forms of VM-scoped data.
    
    Signed-off-by: Sebastian Ene <[email protected]>
    Cc: [email protected]
    Reviewed-by: Oliver Upton <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Sebastian Ene authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    3ab1c40 View commit details
    Browse the repository at this point in the history
  196. zonefs: Improve error handling

    commit 14db5f6 upstream.
    
    Write error handling is racy and can sometime lead to the error recovery
    path wrongly changing the inode size of a sequential zone file to an
    incorrect value  which results in garbage data being readable at the end
    of a file. There are 2 problems:
    
    1) zonefs_file_dio_write() updates a zone file write pointer offset
       after issuing a direct IO with iomap_dio_rw(). This update is done
       only if the IO succeed for synchronous direct writes. However, for
       asynchronous direct writes, the update is done without waiting for
       the IO completion so that the next asynchronous IO can be
       immediately issued. However, if an asynchronous IO completes with a
       failure right before the i_truncate_mutex lock protecting the update,
       the update may change the value of the inode write pointer offset
       that was corrected by the error path (zonefs_io_error() function).
    
    2) zonefs_io_error() is called when a read or write error occurs. This
       function executes a report zone operation using the callback function
       zonefs_io_error_cb(), which does all the error recovery handling
       based on the current zone condition, write pointer position and
       according to the mount options being used. However, depending on the
       zoned device being used, a report zone callback may be executed in a
       context that is different from the context of __zonefs_io_error(). As
       a result, zonefs_io_error_cb() may be executed without the inode
       truncate mutex lock held, which can lead to invalid error processing.
    
    Fix both problems as follows:
    - Problem 1: Perform the inode write pointer offset update before a
      direct write is issued with iomap_dio_rw(). This is safe to do as
      partial direct writes are not supported (IOMAP_DIO_PARTIAL is not
      set) and any failed IO will trigger the execution of zonefs_io_error()
      which will correct the inode write pointer offset to reflect the
      current state of the one on the device.
    - Problem 2: Change zonefs_io_error_cb() into zonefs_handle_io_error()
      and call this function directly from __zonefs_io_error() after
      obtaining the zone information using blkdev_report_zones() with a
      simple callback function that copies to a local stack variable the
      struct blk_zone obtained from the device. This ensures that error
      handling is performed holding the inode truncate mutex.
      This change also simplifies error handling for conventional zone files
      by bypassing the execution of report zones entirely. This is safe to
      do because the condition of conventional zones cannot be read-only or
      offline and conventional zone files are always fully mapped with a
      constant file size.
    
    Reported-by: Shin'ichiro Kawasaki <[email protected]>
    Fixes: 8dcc1a9 ("fs: New zonefs file system")
    Cc: [email protected]
    Signed-off-by: Damien Le Moal <[email protected]>
    Tested-by: Shin'ichiro Kawasaki <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Himanshu Madhani <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    damien-lemoal authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9fd47ed View commit details
    Browse the repository at this point in the history
  197. mmc: sdhci-pci-o2micro: Fix a warm reboot issue that disk can't be de…

    …tected by BIOS
    
    commit 58aeb56 upstream.
    
    Driver shall switch clock source from DLL clock to
    OPE clock when power off card to ensure that card
    can be identified with OPE clock by BIOS.
    
    Signed-off-by: Fred Ai <[email protected]>
    Fixes:4be33cf18703 ("mmc: sdhci-pci-o2micro: Improve card input timing at SDR104/HS200 mode")
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    FredAiBayHubTech authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0624cb1 View commit details
    Browse the repository at this point in the history
  198. arm64/signal: Don't assume that TIF_SVE means we saved SVE state

    commit 61da7c8 upstream.
    
    When we are in a syscall we will only save the FPSIMD subset even though
    the task still has access to the full register set, and on context switch
    we will only remove TIF_SVE when loading the register state. This means
    that the signal handling code should not assume that TIF_SVE means that
    the register state is stored in SVE format, it should instead check the
    format that was recorded during save.
    
    Fixes: 8c845e2 ("arm64/sve: Leave SVE enabled on syscall if we don't context switch")
    Signed-off-by: Mark Brown <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    broonie authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    edd2310 View commit details
    Browse the repository at this point in the history
  199. arm64: Subscribe Microsoft Azure Cobalt 100 to ARM Neoverse N2 errata

    commit fb091ff upstream.
    
    Add the MIDR value of Microsoft Azure Cobalt 100, which is a Microsoft
    implemented CPU based on r0p0 of the ARM Neoverse N2 CPU, and therefore
    suffers from all the same errata.
    
    CC: [email protected] # 5.15+
    Signed-off-by: Easwar Hariharan <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Acked-by: Mark Rutland <[email protected]>
    Acked-by: Marc Zyngier <[email protected]>
    Reviewed-by: Oliver Upton <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    easwarh authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    be31c24 View commit details
    Browse the repository at this point in the history
  200. ASoC: SOF: IPC3: fix message bounds on ipc ops

    commit fcbe487 upstream.
    
    commit 74ad8ed ("ASoC: SOF: ipc3: Implement rx_msg IPC ops")
    introduced a new allocation before the upper bounds check in
    do_rx_work. As a result A DSP can cause bad allocations if spewing
    garbage.
    
    Fixes: 74ad8ed ("ASoC: SOF: ipc3: Implement rx_msg IPC ops")
    Reported-by: Tim Van Patten <[email protected]>
    Cc: [email protected]
    Signed-off-by: Curtis Malainey <[email protected]>
    Reviewed-by: Péter Ujfalusi <[email protected]>
    Reviewed-by: Daniel Baluta <[email protected]>
    Reviewed-by: Pierre-Louis Bossart <[email protected]>
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    cujomalainey authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    10bf47b View commit details
    Browse the repository at this point in the history
  201. ASoC: tas2781: add module parameter to tascodec_init()

    commit 34a1066 upstream.
    
    The tascodec_init() of the snd-soc-tas2781-comlib module is called from
    snd-soc-tas2781-i2c and snd-hda-scodec-tas2781-i2c modules. It calls
    request_firmware_nowait() with parameter THIS_MODULE and a cont/callback
    from the latter modules.
    
    The latter modules can be removed while their callbacks are running,
    resulting in a general protection failure.
    
    Add module parameter to tascodec_init() so request_firmware_nowait() can
    be called with the module of the callback.
    
    Fixes: ef3bcde ("ASoC: tas2781: Add tas2781 driver")
    CC: [email protected]
    Signed-off-by: Gergo Koteles <[email protected]>
    Link: https://lore.kernel.org/r/118dad922cef50525e5aab09badef2fa0eb796e5.1707076603.git.soyer@irl.hu
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    soyersoyer authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b1d8ea3 View commit details
    Browse the repository at this point in the history
  202. ASoC: amd: yc: Add DMI quirk for Lenovo Ideapad Pro 5 16ARP8

    commit 6100107 upstream.
    
    The laptop requires a quirk ID to enable its internal microphone. Add
    it to the DMI quirk table.
    
    Reported-by: Stanislav Petrov <[email protected]>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=216925
    Cc: [email protected]
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    superm1 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a3e469d View commit details
    Browse the repository at this point in the history
  203. tools/rv: Fix curr_reactor uninitialized variable

    commit 61ec586 upstream.
    
    clang is reporting:
    
    $ make HOSTCC=clang CC=clang LLVM_IAS=1
    
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)  -I include
    	-c -o src/in_kernel.o src/in_kernel.c
    [...]
    
    src/in_kernel.c:227:6: warning: variable 'curr_reactor' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
      227 |         if (!end)
          |             ^~~~
    src/in_kernel.c:242:9: note: uninitialized use occurs here
      242 |         return curr_reactor;
          |                ^~~~~~~~~~~~
    src/in_kernel.c:227:2: note: remove the 'if' if its condition is always false
      227 |         if (!end)
          |         ^~~~~~~~~
      228 |                 goto out_free;
          |                 ~~~~~~~~~~~~~
    src/in_kernel.c:221:6: warning: variable 'curr_reactor' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
      221 |         if (!start)
          |             ^~~~~~
    src/in_kernel.c:242:9: note: uninitialized use occurs here
      242 |         return curr_reactor;
          |                ^~~~~~~~~~~~
    src/in_kernel.c:221:2: note: remove the 'if' if its condition is always false
      221 |         if (!start)
          |         ^~~~~~~~~~~
      222 |                 goto out_free;
          |                 ~~~~~~~~~~~~~
    src/in_kernel.c:215:20: note: initialize the variable 'curr_reactor' to silence this warning
      215 |         char *curr_reactor;
          |                           ^
          |                            = NULL
    2 warnings generated.
    
    Which is correct. Setting curr_reactor to NULL avoids the problem.
    
    Link: https://lkml.kernel.org/r/3a35551149e5ee0cb0950035afcb8082c3b5d05b.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Cc: Donald Zickus <[email protected]>
    Fixes: 6d60f89 ("tools/rv: Add in-kernel monitor interface")
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    66f427b View commit details
    Browse the repository at this point in the history
  204. tools/rv: Fix Makefile compiler options for clang

    commit f9b2c87 upstream.
    
    The following errors are showing up when compiling rv with clang:
    
     $ make HOSTCC=clang CC=clang LLVM_IAS=1
     [...]
      clang -O -g -DVERSION=\"6.8.0-rc1\" -flto=auto -ffat-lto-objects
      -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables
      -fstack-clash-protection  -Wall -Werror=format-security
      -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
      -Wno-maybe-uninitialized $(pkg-config --cflags libtracefs)
      -I include   -c -o src/utils.o src/utils.c
      clang: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
      warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
      1 warning generated.
    
      clang -o rv -ggdb  src/in_kernel.o src/rv.o src/trace.o src/utils.o $(pkg-config --libs libtracefs)
      src/in_kernel.o: file not recognized: file format not recognized
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      make: *** [Makefile:110: rv] Error 1
    
    Solve these issues by:
      - removing -ffat-lto-objects and -Wno-maybe-uninitialized if using clang
      - informing the linker about -flto=auto
    
    Link: https://lkml.kernel.org/r/ed94a8ddc2ca8c8ef663cfb7ae9dd196c4a66b33.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Fixes: 4bc4b13 ("rv: Add rv tool")
    Suggested-by: Donald Zickus <[email protected]>
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7c61d7a View commit details
    Browse the repository at this point in the history
  205. tools/rtla: Remove unused sched_getattr() function

    commit 084ce16 upstream.
    
    Clang is reporting:
    
    $ make HOSTCC=clang CC=clang LLVM_IAS=1
    [...]
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection  -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS $(pkg-config --cflags libtracefs)    -c -o src/utils.o src/utils.c
    src/utils.c:241:19: warning: unused function 'sched_getattr' [-Wunused-function]
      241 | static inline int sched_getattr(pid_t pid, struct sched_attr *attr,
          |                   ^~~~~~~~~~~~~
    1 warning generated.
    
    Which is correct, so remove the unused function.
    
    Link: https://lkml.kernel.org/r/eaed7ba122c4ae88ce71277c824ef41cbf789385.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Cc: Donald Zickus <[email protected]>
    Fixes: b169637 ("rtla: Helper functions for rtla")
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    d0bc5df View commit details
    Browse the repository at this point in the history
  206. tools/rtla: Replace setting prio with nice for SCHED_OTHER

    commit 14f08c9 upstream.
    
    Since the sched_priority for SCHED_OTHER is always 0, it makes no
    sence to set it.
    Setting nice for SCHED_OTHER seems more meaningful.
    
    Link: https://lkml.kernel.org/r/[email protected]
    
    Cc: [email protected]
    Fixes: b169637 ("rtla: Helper functions for rtla")
    Signed-off-by: limingming3 <[email protected]>
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    limingming3 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    939054e View commit details
    Browse the repository at this point in the history
  207. tools/rtla: Fix clang warning about mount_point var size

    commit 3036908 upstream.
    
    clang is reporting this warning:
    
    $ make HOSTCC=clang CC=clang LLVM_IAS=1
    [...]
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)    -c -o src/utils.o src/utils.c
    
    src/utils.c:548:66: warning: 'fscanf' may overflow; destination buffer in argument 3 has size 1024, but the corresponding specifier may require size 1025 [-Wfortify-source]
      548 |         while (fscanf(fp, "%*s %" STR(MAX_PATH) "s %99s %*s %*d %*d\n", mount_point, type) == 2) {
          |                                                                         ^
    
    Increase mount_point variable size to MAX_PATH+1 to avoid the overflow.
    
    Link: https://lkml.kernel.org/r/1b46712e93a2f4153909514a36016959dcc4021c.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Cc: Donald Zickus <[email protected]>
    Fixes: a957cbc ("rtla: Add -C cgroup support")
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    6bdd43f View commit details
    Browse the repository at this point in the history
  208. tools/rtla: Exit with EXIT_SUCCESS when help is invoked

    commit b5f3193 upstream.
    
    Fix rtla so that the following commands exit with 0 when help is invoked
    
    rtla osnoise top -h
    rtla osnoise hist -h
    rtla timerlat top -h
    rtla timerlat hist -h
    
    Link: https://lore.kernel.org/linux-trace-devel/[email protected]
    
    Cc: [email protected]
    Fixes: 1eeb632 ("rtla/timerlat: Add timerlat hist mode")
    Signed-off-by: John Kacur <[email protected]>
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    John Kacur authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1c1218e View commit details
    Browse the repository at this point in the history
  209. tools/rtla: Fix uninitialized bucket/data->bucket_size warning

    commit 64dc40f upstream.
    
    When compiling rtla with clang, I am getting the following warnings:
    
    $ make HOSTCC=clang CC=clang LLVM_IAS=1
    
    [..]
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)
    	-c -o src/osnoise_hist.o src/osnoise_hist.c
    src/osnoise_hist.c:138:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      138 |         if (data->bucket_size)
          |             ^~~~~~~~~~~~~~~~~
    src/osnoise_hist.c:149:6: note: uninitialized use occurs here
      149 |         if (bucket < entries)
          |             ^~~~~~
    src/osnoise_hist.c:138:2: note: remove the 'if' if its condition is always true
      138 |         if (data->bucket_size)
          |         ^~~~~~~~~~~~~~~~~~~~~~
      139 |                 bucket = duration / data->bucket_size;
    src/osnoise_hist.c:132:12: note: initialize the variable 'bucket' to silence this warning
      132 |         int bucket;
          |                   ^
          |                    = 0
    1 warning generated.
    
    [...]
    
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)
    	-c -o src/timerlat_hist.o src/timerlat_hist.c
    src/timerlat_hist.c:181:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      181 |         if (data->bucket_size)
          |             ^~~~~~~~~~~~~~~~~
    src/timerlat_hist.c:204:6: note: uninitialized use occurs here
      204 |         if (bucket < entries)
          |             ^~~~~~
    src/timerlat_hist.c:181:2: note: remove the 'if' if its condition is always true
      181 |         if (data->bucket_size)
          |         ^~~~~~~~~~~~~~~~~~~~~~
      182 |                 bucket = latency / data->bucket_size;
    src/timerlat_hist.c:175:12: note: initialize the variable 'bucket' to silence this warning
      175 |         int bucket;
          |                   ^
          |                    = 0
    1 warning generated.
    
    This is a legit warning, but data->bucket_size is always > 0 (see
    timerlat_hist_parse_args()), so the if is not necessary.
    
    Remove the unneeded if (data->bucket_size) to avoid the warning.
    
    Link: https://lkml.kernel.org/r/6e1b1665cd99042ae705b3e0fc410858c4c42346.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Cc: Donald Zickus <[email protected]>
    Fixes: 1eeb632 ("rtla/timerlat: Add timerlat hist mode")
    Fixes: 829a6c0 ("rtla/osnoise: Add the hist mode")
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    f2ebb84 View commit details
    Browse the repository at this point in the history
  210. tools/rtla: Fix Makefile compiler options for clang

    commit bc4cbc9 upstream.
    
    The following errors are showing up when compiling rtla with clang:
    
     $ make HOSTCC=clang CC=clang LLVM_IAS=1
     [...]
    
      clang -O -g -DVERSION=\"6.8.0-rc1\" -flto=auto -ffat-lto-objects
    	-fexceptions -fstack-protector-strong
    	-fasynchronous-unwind-tables -fstack-clash-protection  -Wall
    	-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
    	-Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized
    	$(pkg-config --cflags libtracefs)    -c -o src/utils.o src/utils.c
    
      clang: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
      warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]
      1 warning generated.
    
      clang -o rtla -ggdb  src/osnoise.o src/osnoise_hist.o src/osnoise_top.o
      src/rtla.o src/timerlat_aa.o src/timerlat.o src/timerlat_hist.o
      src/timerlat_top.o src/timerlat_u.o src/trace.o src/utils.o $(pkg-config --libs libtracefs)
    
      src/osnoise.o: file not recognized: file format not recognized
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      make: *** [Makefile:110: rtla] Error 1
    
    Solve these issues by:
      - removing -ffat-lto-objects and -Wno-maybe-uninitialized if using clang
      - informing the linker about -flto=auto
    
    Link: https://lore.kernel.org/linux-trace-kernel/567ac1b94effc228ce9a0225b9df7232a9b35b55.1707217097.git.bristot@kernel.org
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Fixes: 1a7b22a ("tools/rtla: Build with EXTRA_{C,LD}FLAGS")
    Suggested-by: Donald Zickus <[email protected]>
    Signed-off-by: Daniel Bristot de Oliveira <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Daniel Bristot de Oliveira authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    0b5885f View commit details
    Browse the repository at this point in the history
  211. fs: relax mount_setattr() permission checks

    commit 46f5ab7 upstream.
    
    When we added mount_setattr() I added additional checks compared to the
    legacy do_reconfigure_mnt() and do_change_type() helpers used by regular
    mount(2). If that mount had a parent then verify that the caller and the
    mount namespace the mount is attached to match and if not make sure that
    it's an anonymous mount.
    
    The real rootfs falls into neither category. It is neither an anoymous
    mount because it is obviously attached to the initial mount namespace
    but it also obviously doesn't have a parent mount. So that means legacy
    mount(2) allows changing mount properties on the real rootfs but
    mount_setattr(2) blocks this. I never thought much about this but of
    course someone on this planet of earth changes properties on the real
    rootfs as can be seen in [1].
    
    Since util-linux finally switched to the new mount api in 2.39 not so
    long ago it also relies on mount_setattr() and that surfaced this issue
    when Fedora 39 finally switched to it. Fix this.
    
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2256843
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jan Kara <[email protected]>
    Reported-by: Karel Zak <[email protected]>
    Cc: [email protected] # v5.12+
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    brauner authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2a7a31e View commit details
    Browse the repository at this point in the history
  212. net: ethernet: ti: cpsw: enable mac_managed_pm to fix mdio

    commit bc4ce46 upstream.
    
    The below commit  introduced a WARN when phy state is not in the states:
    PHY_HALTED, PHY_READY and PHY_UP.
    commit 744d23c ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    
    When cpsw resumes, there have port in PHY_NOLINK state, so the below
    warning comes out. Set mac_managed_pm be true to tell mdio that the phy
    resume/suspend is managed by the mac, to fix the following warning:
    
    WARNING: CPU: 0 PID: 965 at drivers/net/phy/phy_device.c:326 mdio_bus_phy_resume+0x140/0x144
    CPU: 0 PID: 965 Comm: sh Tainted: G           O       6.1.46-g247b2535b2 #1
    Hardware name: Generic AM33XX (Flattened Device Tree)
     unwind_backtrace from show_stack+0x18/0x1c
     show_stack from dump_stack_lvl+0x24/0x2c
     dump_stack_lvl from __warn+0x84/0x15c
     __warn from warn_slowpath_fmt+0x1a8/0x1c8
     warn_slowpath_fmt from mdio_bus_phy_resume+0x140/0x144
     mdio_bus_phy_resume from dpm_run_callback+0x3c/0x140
     dpm_run_callback from device_resume+0xb8/0x2b8
     device_resume from dpm_resume+0x144/0x314
     dpm_resume from dpm_resume_end+0x14/0x20
     dpm_resume_end from suspend_devices_and_enter+0xd0/0x924
     suspend_devices_and_enter from pm_suspend+0x2e0/0x33c
     pm_suspend from state_store+0x74/0xd0
     state_store from kernfs_fop_write_iter+0x104/0x1ec
     kernfs_fop_write_iter from vfs_write+0x1b8/0x358
     vfs_write from ksys_write+0x78/0xf8
     ksys_write from ret_fast_syscall+0x0/0x54
    Exception stack(0xe094dfa8 to 0xe094dff0)
    dfa0:                   00000004 005c3fb8 00000001 005c3fb8 00000004 00000001
    dfc0: 00000004 005c3fb8 b6f6bba0 00000004 00000004 0059edb8 00000000 00000000
    dfe0: 00000004 bed918f0 b6f09bd3 b6e89a66
    
    Cc: <[email protected]> # v6.0+
    Fixes: 744d23c ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    Fixes: fba863b ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
    Signed-off-by: Sinthu Raja <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sinthu-raja authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ba040e1 View commit details
    Browse the repository at this point in the history
  213. s390/qeth: Fix potential loss of L3-IP@ in case of network issues

    commit 2fe8a23 upstream.
    
    Symptom:
    In case of a bad cable connection (e.g. dirty optics) a fast sequence of
    network DOWN-UP-DOWN-UP could happen. UP triggers recovery of the qeth
    interface. In case of a second DOWN while recovery is still ongoing, it
    can happen that the IP@ of a Layer3 qeth interface is lost and will not
    be recovered by the second UP.
    
    Problem:
    When registration of IP addresses with Layer 3 qeth devices fails, (e.g.
    because of bad address format) the respective IP address is deleted from
    its hash-table in the driver. If registration fails because of a ENETDOWN
    condition, the address should stay in the hashtable, so a subsequent
    recovery can restore it.
    
    3caa4af ("qeth: keep ip-address after LAN_OFFLINE failure")
    fixes this for registration failures during normal operation, but not
    during recovery.
    
    Solution:
    Keep L3-IP address in case of ENETDOWN in qeth_l3_recover_ip(). For
    consistency with qeth_l3_add_ip() we also keep it in case of EADDRINUSE,
    i.e. for some reason the card already/still has this address registered.
    
    Fixes: 4a71df5 ("qeth: new qeth device driver")
    Cc: [email protected]
    Signed-off-by: Alexandra Winter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    SandyWinter authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    065207a View commit details
    Browse the repository at this point in the history
  214. mm/damon/sysfs-schemes: fix wrong DAMOS tried regions update timeout …

    …setup
    
    commit b9e4bc1 upstream.
    
    DAMON sysfs interface's update_schemes_tried_regions command has a timeout
    of two apply intervals of the DAMOS scheme.  Having zero value DAMOS
    scheme apply interval means it will use the aggregation interval as the
    value.  However, the timeout setup logic is mistakenly using the sampling
    interval insted of the aggregartion interval for the case.  This could
    cause earlier-than-expected timeout of the command.  Fix it.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 7d6fa31 ("mm/damon/sysfs-schemes: add timeout for update_schemes_tried_regions")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]> # 6.7.x
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sjp38 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cd9ff8d View commit details
    Browse the repository at this point in the history
  215. net: ethernet: ti: cpsw_new: enable mac_managed_pm to fix mdio

    commit 9def04e upstream.
    
    The below commit  introduced a WARN when phy state is not in the states:
    PHY_HALTED, PHY_READY and PHY_UP.
    commit 744d23c ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    
    When cpsw_new resumes, there have port in PHY_NOLINK state, so the below
    warning comes out. Set mac_managed_pm be true to tell mdio that the phy
    resume/suspend is managed by the mac, to fix the following warning:
    
    WARNING: CPU: 0 PID: 965 at drivers/net/phy/phy_device.c:326 mdio_bus_phy_resume+0x140/0x144
    CPU: 0 PID: 965 Comm: sh Tainted: G           O       6.1.46-g247b2535b2 #1
    Hardware name: Generic AM33XX (Flattened Device Tree)
     unwind_backtrace from show_stack+0x18/0x1c
     show_stack from dump_stack_lvl+0x24/0x2c
     dump_stack_lvl from __warn+0x84/0x15c
     __warn from warn_slowpath_fmt+0x1a8/0x1c8
     warn_slowpath_fmt from mdio_bus_phy_resume+0x140/0x144
     mdio_bus_phy_resume from dpm_run_callback+0x3c/0x140
     dpm_run_callback from device_resume+0xb8/0x2b8
     device_resume from dpm_resume+0x144/0x314
     dpm_resume from dpm_resume_end+0x14/0x20
     dpm_resume_end from suspend_devices_and_enter+0xd0/0x924
     suspend_devices_and_enter from pm_suspend+0x2e0/0x33c
     pm_suspend from state_store+0x74/0xd0
     state_store from kernfs_fop_write_iter+0x104/0x1ec
     kernfs_fop_write_iter from vfs_write+0x1b8/0x358
     vfs_write from ksys_write+0x78/0xf8
     ksys_write from ret_fast_syscall+0x0/0x54
    Exception stack(0xe094dfa8 to 0xe094dff0)
    dfa0:                   00000004 005c3fb8 00000001 005c3fb8 00000004 00000001
    dfc0: 00000004 005c3fb8 b6f6bba0 00000004 00000004 0059edb8 00000000 00000000
    dfe0: 00000004 bed918f0 b6f09bd3 b6e89a66
    
    Cc: <[email protected]> # v6.0+
    Fixes: 744d23c ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    Fixes: fba863b ("net: phy: make PHY PM ops a no-op if MAC driver manages PHY PM")
    Signed-off-by: Sinthu Raja <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    sinthu-raja authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c9dca88 View commit details
    Browse the repository at this point in the history
  216. pmdomain: renesas: r8a77980-sysc: CR7 must be always on

    commit f0e4a13 upstream.
    
    The power domain containing the Cortex-R7 CPU core on the R-Car V3H SoC
    must always be in power-on state, unlike on other SoCs in the R-Car Gen3
    family.  See Table 9.4 "Power domains" in the R-Car Series, 3rd
    Generation Hardware User’s Manual Rev.1.00 and later.
    
    Fix this by marking the domain as a CPU domain without control
    registers, so the driver will not touch it.
    
    Fixes: 41d6d8b ("soc: renesas: rcar-sysc: add R8A77980 support")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/fdad9a86132d53ecddf72b734dac406915c4edc0.1705076735.git.geert+renesas@glider.be
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    geertu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    22b7dca View commit details
    Browse the repository at this point in the history
  217. riscv/efistub: Ensure GP-relative addressing is not used

    commit afb2a4f upstream.
    
    The cflags for the RISC-V efistub were missing -mno-relax, thus were
    under the risk that the compiler could use GP-relative addressing. That
    happened for _edata with binutils-2.41 and kernel 6.1, causing the
    relocation to fail due to an invalid kernel_size in handle_kernel_image.
    It was not yet observed with newer versions, but that may just be luck.
    
    Cc: <[email protected]>
    Signed-off-by: Jan Kiszka <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jan-kiszka authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    8bfc9c2 View commit details
    Browse the repository at this point in the history
  218. net: stmmac: protect updates of 64-bit statistics counters

    commit 38cc3c6 upstream.
    
    As explained by a comment in <linux/u64_stats_sync.h>, write side of struct
    u64_stats_sync must ensure mutual exclusion, or one seqcount update could
    be lost on 32-bit platforms, thus blocking readers forever. Such lockups
    have been observed in real world after stmmac_xmit() on one CPU raced with
    stmmac_napi_poll_tx() on another CPU.
    
    To fix the issue without introducing a new lock, split the statics into
    three parts:
    
    1. fields updated only under the tx queue lock,
    2. fields updated only during NAPI poll,
    3. fields updated only from interrupt context,
    
    Updates to fields in the first two groups are already serialized through
    other locks. It is sufficient to split the existing struct u64_stats_sync
    so that each group has its own.
    
    Note that tx_set_ic_bit is updated from both contexts. Split this counter
    so that each context gets its own, and calculate their sum to get the total
    value in stmmac_get_ethtool_stats().
    
    For the third group, multiple interrupts may be processed by different CPUs
    at the same time, but interrupts on the same CPU will not nest. Move fields
    from this group to a newly created per-cpu struct stmmac_pcpu_stats.
    
    Fixes: 133466c ("net: stmmac: use per-queue 64 bit statistics where necessary")
    Link: https://lore.kernel.org/netdev/[email protected]/t/
    Cc: [email protected]
    Signed-off-by: Petr Tesarik <[email protected]>
    Reviewed-by: Jisheng Zhang <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    ptesarik authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e6af0f0 View commit details
    Browse the repository at this point in the history
  219. hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed

    commit 9cae43d upstream.
    
    If hv_netvsc driver is unloaded and reloaded, the NET_DEVICE_REGISTER
    handler cannot perform VF register successfully as the register call
    is received before netvsc_probe is finished. This is because we
    register register_netdevice_notifier() very early( even before
    vmbus_driver_register()).
    To fix this, we try to register each such matching VF( if it is visible
    as a netdevice) at the end of netvsc_probe.
    
    Cc: [email protected]
    Fixes: 8552085 ("hv_netvsc: Fix race of register_netdevice_notifier and VF register")
    Suggested-by: Dexuan Cui <[email protected]>
    Signed-off-by: Shradha Gupta <[email protected]>
    Reviewed-by: Haiyang Zhang <[email protected]>
    Reviewed-by: Dexuan Cui <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Shradha Gupta authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    4d29a58 View commit details
    Browse the repository at this point in the history
  220. ceph: prevent use-after-free in encode_cap_msg()

    commit cda4672 upstream.
    
    In fs/ceph/caps.c, in encode_cap_msg(), "use after free" error was
    caught by KASAN at this line - 'ceph_buffer_get(arg->xattr_buf);'. This
    implies before the refcount could be increment here, it was freed.
    
    In same file, in "handle_cap_grant()" refcount is decremented by this
    line - 'ceph_buffer_put(ci->i_xattrs.blob);'. It appears that a race
    occurred and resource was freed by the latter line before the former
    line could increment it.
    
    encode_cap_msg() is called by __send_cap() and __send_cap() is called by
    ceph_check_caps() after calling __prep_cap(). __prep_cap() is where
    arg->xattr_buf is assigned to ci->i_xattrs.blob. This is the spot where
    the refcount must be increased to prevent "use after free" error.
    
    Cc: [email protected]
    Link: https://tracker.ceph.com/issues/59259
    Signed-off-by: Rishabh Dave <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Reviewed-by: Xiubo Li <[email protected]>
    Signed-off-by: Ilya Dryomov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rishabh-d-dave authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    7958c1b View commit details
    Browse the repository at this point in the history
  221. nouveau/gsp: use correct size for registry rpc.

    commit 61712c9 upstream.
    
    Timur pointed this out before, and it just slipped my mind,
    but this might help some things work better, around pcie power
    management.
    
    Cc: <[email protected]> # v6.7
    Fixes: 8d55b0a ("nouveau/gsp: add some basic registry entries.")
    Signed-off-by: Dave Airlie <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    airlied authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    18db77b View commit details
    Browse the repository at this point in the history
  222. fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super

    commit 79d72c6 upstream.
    
    When configuring a hugetlb filesystem via the fsconfig() syscall, there is
    a possible NULL dereference in hugetlbfs_fill_super() caused by assigning
    NULL to ctx->hstate in hugetlbfs_parse_param() when the requested pagesize
    is non valid.
    
    E.g: Taking the following steps:
    
         fd = fsopen("hugetlbfs", FSOPEN_CLOEXEC);
         fsconfig(fd, FSCONFIG_SET_STRING, "pagesize", "1024", 0);
         fsconfig(fd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
    
    Given that the requested "pagesize" is invalid, ctxt->hstate will be replaced
    with NULL, losing its previous value, and we will print an error:
    
     ...
     ...
     case Opt_pagesize:
     ps = memparse(param->string, &rest);
     ctx->hstate = h;
     if (!ctx->hstate) {
             pr_err("Unsupported page size %lu MB\n", ps / SZ_1M);
             return -EINVAL;
     }
     return 0;
     ...
     ...
    
    This is a problem because later on, we will dereference ctxt->hstate in
    hugetlbfs_fill_super()
    
     ...
     ...
     sb->s_blocksize = huge_page_size(ctx->hstate);
     ...
     ...
    
    Causing below Oops.
    
    Fix this by replacing cxt->hstate value only when then pagesize is known
    to be valid.
    
     kernel: hugetlbfs: Unsupported page size 0 MB
     kernel: BUG: kernel NULL pointer dereference, address: 0000000000000028
     kernel: #PF: supervisor read access in kernel mode
     kernel: #PF: error_code(0x0000) - not-present page
     kernel: PGD 800000010f66c067 P4D 800000010f66c067 PUD 1b22f8067 PMD 0
     kernel: Oops: 0000 [#1] PREEMPT SMP PTI
     kernel: CPU: 4 PID: 5659 Comm: syscall Tainted: G            E      6.8.0-rc2-default+ #22 5a47c3fef76212addcc6eb71344aabc35190ae8f
     kernel: Hardware name: Intel Corp. GROVEPORT/GROVEPORT, BIOS GVPRCRB1.86B.0016.D04.1705030402 05/03/2017
     kernel: RIP: 0010:hugetlbfs_fill_super+0xb4/0x1a0
     kernel: Code: 48 8b 3b e8 3e c6 ed ff 48 85 c0 48 89 45 20 0f 84 d6 00 00 00 48 b8 ff ff ff ff ff ff ff 7f 4c 89 e7 49 89 44 24 20 48 8b 03 <8b> 48 28 b8 00 10 00 00 48 d3 e0 49 89 44 24 18 48 8b 03 8b 40 28
     kernel: RSP: 0018:ffffbe9960fcbd48 EFLAGS: 00010246
     kernel: RAX: 0000000000000000 RBX: ffff9af5272ae780 RCX: 0000000000372004
     kernel: RDX: ffffffffffffffff RSI: ffffffffffffffff RDI: ffff9af555e9b000
     kernel: RBP: ffff9af52ee66b00 R08: 0000000000000040 R09: 0000000000370004
     kernel: R10: ffffbe9960fcbd48 R11: 0000000000000040 R12: ffff9af555e9b000
     kernel: R13: ffffffffa66b86c0 R14: ffff9af507d2f400 R15: ffff9af507d2f400
     kernel: FS:  00007ffbc0ba4740(0000) GS:ffff9b0bd7000000(0000) knlGS:0000000000000000
     kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     kernel: CR2: 0000000000000028 CR3: 00000001b1ee0000 CR4: 00000000001506f0
     kernel: Call Trace:
     kernel:  <TASK>
     kernel:  ? __die_body+0x1a/0x60
     kernel:  ? page_fault_oops+0x16f/0x4a0
     kernel:  ? search_bpf_extables+0x65/0x70
     kernel:  ? fixup_exception+0x22/0x310
     kernel:  ? exc_page_fault+0x69/0x150
     kernel:  ? asm_exc_page_fault+0x22/0x30
     kernel:  ? __pfx_hugetlbfs_fill_super+0x10/0x10
     kernel:  ? hugetlbfs_fill_super+0xb4/0x1a0
     kernel:  ? hugetlbfs_fill_super+0x28/0x1a0
     kernel:  ? __pfx_hugetlbfs_fill_super+0x10/0x10
     kernel:  vfs_get_super+0x40/0xa0
     kernel:  ? __pfx_bpf_lsm_capable+0x10/0x10
     kernel:  vfs_get_tree+0x25/0xd0
     kernel:  vfs_cmd_create+0x64/0xe0
     kernel:  __x64_sys_fsconfig+0x395/0x410
     kernel:  do_syscall_64+0x80/0x160
     kernel:  ? syscall_exit_to_user_mode+0x82/0x240
     kernel:  ? do_syscall_64+0x8d/0x160
     kernel:  ? syscall_exit_to_user_mode+0x82/0x240
     kernel:  ? do_syscall_64+0x8d/0x160
     kernel:  ? exc_page_fault+0x69/0x150
     kernel:  entry_SYSCALL_64_after_hwframe+0x6e/0x76
     kernel: RIP: 0033:0x7ffbc0cb87c9
     kernel: Code: 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 97 96 0d 00 f7 d8 64 89 01 48
     kernel: RSP: 002b:00007ffc29d2f388 EFLAGS: 00000206 ORIG_RAX: 00000000000001af
     kernel: RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ffbc0cb87c9
     kernel: RDX: 0000000000000000 RSI: 0000000000000006 RDI: 0000000000000003
     kernel: RBP: 00007ffc29d2f3b0 R08: 0000000000000000 R09: 0000000000000000
     kernel: R10: 0000000000000000 R11: 0000000000000206 R12: 0000000000000000
     kernel: R13: 00007ffc29d2f4c0 R14: 0000000000000000 R15: 0000000000000000
     kernel:  </TASK>
     kernel: Modules linked in: rpcsec_gss_krb5(E) auth_rpcgss(E) nfsv4(E) dns_resolver(E) nfs(E) lockd(E) grace(E) sunrpc(E) netfs(E) af_packet(E) bridge(E) stp(E) llc(E) iscsi_ibft(E) iscsi_boot_sysfs(E) intel_rapl_msr(E) intel_rapl_common(E) iTCO_wdt(E) intel_pmc_bxt(E) sb_edac(E) iTCO_vendor_support(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) coretemp(E) kvm_intel(E) rfkill(E) ipmi_ssif(E) kvm(E) acpi_ipmi(E) irqbypass(E) pcspkr(E) igb(E) ipmi_si(E) mei_me(E) i2c_i801(E) joydev(E) intel_pch_thermal(E) i2c_smbus(E) dca(E) lpc_ich(E) mei(E) ipmi_devintf(E) ipmi_msghandler(E) acpi_pad(E) tiny_power_button(E) button(E) fuse(E) efi_pstore(E) configfs(E) ip_tables(E) x_tables(E) ext4(E) mbcache(E) jbd2(E) hid_generic(E) usbhid(E) sd_mod(E) t10_pi(E) crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) polyval_clmulni(E) ahci(E) xhci_pci(E) polyval_generic(E) gf128mul(E) ghash_clmulni_intel(E) sha512_ssse3(E) sha256_ssse3(E) xhci_pci_renesas(E) libahci(E) ehci_pci(E) sha1_ssse3(E) xhci_hcd(E) ehci_hcd(E) libata(E)
     kernel:  mgag200(E) i2c_algo_bit(E) usbcore(E) wmi(E) sg(E) dm_multipath(E) dm_mod(E) scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) scsi_mod(E) scsi_common(E) aesni_intel(E) crypto_simd(E) cryptd(E)
     kernel: Unloaded tainted modules: acpi_cpufreq(E):1 fjes(E):1
     kernel: CR2: 0000000000000028
     kernel: ---[ end trace 0000000000000000 ]---
     kernel: RIP: 0010:hugetlbfs_fill_super+0xb4/0x1a0
     kernel: Code: 48 8b 3b e8 3e c6 ed ff 48 85 c0 48 89 45 20 0f 84 d6 00 00 00 48 b8 ff ff ff ff ff ff ff 7f 4c 89 e7 49 89 44 24 20 48 8b 03 <8b> 48 28 b8 00 10 00 00 48 d3 e0 49 89 44 24 18 48 8b 03 8b 40 28
     kernel: RSP: 0018:ffffbe9960fcbd48 EFLAGS: 00010246
     kernel: RAX: 0000000000000000 RBX: ffff9af5272ae780 RCX: 0000000000372004
     kernel: RDX: ffffffffffffffff RSI: ffffffffffffffff RDI: ffff9af555e9b000
     kernel: RBP: ffff9af52ee66b00 R08: 0000000000000040 R09: 0000000000370004
     kernel: R10: ffffbe9960fcbd48 R11: 0000000000000040 R12: ffff9af555e9b000
     kernel: R13: ffffffffa66b86c0 R14: ffff9af507d2f400 R15: ffff9af507d2f400
     kernel: FS:  00007ffbc0ba4740(0000) GS:ffff9b0bd7000000(0000) knlGS:0000000000000000
     kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     kernel: CR2: 0000000000000028 CR3: 00000001b1ee0000 CR4: 00000000001506f0
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 3202198 ("hugetlbfs: Convert to fs_context")
    Signed-off-by: Michal Hocko <[email protected]>
    Signed-off-by: Oscar Salvador <[email protected]>
    Acked-by: Muchun Song <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    osalvadorvilardaga authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ec78418 View commit details
    Browse the repository at this point in the history
  223. mm: hugetlb pages should not be reserved by shmat() if SHM_NORESERVE

    commit e656c7a upstream.
    
    For shared memory of type SHM_HUGETLB, hugetlb pages are reserved in
    shmget() call.  If SHM_NORESERVE flags is specified then the hugetlb pages
    are not reserved.  However when the shared memory is attached with the
    shmat() call the hugetlb pages are getting reserved incorrectly for
    SHM_HUGETLB shared memory created with SHM_NORESERVE which is a bug.
    
    -------------------------------
    Following test shows the issue.
    
    $cat shmhtb.c
    
    int main()
    {
    	int shmflags = 0660 | IPC_CREAT | SHM_HUGETLB | SHM_NORESERVE;
    	int shmid;
    
    	shmid = shmget(SKEY, SHMSZ, shmflags);
    	if (shmid < 0)
    	{
    		printf("shmat: shmget() failed, %d\n", errno);
    		return 1;
    	}
    	printf("After shmget()\n");
    	system("cat /proc/meminfo | grep -i hugepages_");
    
    	shmat(shmid, NULL, 0);
    	printf("\nAfter shmat()\n");
    	system("cat /proc/meminfo | grep -i hugepages_");
    
    	shmctl(shmid, IPC_RMID, NULL);
    	return 0;
    }
    
     #sysctl -w vm.nr_hugepages=20
     #./shmhtb
    
    After shmget()
    HugePages_Total:      20
    HugePages_Free:       20
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    
    After shmat()
    HugePages_Total:      20
    HugePages_Free:       20
    HugePages_Rsvd:        5 <--
    HugePages_Surp:        0
    --------------------------------
    
    Fix is to ensure that hugetlb pages are not reserved for SHM_HUGETLB shared
    memory in the shmat() call.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Prakash Sangappa <[email protected]>
    Acked-by: Muchun Song <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Prakash Sangappa authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a44bbce View commit details
    Browse the repository at this point in the history
  224. LoongArch: Fix earlycon parameter if KASAN enabled

    commit 639420e upstream.
    
    The earlycon parameter is based on fixmap, and fixmap addresses are not
    supposed to be shadowed by KASAN. So return the kasan_early_shadow_page
    in kasan_mem_to_shadow() if the input address is above FIXADDR_START.
    Otherwise earlycon cannot work after kasan_init().
    
    Cc: [email protected]
    Fixes: 5aa4ac6 ("LoongArch: Add KASAN (Kernel Address Sanitizer) support")
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    chenhuacai authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    1b1586b View commit details
    Browse the repository at this point in the history
  225. blk-wbt: Fix detection of dirty-throttled tasks

    commit f814bdd upstream.
    
    The detection of dirty-throttled tasks in blk-wbt has been subtly broken
    since its beginning in 2016. Namely if we are doing cgroup writeback and
    the throttled task is not in the root cgroup, balance_dirty_pages() will
    set dirty_sleep for the non-root bdi_writeback structure. However
    blk-wbt checks dirty_sleep only in the root cgroup bdi_writeback
    structure. Thus detection of recently throttled tasks is not working in
    this case (we noticed this when we switched to cgroup v2 and suddently
    writeback was slow).
    
    Since blk-wbt has no easy way to get to proper bdi_writeback and
    furthermore its intention has always been to work on the whole device
    rather than on individual cgroups, just move the dirty_sleep timestamp
    from bdi_writeback to backing_dev_info. That fixes the checking for
    recently throttled task and saves memory for everybody as a bonus.
    
    CC: [email protected]
    Fixes: b57d74a ("writeback: track if we're sleeping on progress in balance_dirty_pages()")
    Signed-off-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [axboe: fixup indentation errors]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    jankara authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fd955c0 View commit details
    Browse the repository at this point in the history
  226. docs: kernel_feat.py: fix build error for missing files

    commit c23de7c upstream.
    
    If the directory passed to the '.. kernel-feat::' directive does not
    exist or the get_feat.pl script does not find any files to extract
    features from, Sphinx will report the following error:
    
        Sphinx parallel build error:
        UnboundLocalError: local variable 'fname' referenced before assignment
        make[2]: *** [Documentation/Makefile:102: htmldocs] Error 2
    
    This is due to how I changed the script in c48a7c4 ("docs:
    kernel_feat.py: fix potential command injection"). Before that, the
    filename passed along to self.nestedParse() in this case was weirdly
    just the whole get_feat.pl invocation.
    
    We can fix it by doing what kernel_abi.py does -- just pass
    self.arguments[0] as 'fname'.
    
    Fixes: c48a7c4 ("docs: kernel_feat.py: fix potential command injection")
    Cc: Justin Forbes <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Cc: Jani Nikula <[email protected]>
    Cc: Mauro Carvalho Chehab <[email protected]>
    Cc: [email protected]
    Signed-off-by: Vegard Nossum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jonathan Corbet <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    vegard authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2930f57 View commit details
    Browse the repository at this point in the history
  227. of: property: fix typo in io-channels

    commit 8f7e917 upstream.
    
    The property is io-channels and not io-channel. This was effectively
    preventing the devlink creation.
    
    Fixes: 8e12257 ("of: property: Add device link support for iommus, mboxes and io-channels")
    Cc: [email protected]
    Signed-off-by: Nuno Sa <[email protected]>
    Reviewed-by: Saravana Kannan <[email protected]>
    Acked-by: Jonathan Cameron <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    nunojsa authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    5c5981b View commit details
    Browse the repository at this point in the history
  228. xen/events: close evtchn after mapping cleanup

    commit fa765c4 upstream.
    
    shutdown_pirq and startup_pirq are not taking the
    irq_mapping_update_lock because they can't due to lock inversion. Both
    are called with the irq_desc->lock being taking. The lock order,
    however, is first irq_mapping_update_lock and then irq_desc->lock.
    
    This opens multiple races:
    - shutdown_pirq can be interrupted by a function that allocates an event
      channel:
    
      CPU0                        CPU1
      shutdown_pirq {
        xen_evtchn_close(e)
                                  __startup_pirq {
                                    EVTCHNOP_bind_pirq
                                      -> returns just freed evtchn e
                                    set_evtchn_to_irq(e, irq)
                                  }
        xen_irq_info_cleanup() {
          set_evtchn_to_irq(e, -1)
        }
      }
    
      Assume here event channel e refers here to the same event channel
      number.
      After this race the evtchn_to_irq mapping for e is invalid (-1).
    
    - __startup_pirq races with __unbind_from_irq in a similar way. Because
      __startup_pirq doesn't take irq_mapping_update_lock it can grab the
      evtchn that __unbind_from_irq is currently freeing and cleaning up. In
      this case even though the event channel is allocated, its mapping can
      be unset in evtchn_to_irq.
    
    The fix is to first cleanup the mappings and then close the event
    channel. In this way, when an event channel gets allocated it's
    potential previous evtchn_to_irq mappings are guaranteed to be unset already.
    This is also the reverse order of the allocation where first the event
    channel is allocated and then the mappings are setup.
    
    On a 5.10 kernel prior to commit 3fcdaf3 ("xen/events: modify internal
    [un]bind interfaces"), we hit a BUG like the following during probing of NVMe
    devices. The issue is that during nvme_setup_io_queues, pci_free_irq
    is called for every device which results in a call to shutdown_pirq.
    With many nvme devices it's therefore likely to hit this race during
    boot because there will be multiple calls to shutdown_pirq and
    startup_pirq are running potentially in parallel.
    
      ------------[ cut here ]------------
      blkfront: xvda: barrier or flush: disabled; persistent grants: enabled; indirect descriptors: enabled; bounce buffer: enabled
      kernel BUG at drivers/xen/events/events_base.c:499!
      invalid opcode: 0000 [#1] SMP PTI
      CPU: 44 PID: 375 Comm: kworker/u257:23 Not tainted 5.10.201-191.748.amzn2.x86_64 #1
      Hardware name: Xen HVM domU, BIOS 4.11.amazon 08/24/2006
      Workqueue: nvme-reset-wq nvme_reset_work
      RIP: 0010:bind_evtchn_to_cpu+0xdf/0xf0
      Code: 5d 41 5e c3 cc cc cc cc 44 89 f7 e8 2b 55 ad ff 49 89 c5 48 85 c0 0f 84 64 ff ff ff 4c 8b 68 30 41 83 fe ff 0f 85 60 ff ff ff <0f> 0b 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 0f 1f 44 00 00
      RSP: 0000:ffffc9000d533b08 EFLAGS: 00010046
      RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000006
      RDX: 0000000000000028 RSI: 00000000ffffffff RDI: 00000000ffffffff
      RBP: ffff888107419680 R08: 0000000000000000 R09: ffffffff82d72b00
      R10: 0000000000000000 R11: 0000000000000000 R12: 00000000000001ed
      R13: 0000000000000000 R14: 00000000ffffffff R15: 0000000000000002
      FS:  0000000000000000(0000) GS:ffff88bc8b500000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 0000000002610001 CR4: 00000000001706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       ? show_trace_log_lvl+0x1c1/0x2d9
       ? show_trace_log_lvl+0x1c1/0x2d9
       ? set_affinity_irq+0xdc/0x1c0
       ? __die_body.cold+0x8/0xd
       ? die+0x2b/0x50
       ? do_trap+0x90/0x110
       ? bind_evtchn_to_cpu+0xdf/0xf0
       ? do_error_trap+0x65/0x80
       ? bind_evtchn_to_cpu+0xdf/0xf0
       ? exc_invalid_op+0x4e/0x70
       ? bind_evtchn_to_cpu+0xdf/0xf0
       ? asm_exc_invalid_op+0x12/0x20
       ? bind_evtchn_to_cpu+0xdf/0xf0
       ? bind_evtchn_to_cpu+0xc5/0xf0
       set_affinity_irq+0xdc/0x1c0
       irq_do_set_affinity+0x1d7/0x1f0
       irq_setup_affinity+0xd6/0x1a0
       irq_startup+0x8a/0xf0
       __setup_irq+0x639/0x6d0
       ? nvme_suspend+0x150/0x150
       request_threaded_irq+0x10c/0x180
       ? nvme_suspend+0x150/0x150
       pci_request_irq+0xa8/0xf0
       ? __blk_mq_free_request+0x74/0xa0
       queue_request_irq+0x6f/0x80
       nvme_create_queue+0x1af/0x200
       nvme_create_io_queues+0xbd/0xf0
       nvme_setup_io_queues+0x246/0x320
       ? nvme_irq_check+0x30/0x30
       nvme_reset_work+0x1c8/0x400
       process_one_work+0x1b0/0x350
       worker_thread+0x49/0x310
       ? process_one_work+0x350/0x350
       kthread+0x11b/0x140
       ? __kthread_bind_mask+0x60/0x60
       ret_from_fork+0x22/0x30
      Modules linked in:
      ---[ end trace a11715de1eee1873 ]---
    
    Fixes: d46a78b ("xen: implement pirq type event channels")
    Cc: [email protected]
    Co-debugged-by: Andrew Panyakin <[email protected]>
    Signed-off-by: Maximilian Heyne <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    heynemax authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9be71aa View commit details
    Browse the repository at this point in the history
  229. can: netlink: Fix TDCO calculation using the old data bittiming

    commit 2aa0a5e upstream.
    
    The TDCO calculation was done using the currently applied data bittiming,
    instead of the newly computed data bittiming, which means that the TDCO
    had an invalid value unless setting the same data bittiming twice.
    
    Fixes: d99755f ("can: netlink: add interface for CAN-FD Transmitter Delay Compensation (TDC)")
    Signed-off-by: Maxime Jayat <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Maxime Jayat authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c96c865 View commit details
    Browse the repository at this point in the history
  230. can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock

    commit 6cdedc1 upstream.
    
    The following 3 locks would race against each other, causing the
    deadlock situation in the Syzbot bug report:
    
    - j1939_socks_lock
    - active_session_list_lock
    - sk_session_queue_lock
    
    A reasonable fix is to change j1939_socks_lock to an rwlock, since in
    the rare situations where a write lock is required for the linked list
    that j1939_socks_lock is protecting, the code does not attempt to
    acquire any more locks. This would break the circular lock dependency,
    where, for example, the current thread already locks j1939_socks_lock
    and attempts to acquire sk_session_queue_lock, and at the same time,
    another thread attempts to acquire j1939_socks_lock while holding
    sk_session_queue_lock.
    
    NOTE: This patch along does not fix the unregister_netdevice bug
    reported by Syzbot; instead, it solves a deadlock situation to prepare
    for one or more further patches to actually fix the Syzbot bug, which
    appears to be a reference counting problem within the j1939 codebase.
    
    Reported-by: <[email protected]>
    Signed-off-by: Ziqi Zhao <[email protected]>
    Reviewed-by: Oleksij Rempel <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    [mkl: remove unrelated newline change]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    astrajoan authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    559b632 View commit details
    Browse the repository at this point in the history
  231. can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J19…

    …39_FILTER)
    
    commit efe7cf8 upstream.
    
    Lock jsk->sk to prevent UAF when setsockopt(..., SO_J1939_FILTER, ...)
    modifies jsk->filters while receiving packets.
    
    Following trace was seen on affected system:
     ==================================================================
     BUG: KASAN: slab-use-after-free in j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
     Read of size 4 at addr ffff888012144014 by task j1939/350
    
     CPU: 0 PID: 350 Comm: j1939 Tainted: G        W  OE      6.5.0-rc5 #1
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
     Call Trace:
      print_report+0xd3/0x620
      ? kasan_complete_mode_report_info+0x7d/0x200
      ? j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
      kasan_report+0xc2/0x100
      ? j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
      __asan_load4+0x84/0xb0
      j1939_sk_recv_match_one+0x1af/0x2d0 [can_j1939]
      j1939_sk_recv+0x20b/0x320 [can_j1939]
      ? __kasan_check_write+0x18/0x20
      ? __pfx_j1939_sk_recv+0x10/0x10 [can_j1939]
      ? j1939_simple_recv+0x69/0x280 [can_j1939]
      ? j1939_ac_recv+0x5e/0x310 [can_j1939]
      j1939_can_recv+0x43f/0x580 [can_j1939]
      ? __pfx_j1939_can_recv+0x10/0x10 [can_j1939]
      ? raw_rcv+0x42/0x3c0 [can_raw]
      ? __pfx_j1939_can_recv+0x10/0x10 [can_j1939]
      can_rcv_filter+0x11f/0x350 [can]
      can_receive+0x12f/0x190 [can]
      ? __pfx_can_rcv+0x10/0x10 [can]
      can_rcv+0xdd/0x130 [can]
      ? __pfx_can_rcv+0x10/0x10 [can]
      __netif_receive_skb_one_core+0x13d/0x150
      ? __pfx___netif_receive_skb_one_core+0x10/0x10
      ? __kasan_check_write+0x18/0x20
      ? _raw_spin_lock_irq+0x8c/0xe0
      __netif_receive_skb+0x23/0xb0
      process_backlog+0x107/0x260
      __napi_poll+0x69/0x310
      net_rx_action+0x2a1/0x580
      ? __pfx_net_rx_action+0x10/0x10
      ? __pfx__raw_spin_lock+0x10/0x10
      ? handle_irq_event+0x7d/0xa0
      __do_softirq+0xf3/0x3f8
      do_softirq+0x53/0x80
      </IRQ>
      <TASK>
      __local_bh_enable_ip+0x6e/0x70
      netif_rx+0x16b/0x180
      can_send+0x32b/0x520 [can]
      ? __pfx_can_send+0x10/0x10 [can]
      ? __check_object_size+0x299/0x410
      raw_sendmsg+0x572/0x6d0 [can_raw]
      ? __pfx_raw_sendmsg+0x10/0x10 [can_raw]
      ? apparmor_socket_sendmsg+0x2f/0x40
      ? __pfx_raw_sendmsg+0x10/0x10 [can_raw]
      sock_sendmsg+0xef/0x100
      sock_write_iter+0x162/0x220
      ? __pfx_sock_write_iter+0x10/0x10
      ? __rtnl_unlock+0x47/0x80
      ? security_file_permission+0x54/0x320
      vfs_write+0x6ba/0x750
      ? __pfx_vfs_write+0x10/0x10
      ? __fget_light+0x1ca/0x1f0
      ? __rcu_read_unlock+0x5b/0x280
      ksys_write+0x143/0x170
      ? __pfx_ksys_write+0x10/0x10
      ? __kasan_check_read+0x15/0x20
      ? fpregs_assert_state_consistent+0x62/0x70
      __x64_sys_write+0x47/0x60
      do_syscall_64+0x60/0x90
      ? do_syscall_64+0x6d/0x90
      ? irqentry_exit+0x3f/0x50
      ? exc_page_fault+0x79/0xf0
      entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
     Allocated by task 348:
      kasan_save_stack+0x2a/0x50
      kasan_set_track+0x29/0x40
      kasan_save_alloc_info+0x1f/0x30
      __kasan_kmalloc+0xb5/0xc0
      __kmalloc_node_track_caller+0x67/0x160
      j1939_sk_setsockopt+0x284/0x450 [can_j1939]
      __sys_setsockopt+0x15c/0x2f0
      __x64_sys_setsockopt+0x6b/0x80
      do_syscall_64+0x60/0x90
      entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
     Freed by task 349:
      kasan_save_stack+0x2a/0x50
      kasan_set_track+0x29/0x40
      kasan_save_free_info+0x2f/0x50
      __kasan_slab_free+0x12e/0x1c0
      __kmem_cache_free+0x1b9/0x380
      kfree+0x7a/0x120
      j1939_sk_setsockopt+0x3b2/0x450 [can_j1939]
      __sys_setsockopt+0x15c/0x2f0
      __x64_sys_setsockopt+0x6b/0x80
      do_syscall_64+0x60/0x90
      entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
    Fixes: 9d71dd0 ("can: add support of SAE J1939 protocol")
    Reported-by: Sili Luo <[email protected]>
    Suggested-by: Sili Luo <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Cc: [email protected]
    Signed-off-by: Oleksij Rempel <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    olerem authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    fc74b9c View commit details
    Browse the repository at this point in the history
  232. pmdomain: core: Move the unused cleanup to a _sync initcall

    commit 741ba01 upstream.
    
    The unused clock cleanup uses the _sync initcall to give all users at
    earlier initcalls time to probe. Do the same to avoid leaving some PDs
    dangling at "on" (which actually happened on qcom!).
    
    Fixes: 2fe71dc ("PM / domains: Add late_initcall to disable unused PM domains")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/20231227-topic-pmdomain_sync_cleanup-v1-1-5f36769d538b@linaro.org
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    konradybcio authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    a906476 View commit details
    Browse the repository at this point in the history
  233. fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside o…

    …f lock_task_sighand()
    
    commit 60f92ac upstream.
    
    Patch series "fs/proc: do_task_stat: use sig->stats_".
    
    do_task_stat() has the same problem as getrusage() had before "getrusage:
    use sig->stats_lock rather than lock_task_sighand()": a hard lockup.  If
    NR_CPUS threads call lock_task_sighand() at the same time and the process
    has NR_THREADS, spin_lock_irq will spin with irqs disabled O(NR_CPUS *
    NR_THREADS) time.
    
    
    This patch (of 3):
    
    thread_group_cputime() does its own locking, we can safely shift
    thread_group_cputime_adjusted() which does another for_each_thread loop
    outside of ->siglock protected section.
    
    Not only this removes for_each_thread() from the critical section with
    irqs disabled, this removes another case when stats_lock is taken with
    siglock held.  We want to remove this dependency, then we can change the
    users of stats_lock to not disable irqs.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Dylan Hatch <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    oleg-nesterov authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    70ac9bb View commit details
    Browse the repository at this point in the history
  234. fs/proc: do_task_stat: use sig->stats_lock to gather the threads/chil…

    …dren stats
    
    commit 7601df8 upstream.
    
    lock_task_sighand() can trigger a hard lockup.  If NR_CPUS threads call
    do_task_stat() at the same time and the process has NR_THREADS, it will
    spin with irqs disabled O(NR_CPUS * NR_THREADS) time.
    
    Change do_task_stat() to use sig->stats_lock to gather the statistics
    outside of ->siglock protected section, in the likely case this code will
    run lockless.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Dylan Hatch <[email protected]>
    Cc: Eric W. Biederman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    oleg-nesterov authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    2797824 View commit details
    Browse the repository at this point in the history
  235. tracing: Fix HAVE_DYNAMIC_FTRACE_WITH_REGS ifdef

    commit bdbddb1 upstream.
    
    Commit a8b9cf6 ("ftrace: Fix DIRECT_CALLS to use SAVE_REGS by
    default") attempted to fix an issue with direct trampolines on x86, see
    its description for details. However, it wrongly referenced the
    HAVE_DYNAMIC_FTRACE_WITH_REGS config option and the problem is still
    present.
    
    Add the missing "CONFIG_" prefix for the logic to work as intended.
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Fixes: a8b9cf6 ("ftrace: Fix DIRECT_CALLS to use SAVE_REGS by default")
    Signed-off-by: Petr Pavlu <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    petrpavlu authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    02faad5 View commit details
    Browse the repository at this point in the history
  236. tracing: Inform kmemleak of saved_cmdlines allocation

    commit 2394ac4 upstream.
    
    The allocation of the struct saved_cmdlines_buffer structure changed from:
    
            s = kmalloc(sizeof(*s), GFP_KERNEL);
    	s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
    
    to:
    
    	orig_size = sizeof(*s) + val * TASK_COMM_LEN;
    	order = get_order(orig_size);
    	size = 1 << (order + PAGE_SHIFT);
    	page = alloc_pages(GFP_KERNEL, order);
    	if (!page)
    		return NULL;
    
    	s = page_address(page);
    	memset(s, 0, sizeof(*s));
    
    	s->saved_cmdlines = kmalloc_array(TASK_COMM_LEN, val, GFP_KERNEL);
    
    Where that s->saved_cmdlines allocation looks to be a dangling allocation
    to kmemleak. That's because kmemleak only keeps track of kmalloc()
    allocations. For allocations that use page_alloc() directly, the kmemleak
    needs to be explicitly informed about it.
    
    Add kmemleak_alloc() and kmemleak_free() around the page allocation so
    that it doesn't give the following false positive:
    
    unreferenced object 0xffff8881010c8000 (size 32760):
      comm "swapper", pid 0, jiffies 4294667296
      hex dump (first 32 bytes):
        ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
        ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
      backtrace (crc ae6ec1b9):
        [<ffffffff86722405>] kmemleak_alloc+0x45/0x80
        [<ffffffff8414028d>] __kmalloc_large_node+0x10d/0x190
        [<ffffffff84146ab1>] __kmalloc+0x3b1/0x4c0
        [<ffffffff83ed7103>] allocate_cmdlines_buffer+0x113/0x230
        [<ffffffff88649c34>] tracer_alloc_buffers.isra.0+0x124/0x460
        [<ffffffff8864a174>] early_trace_init+0x14/0xa0
        [<ffffffff885dd5ae>] start_kernel+0x12e/0x3c0
        [<ffffffff885f5758>] x86_64_start_reservations+0x18/0x30
        [<ffffffff885f582b>] x86_64_start_kernel+0x7b/0x80
        [<ffffffff83a001c3>] secondary_startup_64_no_verify+0x15e/0x16b
    
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]/
    Link: https://lore.kernel.org/linux-trace-kernel/[email protected]
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Fixes: 44dc5c4 ("tracing: Fix wasted memory in saved_cmdlines logic")
    Reported-by: Kalle Valo <[email protected]>
    Tested-by: Kalle Valo <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    rostedt authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c87a92b View commit details
    Browse the repository at this point in the history
  237. md: bypass block throttle for superblock update

    [ Upstream commit d6e035a ]
    
    commit 5e2cf33 ("md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d")
    introduced a hung bug and will be reverted in next patch, since the issue
    that commit is fixing is due to md superblock write is throttled by wbt,
    to fix it, we can have superblock write bypass block layer throttle.
    
    Fixes: 5e2cf33 ("md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d")
    Cc: [email protected] # v5.19+
    Suggested-by: Yu Kuai <[email protected]>
    Signed-off-by: Junxiao Bi <[email protected]>
    Reviewed-by: Logan Gunthorpe <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Signed-off-by: Song Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    biger410 authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    099e62b View commit details
    Browse the repository at this point in the history
  238. block: fix partial zone append completion handling in req_bio_endio()

    [ Upstream commit 748dc0b ]
    
    Partial completions of zone append request is not allowed but if a zone
    append completion indicates a number of completed bytes different from
    the original BIO size, only the BIO status is set to error. This leads
    to bio_advance() not setting the BIO size to 0 and thus to not call
    bio_endio() at the end of req_bio_endio().
    
    Make sure a partially completed zone append is failed and completed
    immediately by forcing the completed number of bytes (nbytes) to be
    equal to the BIO size, thus ensuring that bio_endio() is called.
    
    Fixes: 297db73 ("block: fix req_bio_endio append error handling")
    Cc: [email protected]
    Signed-off-by: Damien Le Moal <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    damien-lemoal authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    669d3e5 View commit details
    Browse the repository at this point in the history
  239. usb: typec: tpcm: Fix issues with power being removed during reset

    commit 69f8916 upstream.
    
    Since the merge of b717dfb ("Revert "usb: typec: tcpm: fix
    cc role at port reset"") into mainline the LibreTech Renegade
    Elite/Firefly has died during boot, the main symptom observed in testing
    is a sudden stop in console output.  Gábor Stefanik identified in review
    that the patch would cause power to be removed from devices without
    batteries (like this board), observing that while the patch is correct
    according to the spec this appears to be an oversight in the spec.
    
    Given that the change makes previously working systems unusable let's
    revert it, there was some discussion of identifying systems that have
    alternative power and implementing the standards conforming behaviour in
    only that case.
    
    Fixes: b717dfb ("Revert "usb: typec: tcpm: fix cc role at port reset"")
    Cc: stable <[email protected]>
    Cc: Badhri Jagan Sridharan <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Acked-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    broonie authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    9b705ba View commit details
    Browse the repository at this point in the history
  240. netfilter: ipset: fix performance regression in swap operation

    commit 97f7cf1 upstream.
    
    The patch "netfilter: ipset: fix race condition between swap/destroy
    and kernel side add/del/test", commit 28628fa fixes a race condition.
    But the synchronize_rcu() added to the swap function unnecessarily slows
    it down: it can safely be moved to destroy and use call_rcu() instead.
    
    Eric Dumazet pointed out that simply calling the destroy functions as
    rcu callback does not work: sets with timeout use garbage collectors
    which need cancelling at destroy which can wait. Therefore the destroy
    functions are split into two: cancelling garbage collectors safely at
    executing the command received by netlink and moving the remaining
    part only into the rcu callback.
    
    Link: https://lore.kernel.org/lkml/[email protected]/
    Fixes: 28628fa ("netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test")
    Reported-by: Ale Crismani <[email protected]>
    Reported-by: David Wang <[email protected]>
    Tested-by: David Wang <[email protected]>
    Signed-off-by: Jozsef Kadlecsik <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jozsef Kadlecsik authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    970709a View commit details
    Browse the repository at this point in the history
  241. netfilter: ipset: Missing gc cancellations fixed

    commit 27c5a09 upstream.
    
    The patch fdb8e12cc2cc ("netfilter: ipset: fix performance regression
    in swap operation") missed to add the calls to gc cancellations
    at the error path of create operations and at module unload. Also,
    because the half of the destroy operations now executed by a
    function registered by call_rcu(), neither NFNL_SUBSYS_IPSET mutex
    or rcu read lock is held and therefore the checking of them results
    false warnings.
    
    Fixes: 97f7cf1 ("netfilter: ipset: fix performance regression in swap operation")
    Reported-by: [email protected]
    Reported-by: Brad Spengler <[email protected]>
    Reported-by: Стас Ничипорович <[email protected]>
    Tested-by: Brad Spengler <[email protected]>
    Tested-by: Стас Ничипорович <[email protected]>
    Signed-off-by: Jozsef Kadlecsik <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Jozsef Kadlecsik authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    46fe5e8 View commit details
    Browse the repository at this point in the history
  242. nfsd: don't take fi_lock in nfsd_break_deleg_cb()

    commit 5ea9a7c upstream.
    
    A recent change to check_for_locks() changed it to take ->flc_lock while
    holding ->fi_lock.  This creates a lock inversion (reported by lockdep)
    because there is a case where ->fi_lock is taken while holding
    ->flc_lock.
    
    ->flc_lock is held across ->fl_lmops callbacks, and
    nfsd_break_deleg_cb() is one of those and does take ->fi_lock.  However
    it doesn't need to.
    
    Prior to v4.17-rc1~110^2~22 ("nfsd: create a separate lease for each
    delegation") nfsd_break_deleg_cb() would walk the ->fi_delegations list
    and so needed the lock.  Since then it doesn't walk the list and doesn't
    need the lock.
    
    Two actions are performed under the lock.  One is to call
    nfsd_break_one_deleg which calls nfsd4_run_cb().  These doesn't act on
    the nfs4_file at all, so don't need the lock.
    
    The other is to set ->fi_had_conflict which is in the nfs4_file.
    This field is only ever set here (except when initialised to false)
    so there is no possible problem will multiple threads racing when
    setting it.
    
    The field is tested twice in nfs4_set_delegation().  The first test does
    not hold a lock and is documented as an opportunistic optimisation, so
    it doesn't impose any need to hold ->fi_lock while setting
    ->fi_had_conflict.
    
    The second test in nfs4_set_delegation() *is* make under ->fi_lock, so
    removing the locking when ->fi_had_conflict is set could make a change.
    The change could only be interesting if ->fi_had_conflict tested as
    false even though nfsd_break_one_deleg() ran before ->fi_lock was
    unlocked.  i.e. while hash_delegation_locked() was running.
    As hash_delegation_lock() doesn't interact in any way with nfs4_run_cb()
    there can be no importance to this interaction.
    
    So this patch removes the locking from nfsd_break_one_deleg() and moves
    the final test on ->fi_had_conflict out of the locked region to make it
    clear that locking isn't important to the test.  It is still tested
    *after* vfs_setlease() has succeeded.  This might be significant and as
    vfs_setlease() takes ->flc_lock, and nfsd_break_one_deleg() is called
    under ->flc_lock this "after" is a true ordering provided by a spinlock.
    
    Fixes: edcf972 ("nfsd: fix RELEASE_LOCKOWNER")
    Signed-off-by: NeilBrown <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    neilbrown authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    205b668 View commit details
    Browse the repository at this point in the history
  243. sched/membarrier: reduce the ability to hammer on sys_membarrier

    commit 944d5fe upstream.
    
    On some systems, sys_membarrier can be very expensive, causing overall
    slowdowns for everything.  So put a lock on the path in order to
    serialize the accesses to prevent the ability for this to be called at
    too high of a frequency and saturate the machine.
    
    Reviewed-and-tested-by: Mathieu Desnoyers <[email protected]>
    Acked-by: Borislav Petkov <[email protected]>
    Fixes: 22e4ebb ("membarrier: Provide expedited private command")
    Fixes: c5f58bd ("membarrier: Provide GLOBAL_EXPEDITED command")
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Linus Torvalds authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    c5b2063 View commit details
    Browse the repository at this point in the history
  244. of: property: Add in-ports/out-ports support to of_graph_get_port_par…

    …ent()
    
    commit 8f1e0d7 upstream.
    
    Similar to the existing "ports" node name, coresight device tree bindings
    have added "in-ports" and "out-ports" as standard node names for a
    collection of ports.
    
    Add support for these name to of_graph_get_port_parent() so that
    remote-endpoint parsing can find the correct parent node for these
    coresight ports too.
    
    Signed-off-by: Saravana Kannan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Saravana Kannan authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    77c5a27 View commit details
    Browse the repository at this point in the history
  245. nilfs2: fix potential bug in end_buffer_async_write

    commit 5bc09b3 upstream.
    
    According to a syzbot report, end_buffer_async_write(), which handles the
    completion of block device writes, may detect abnormal condition of the
    buffer async_write flag and cause a BUG_ON failure when using nilfs2.
    
    Nilfs2 itself does not use end_buffer_async_write().  But, the async_write
    flag is now used as a marker by commit 7f42ec3 ("nilfs2: fix issue
    with race condition of competition between segments for dirty blocks") as
    a means of resolving double list insertion of dirty blocks in
    nilfs_lookup_dirty_data_buffers() and nilfs_lookup_node_buffers() and the
    resulting crash.
    
    This modification is safe as long as it is used for file data and b-tree
    node blocks where the page caches are independent.  However, it was
    irrelevant and redundant to also introduce async_write for segment summary
    and super root blocks that share buffers with the backing device.  This
    led to the possibility that the BUG_ON check in end_buffer_async_write
    would fail as described above, if independent writebacks of the backing
    device occurred in parallel.
    
    The use of async_write for segment summary buffers has already been
    removed in a previous change.
    
    Fix this issue by removing the manipulation of the async_write flag for
    the remaining super root block buffer.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 7f42ec3 ("nilfs2: fix issue with race condition of competition between segments for dirty blocks")
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Reported-by: [email protected]
    Closes: https://lkml.kernel.org/r/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    konis authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    626daab View commit details
    Browse the repository at this point in the history
  246. dm: limit the number of targets and parameter size area

    commit bd504bc upstream.
    
    The kvmalloc function fails with a warning if the size is larger than
    INT_MAX. The warning was triggered by a syscall testing robot.
    
    In order to avoid the warning, this commit limits the number of targets to
    1048576 and the size of the parameter area to 1073741824.
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Mike Snitzer <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Mikulas Patocka authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    cd70175 View commit details
    Browse the repository at this point in the history
  247. x86/barrier: Do not serialize MSR accesses on AMD

    commit 04c3024 upstream.
    
    AMD does not have the requirement for a synchronization barrier when
    acccessing a certain group of MSRs. Do not incur that unnecessary
    penalty there.
    
    There will be a CPUID bit which explicitly states that a MFENCE is not
    needed. Once that bit is added to the APM, this will be extended with
    it.
    
    While at it, move to processor.h to avoid include hell. Untangling that
    file properly is a matter for another day.
    
    Some notes on the performance aspect of why this is relevant, courtesy
    of Kishon VijayAbraham <[email protected]>:
    
    On a AMD Zen4 system with 96 cores, a modified ipi-bench[1] on a VM
    shows x2AVIC IPI rate is 3% to 4% lower than AVIC IPI rate. The
    ipi-bench is modified so that the IPIs are sent between two vCPUs in the
    same CCX. This also requires to pin the vCPU to a physical core to
    prevent any latencies. This simulates the use case of pinning vCPUs to
    the thread of a single CCX to avoid interrupt IPI latency.
    
    In order to avoid run-to-run variance (for both x2AVIC and AVIC), the
    below configurations are done:
    
      1) Disable Power States in BIOS (to prevent the system from going to
         lower power state)
    
      2) Run the system at fixed frequency 2500MHz (to prevent the system
         from increasing the frequency when the load is more)
    
    With the above configuration:
    
    *) Performance measured using ipi-bench for AVIC:
      Average Latency:  1124.98ns [Time to send IPI from one vCPU to another vCPU]
    
      Cumulative throughput: 42.6759M/s [Total number of IPIs sent in a second from
      				     48 vCPUs simultaneously]
    
    *) Performance measured using ipi-bench for x2AVIC:
      Average Latency:  1172.42ns [Time to send IPI from one vCPU to another vCPU]
    
      Cumulative throughput: 40.9432M/s [Total number of IPIs sent in a second from
      				     48 vCPUs simultaneously]
    
    From above, x2AVIC latency is ~4% more than AVIC. However, the expectation is
    x2AVIC performance to be better or equivalent to AVIC. Upon analyzing
    the perf captures, it is observed significant time is spent in
    weak_wrmsr_fence() invoked by x2apic_send_IPI().
    
    With the fix to skip weak_wrmsr_fence()
    
    *) Performance measured using ipi-bench for x2AVIC:
      Average Latency:  1117.44ns [Time to send IPI from one vCPU to another vCPU]
    
      Cumulative throughput: 42.9608M/s [Total number of IPIs sent in a second from
      				     48 vCPUs simultaneously]
    
    Comparing the performance of x2AVIC with and without the fix, it can be seen
    the performance improves by ~4%.
    
    Performance captured using an unmodified ipi-bench using the 'mesh-ipi' option
    with and without weak_wrmsr_fence() on a Zen4 system also showed significant
    performance improvement without weak_wrmsr_fence(). The 'mesh-ipi' option ignores
    CCX or CCD and just picks random vCPU.
    
      Average throughput (10 iterations) with weak_wrmsr_fence(),
            Cumulative throughput: 4933374 IPI/s
    
      Average throughput (10 iterations) without weak_wrmsr_fence(),
            Cumulative throughput: 6355156 IPI/s
    
    [1] https://github.com/bytedance/kvm-utils/tree/master/microbenchmark/ipi-bench
    
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kishon Vijay Abraham I <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    bp3tk0v authored and gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    392c272 View commit details
    Browse the repository at this point in the history
  248. Linux 6.7.6

    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Luna Jernberg <[email protected]>
    Tested-by: SeongJae Park <[email protected]>
    Tested-by: Allen Pais <[email protected]>
    Tested-by: Bagas Sanjaya <[email protected]>
    Tested-by: Ricardo B. Marliere <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Luna Jernberg <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Allen Pais <[email protected]>
    Tested-by: Justin M. Forbes <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Bagas Sanjaya <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Nick Spooner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    gregkh committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    b631f5b View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2024

  1. Merge tag 'v6.7.6' into scx-6.7.6

    This is the 6.7.6 stable release
    Byte-Lab committed Feb 24, 2024
    Configuration menu
    Copy the full SHA
    2e99342 View commit details
    Browse the repository at this point in the history
  2. v6.7.6-scx1

    Signed-off-by: David Vernet <[email protected]>
    Byte-Lab committed Feb 24, 2024
    Configuration menu
    Copy the full SHA
    c6da8ae View commit details
    Browse the repository at this point in the history