1. 15 Jul, 2023 2 commits
    • Linus Torvalds's avatar
      Merge tag 'block-6.5-2023-07-14' of git://git.kernel.dk/linux · b3bd86a0
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request via Keith:
            - Don't require quirk to use duplicate namespace identifiers
              (Christoph, Sagi)
            - One more BOGUS_NID quirk (Pankaj)
            - IO timeout and error hanlding fixes for PCI (Keith)
            - Enhanced metadata format mask fix (Ankit)
            - Association race condition fix for fibre channel (Michael)
            - Correct debugfs error checks (Minjie)
            - Use PAGE_SECTORS_SHIFT where needed (Damien)
            - Reduce kernel logs for legacy nguid attribute (Keith)
            - Use correct dma direction when unmapping metadata (Ming)
      
       - Fix for a flush handling regression in this release (Christoph)
      
       - Fix for batched request time stamping (Chengming)
      
       - Fix for a regression in the mq-deadline position calculation (Bart)
      
       - Lockdep fix for blk-crypto (Eric)
      
       - Fix for a regression in the Amiga partition handling changes
         (Michael)
      
      * tag 'block-6.5-2023-07-14' of git://git.kernel.dk/linux:
        block: queue data commands from the flush state machine at the head
        blk-mq: fix start_time_ns and alloc_time_ns for pre-allocated rq
        nvme-pci: fix DMA direction of unmapping integrity data
        nvme: don't reject probe due to duplicate IDs for single-ported PCIe devices
        block/mq-deadline: Fix a bug in deadline_from_pos()
        nvme: ensure disabling pairs with unquiesce
        nvme-fc: fix race between error recovery and creating association
        nvme-fc: return non-zero status code when fails to create association
        nvme: fix parameter check in nvme_fault_inject_init()
        nvme: warn only once for legacy uuid attribute
        block: remove dead struc request->completion_data field
        nvme: fix the NVME_ID_NS_NVM_STS_MASK definition
        nvmet: use PAGE_SECTORS_SHIFT
        nvme: add BOGUS_NID quirk for Samsung SM953
        blk-crypto: use dynamic lock class for blk_crypto_profile::lock
        block/partition: fix signedness issue for Amiga partitions
      b3bd86a0
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.5-2023-07-14' of git://git.kernel.dk/linux · ec17f164
      Linus Torvalds authored
      Pull io_uring fix from Jens Axboe:
       "Just a single tweak for the wait logic in io_uring"
      
      * tag 'io_uring-6.5-2023-07-14' of git://git.kernel.dk/linux:
        io_uring: Use io_schedule* in cqring wait
      ec17f164
  2. 14 Jul, 2023 9 commits
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 2772d7df
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
      
       - fix a formatting error in the hwprobe documentation
      
       - fix a spurious warning in the RISC-V PMU driver
      
       - fix memory detection on rv32 (problem does not manifest on any known
         system)
      
       - avoid parsing legacy parsing of I in ACPI ISA strings
      
      * tag 'riscv-for-linus-6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        RISC-V: Don't include Zicsr or Zifencei in I from ACPI
        riscv: mm: fix truncation warning on RV32
        perf: RISC-V: Remove PERF_HES_STOPPED flag checking in riscv_pmu_start()
        Documentation: RISC-V: hwprobe: Fix a formatting error
      2772d7df
    • Linus Torvalds's avatar
      Merge tag 'pm-6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · bde7f150
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These fix hibernation (after recent changes), frequency QoS and the
        sparc cpufreq driver.
      
        Specifics:
      
         - Unbreak the /sys/power/resume interface after recent changes (Azat
           Khuzhin).
      
         - Allow PM_QOS_DEFAULT_VALUE to be used with frequency QoS (Chungkai
           Yang).
      
         - Remove __init from cpufreq callbacks in the sparc driver, because
           they may be called after initialization too (Viresh Kumar)"
      
      * tag 'pm-6.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq: sparc: Don't mark cpufreq callbacks with __init
        PM: QoS: Restore support for default value on frequency QoS
        PM: hibernate: Fix writing maj:min to /sys/power/resume
      bde7f150
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-sleep' and 'pm-qos' · d121758d
      Rafael J. Wysocki authored
      Merge a PM QoS fix and a hibernation fix for 6.5-rc2.
      
       - Unbreak the /sys/power/resume interface after recent changes (Azat
         Khuzhin).
      
       - Allow PM_QOS_DEFAULT_VALUE to be used with frequency QoS (Chungkai
         Yang).
      
      * pm-sleep:
        PM: hibernate: Fix writing maj:min to /sys/power/resume
      
      * pm-qos:
        PM: QoS: Restore support for default value on frequency QoS
      d121758d
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-07-14-1' of git://anongit.freedesktop.org/drm/drm · 3a97a299
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "There were a bunch of fixes lined up for 2 weeks, so we have quite a
        few scattered fixes, mostly amdgpu and i915, but ttm has a bunch and
        nouveau makes an appearance.
      
        So a bit busier than usual for rc2, but nothing seems out of the
        ordinary.
      
        fbdev:
         - dma: Fix documented default preferred_bpp value
      
        ttm:
         - fix warning that we shouldn't mix && and ||
         - never consider pinned BOs for eviction&swap
         - Don't leak a resource on eviction error
         - Don't leak a resource on swapout move error
         - fix bulk_move corruption when adding a entry
      
        client:
         - Send hotplug event after registering a client
      
        dma-buf:
         - keep the signaling time of merged fences v3
         - fix an error pointer vs NULL bug
      
        sched:
         - wait for all deps in kill jobs
         - call set fence parent from scheduled
      
        i915:
         - Don't preserve dpll_hw_state for slave crtc in Bigjoiner
         - Consider OA buffer boundary when zeroing out reports
         - Remove dead code from gen8_pte_encode
         - Fix one wrong caching mode enum usage
      
        amdgpu:
         - SMU i2c locking fix
         - Fix a possible deadlock in process restoration for ROCm apps
         - Disable PCIe lane/speed switching on Intel platforms (the platforms
           don't support it)
      
        nouveau:
         - disp: fix HDMI on gt215+
         - disp/g94: enable HDMI
         - acr: Abort loading ACR if no firmware was found
         - bring back blit subchannel for pre nv50 GPUs
         - Fix drm_dp_remove_payload() invocation
      
        ivpu:
         - Fix VPU register access in irq disable
         - Clear specific interrupt status bits on C0
      
        bridge:
         - dw_hdmi: fix connector access for scdc
         - ti-sn65dsi86: Fix auxiliary bus lifetime
      
        panel:
         - simple: Add connector_type for innolux_at043tn24
         - simple: Add Powertip PH800480T013 drm_display_mode flags"
      
      * tag 'drm-fixes-2023-07-14-1' of git://anongit.freedesktop.org/drm/drm: (32 commits)
        drm/nouveau: bring back blit subchannel for pre nv50 GPUs
        drm/nouveau/acr: Abort loading ACR if no firmware was found
        drm/amd: Align SMU11 SMU_MSG_OverridePcieParameters implementation with SMU13
        drm/amd: Move helper for dynamic speed switch check out of smu13
        drm/amd/pm: conditionally disable pcie lane/speed switching for SMU13
        drm/amd/pm: share the code around SMU13 pcie parameters update
        drm/amdgpu: avoid restore process run into dead loop.
        drm/amd/pm: fix smu i2c data read risk
        drm/nouveau/disp/g94: enable HDMI
        drm/nouveau/disp: fix HDMI on gt215+
        drm/client: Send hotplug event after registering a client
        drm/i915: Fix one wrong caching mode enum usage
        drm/i915: Remove dead code from gen8_pte_encode
        drm/i915/perf: Consider OA buffer boundary when zeroing out reports
        drm/i915: Don't preserve dpll_hw_state for slave crtc in Bigjoiner
        drm/ttm: never consider pinned BOs for eviction&swap
        drm/fbdev-dma: Fix documented default preferred_bpp value
        dma-buf: fix an error pointer vs NULL bug
        accel/ivpu: Clear specific interrupt status bits on C0
        accel/ivpu: Fix VPU register access in irq disable
        ...
      3a97a299
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-6.5-rc2' of https://github.com/ceph/ceph-client · ddbd9161
      Linus Torvalds authored
      Pull ceph fix from Ilya Dryomov:
       "A fix to prevent a potential buffer overrun in the messenger, marked
        for stable"
      
      * tag 'ceph-for-6.5-rc2' of https://github.com/ceph/ceph-client:
        libceph: harden msgr2.1 frame segment length checks
      ddbd9161
    • Christoph Hellwig's avatar
      block: queue data commands from the flush state machine at the head · 9f87fc4d
      Christoph Hellwig authored
      We used to insert the data commands following a pre-flush to the head
      of the queue until commit 1e82fadf ("blk-mq: do not do head insertions
      post-pre-flush commands").  Not doing this seems to cause hangs of
      such commands on NFS workloads when exported from file systems with
      SATA SSDs.  I have no idea why this would starve these workloads,
      but doing a semantic revert of this patch (which looks quite different
      due to various other changes) fixes the hangs.
      
      Fixes: 1e82fadf ("blk-mq: do not do head insertions post-pre-flush commands")
      Reported-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Tested-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Link: https://lore.kernel.org/r/20230714143014.11879-1-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      9f87fc4d
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-6.5-2023-07-12' of... · 38d88d5e
      Dave Airlie authored
      Merge tag 'amd-drm-fixes-6.5-2023-07-12' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
      
      amd-drm-fixes-6.5-2023-07-12:
      
      amdgpu:
      - SMU i2c locking fix
      - Fix a possible deadlock in process restoration for ROCm apps
      - Disable PCIe lane/speed switching on Intel platforms (the platforms don't support it)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Alex Deucher <alexander.deucher@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230712184009.7740-1-alexander.deucher@amd.com
      38d88d5e
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2023-07-13' of... · 864e029f
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2023-07-13' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Don't preserve dpll_hw_state for slave crtc in Bigjoiner (Stanislav Lisovskiy)
      - Consider OA buffer boundary when zeroing out reports [perf] (Umesh Nerlige Ramappa)
      - Remove dead code from gen8_pte_encode (Tvrtko Ursulin)
      - Fix one wrong caching mode enum usage (Tvrtko Ursulin)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZK+nHLCltaxoxVw/@tursulin-desk
      864e029f
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2023-07-13' of ssh://git.freedesktop.org/git/drm/drm-misc into drm-fixes · b7a57386
      Dave Airlie authored
      A couple of nouveau patches addressing improving HDMI support and
      firmware handling, a fix for TTM to skip pinned BO when evicting, and a
      fix for the fbdev documentation.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <mripard@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/nq3ke75juephbex5acfyi5t6bxv22nhmfcpfhru55haj2nv3us@gehrlmjbqgjk
      b7a57386
  3. 13 Jul, 2023 23 commits
  4. 12 Jul, 2023 6 commits
    • Jiawen Wu's avatar
      net: txgbe: fix eeprom calculation error · aa846677
      Jiawen Wu authored
      For some device types like TXGBE_ID_XAUI, *checksum computed in
      txgbe_calc_eeprom_checksum() is larger than TXGBE_EEPROM_SUM. Remove the
      limit on the size of *checksum.
      
      Fixes: 049fe536 ("net: txgbe: Add operations to interact with firmware")
      Fixes: 5e2ea780 ("net: txgbe: Fix unsigned comparison to zero in txgbe_calc_eeprom_checksum()")
      Signed-off-by: default avatarJiawen Wu <jiawenwu@trustnetic.com>
      Link: https://lore.kernel.org/r/20230711063414.3311-1-jiawenwu@trustnetic.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      aa846677
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of https://github.com/openrisc/linux · 0099852f
      Linus Torvalds authored
      Pull OpenRISC fix from Stafford Horne:
      
       - During the 6.4 cycle my fpu support work broke ABI compatibility in
         the sigcontext struct. This was noticed by musl libc developers after
         the release. This fix restores the ABI.
      
      * tag 'for-linus' of https://github.com/openrisc/linux:
        openrisc: Union fpcsr and oldmask in sigcontext to unbreak userspace ABI
      0099852f
    • Mohamed Khalfella's avatar
      tracing/histograms: Add histograms to hist_vars if they have referenced variables · 6018b585
      Mohamed Khalfella authored
      Hist triggers can have referenced variables without having direct
      variables fields. This can be the case if referenced variables are added
      for trigger actions. In this case the newly added references will not
      have field variables. Not taking such referenced variables into
      consideration can result in a bug where it would be possible to remove
      hist trigger with variables being refenced. This will result in a bug
      that is easily reproducable like so
      
      $ cd /sys/kernel/tracing
      $ echo 'synthetic_sys_enter char[] comm; long id' >> synthetic_events
      $ echo 'hist:keys=common_pid.execname,id.syscall:vals=hitcount:comm=common_pid.execname' >> events/raw_syscalls/sys_enter/trigger
      $ echo 'hist:keys=common_pid.execname,id.syscall:onmatch(raw_syscalls.sys_enter).synthetic_sys_enter($comm, id)' >> events/raw_syscalls/sys_enter/trigger
      $ echo '!hist:keys=common_pid.execname,id.syscall:vals=hitcount:comm=common_pid.execname' >> events/raw_syscalls/sys_enter/trigger
      
      [  100.263533] ==================================================================
      [  100.264634] BUG: KASAN: slab-use-after-free in resolve_var_refs+0xc7/0x180
      [  100.265520] Read of size 8 at addr ffff88810375d0f0 by task bash/439
      [  100.266320]
      [  100.266533] CPU: 2 PID: 439 Comm: bash Not tainted 6.5.0-rc1 #4
      [  100.267277] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.0-20220807_005459-localhost 04/01/2014
      [  100.268561] Call Trace:
      [  100.268902]  <TASK>
      [  100.269189]  dump_stack_lvl+0x4c/0x70
      [  100.269680]  print_report+0xc5/0x600
      [  100.270165]  ? resolve_var_refs+0xc7/0x180
      [  100.270697]  ? kasan_complete_mode_report_info+0x80/0x1f0
      [  100.271389]  ? resolve_var_refs+0xc7/0x180
      [  100.271913]  kasan_report+0xbd/0x100
      [  100.272380]  ? resolve_var_refs+0xc7/0x180
      [  100.272920]  __asan_load8+0x71/0xa0
      [  100.273377]  resolve_var_refs+0xc7/0x180
      [  100.273888]  event_hist_trigger+0x749/0x860
      [  100.274505]  ? kasan_save_stack+0x2a/0x50
      [  100.275024]  ? kasan_set_track+0x29/0x40
      [  100.275536]  ? __pfx_event_hist_trigger+0x10/0x10
      [  100.276138]  ? ksys_write+0xd1/0x170
      [  100.276607]  ? do_syscall_64+0x3c/0x90
      [  100.277099]  ? entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      [  100.277771]  ? destroy_hist_data+0x446/0x470
      [  100.278324]  ? event_hist_trigger_parse+0xa6c/0x3860
      [  100.278962]  ? __pfx_event_hist_trigger_parse+0x10/0x10
      [  100.279627]  ? __kasan_check_write+0x18/0x20
      [  100.280177]  ? mutex_unlock+0x85/0xd0
      [  100.280660]  ? __pfx_mutex_unlock+0x10/0x10
      [  100.281200]  ? kfree+0x7b/0x120
      [  100.281619]  ? ____kasan_slab_free+0x15d/0x1d0
      [  100.282197]  ? event_trigger_write+0xac/0x100
      [  100.282764]  ? __kasan_slab_free+0x16/0x20
      [  100.283293]  ? __kmem_cache_free+0x153/0x2f0
      [  100.283844]  ? sched_mm_cid_remote_clear+0xb1/0x250
      [  100.284550]  ? __pfx_sched_mm_cid_remote_clear+0x10/0x10
      [  100.285221]  ? event_trigger_write+0xbc/0x100
      [  100.285781]  ? __kasan_check_read+0x15/0x20
      [  100.286321]  ? __bitmap_weight+0x66/0xa0
      [  100.286833]  ? _find_next_bit+0x46/0xe0
      [  100.287334]  ? task_mm_cid_work+0x37f/0x450
      [  100.287872]  event_triggers_call+0x84/0x150
      [  100.288408]  trace_event_buffer_commit+0x339/0x430
      [  100.289073]  ? ring_buffer_event_data+0x3f/0x60
      [  100.292189]  trace_event_raw_event_sys_enter+0x8b/0xe0
      [  100.295434]  syscall_trace_enter.constprop.0+0x18f/0x1b0
      [  100.298653]  syscall_enter_from_user_mode+0x32/0x40
      [  100.301808]  do_syscall_64+0x1a/0x90
      [  100.304748]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
      [  100.307775] RIP: 0033:0x7f686c75c1cb
      [  100.310617] Code: 73 01 c3 48 8b 0d 65 3c 10 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 b8 21 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 35 3c 10 00 f7 d8 64 89 01 48
      [  100.317847] RSP: 002b:00007ffc60137a38 EFLAGS: 00000246 ORIG_RAX: 0000000000000021
      [  100.321200] RAX: ffffffffffffffda RBX: 000055f566469ea0 RCX: 00007f686c75c1cb
      [  100.324631] RDX: 0000000000000001 RSI: 0000000000000001 RDI: 000000000000000a
      [  100.328104] RBP: 00007ffc60137ac0 R08: 00007f686c818460 R09: 000000000000000a
      [  100.331509] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000009
      [  100.334992] R13: 0000000000000007 R14: 000000000000000a R15: 0000000000000007
      [  100.338381]  </TASK>
      
      We hit the bug because when second hist trigger has was created
      has_hist_vars() returned false because hist trigger did not have
      variables. As a result of that save_hist_vars() was not called to add
      the trigger to trace_array->hist_vars. Later on when we attempted to
      remove the first histogram find_any_var_ref() failed to detect it is
      being used because it did not find the second trigger in hist_vars list.
      
      With this change we wait until trigger actions are created so we can take
      into consideration if hist trigger has variable references. Also, now we
      check the return value of save_hist_vars() and fail trigger creation if
      save_hist_vars() fails.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230712223021.636335-1-mkhalfella@purestorage.com
      
      Cc: stable@vger.kernel.org
      Fixes: 067fe038 ("tracing: Add variable reference handling to hist triggers")
      Signed-off-by: default avatarMohamed Khalfella <mkhalfella@purestorage.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      6018b585
    • Pedro Tammela's avatar
      net/sched: make psched_mtu() RTNL-less safe · 150e33e6
      Pedro Tammela authored
      Eric Dumazet says[1]:
      -------
      Speaking of psched_mtu(), I see that net/sched/sch_pie.c is using it
      without holding RTNL, so dev->mtu can be changed underneath.
      KCSAN could issue a warning.
      -------
      
      Annotate dev->mtu with READ_ONCE() so KCSAN don't issue a warning.
      
      [1] https://lore.kernel.org/all/CANn89iJoJO5VtaJ-2=_d2aOQhb0Xw8iBT_Cxqp2HyuS-zj6azw@mail.gmail.com/
      
      v1 -> v2: Fix commit message
      
      Fixes: d4b36210 ("net: pkt_sched: PIE AQM scheme")
      Suggested-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarPedro Tammela <pctammela@mojatatu.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Link: https://lore.kernel.org/r/20230711021634.561598-1-pctammela@mojatatu.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      150e33e6
    • Krister Johansen's avatar
      net: ena: fix shift-out-of-bounds in exponential backoff · 1e9cb763
      Krister Johansen authored
      The ENA adapters on our instances occasionally reset.  Once recently
      logged a UBSAN failure to console in the process:
      
        UBSAN: shift-out-of-bounds in build/linux/drivers/net/ethernet/amazon/ena/ena_com.c:540:13
        shift exponent 32 is too large for 32-bit type 'unsigned int'
        CPU: 28 PID: 70012 Comm: kworker/u72:2 Kdump: loaded not tainted 5.15.117
        Hardware name: Amazon EC2 c5d.9xlarge/, BIOS 1.0 10/16/2017
        Workqueue: ena ena_fw_reset_device [ena]
        Call Trace:
        <TASK>
        dump_stack_lvl+0x4a/0x63
        dump_stack+0x10/0x16
        ubsan_epilogue+0x9/0x36
        __ubsan_handle_shift_out_of_bounds.cold+0x61/0x10e
        ? __const_udelay+0x43/0x50
        ena_delay_exponential_backoff_us.cold+0x16/0x1e [ena]
        wait_for_reset_state+0x54/0xa0 [ena]
        ena_com_dev_reset+0xc8/0x110 [ena]
        ena_down+0x3fe/0x480 [ena]
        ena_destroy_device+0xeb/0xf0 [ena]
        ena_fw_reset_device+0x30/0x50 [ena]
        process_one_work+0x22b/0x3d0
        worker_thread+0x4d/0x3f0
        ? process_one_work+0x3d0/0x3d0
        kthread+0x12a/0x150
        ? set_kthread_struct+0x50/0x50
        ret_from_fork+0x22/0x30
        </TASK>
      
      Apparently, the reset delays are getting so large they can trigger a
      UBSAN panic.
      
      Looking at the code, the current timeout is capped at 5000us.  Using a
      base value of 100us, the current code will overflow after (1<<29).  Even
      at values before 32, this function wraps around, perhaps
      unintentionally.
      
      Cap the value of the exponent used for this backoff at (1<<16) which is
      larger than currently necessary, but large enough to support bigger
      values in the future.
      
      Cc: stable@vger.kernel.org
      Fixes: 4bb7f4cf ("net: ena: reduce driver load time")
      Signed-off-by: default avatarKrister Johansen <kjlx@templeofstupid.com>
      Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
      Reviewed-by: default avatarShay Agroskin <shayagr@amazon.com>
      Link: https://lore.kernel.org/r/20230711013621.GE1926@templeofstupid.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      1e9cb763
    • Steven Rostedt (Google)'s avatar
      tracing: Stop FORTIFY_SOURCE complaining about stack trace caller · bec3c25c
      Steven Rostedt (Google) authored
      The stack_trace event is an event created by the tracing subsystem to
      store stack traces. It originally just contained a hard coded array of 8
      words to hold the stack, and a "size" to know how many entries are there.
      This is exported to user space as:
      
      name: kernel_stack
      ID: 4
      format:
      	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
      	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
      	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
      	field:int common_pid;	offset:4;	size:4;	signed:1;
      
      	field:int size;	offset:8;	size:4;	signed:1;
      	field:unsigned long caller[8];	offset:16;	size:64;	signed:0;
      
      print fmt: "\t=> %ps\n\t=> %ps\n\t=> %ps\n" "\t=> %ps\n\t=> %ps\n\t=> %ps\n" "\t=> %ps\n\t=> %ps\n",i
       (void *)REC->caller[0], (void *)REC->caller[1], (void *)REC->caller[2],
       (void *)REC->caller[3], (void *)REC->caller[4], (void *)REC->caller[5],
       (void *)REC->caller[6], (void *)REC->caller[7]
      
      Where the user space tracers could parse the stack. The library was
      updated for this specific event to only look at the size, and not the
      array. But some older users still look at the array (note, the older code
      still checks to make sure the array fits inside the event that it read.
      That is, if only 4 words were saved, the parser would not read the fifth
      word because it will see that it was outside of the event size).
      
      This event was changed a while ago to be more dynamic, and would save a
      full stack even if it was greater than 8 words. It does this by simply
      allocating more ring buffer to hold the extra words. Then it copies in the
      stack via:
      
      	memcpy(&entry->caller, fstack->calls, size);
      
      As the entry is struct stack_entry, that is created by a macro to both
      create the structure and export this to user space, it still had the caller
      field of entry defined as: unsigned long caller[8].
      
      When the stack is greater than 8, the FORTIFY_SOURCE code notices that the
      amount being copied is greater than the source array and complains about
      it. It has no idea that the source is pointing to the ring buffer with the
      required allocation.
      
      To hide this from the FORTIFY_SOURCE logic, pointer arithmetic is used:
      
      	ptr = ring_buffer_event_data(event);
      	entry = ptr;
      	ptr += offsetof(typeof(*entry), caller);
      	memcpy(ptr, fstack->calls, size);
      
      Link: https://lore.kernel.org/all/20230612160748.4082850-1-svens@linux.ibm.com/
      Link: https://lore.kernel.org/linux-trace-kernel/20230712105235.5fc441aa@gandalf.local.home
      
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Reported-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Tested-by: default avatarSven Schnelle <svens@linux.ibm.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      bec3c25c