Compare commits

...

85 Commits

Author SHA1 Message Date
Steve Sakoman
04b39e5b7e build-appliance-image: Update to kirkstone head revision
(From OE-Core rev: 99204008786f659ab03538cd2ae2fd23ed4164c5)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:32:40 -07:00
Steve Sakoman
8d5cd4a310 poky.conf: bump version for 4.0.31
(From meta-yocto rev: 3b2df00345b46479237fe0218675a818249f891c)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:29:24 -07:00
Antonin Godard
59579acac7 ref-manual/classes.rst: document the relative_symlinks class
Added by commit e478550c8cd8 ("openssl/fontconfig/bzip2: Use relative
symlinks instead of absolute ones (using a new class)") in OE-Core.

(From yocto-docs rev: 073f3bca4c374b03398317e7f445d2440a287741)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c0dc554eba7d421023ecc68a70b7a19df38628b0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
56aa9e3241 ref-manual/classes.rst: gettext: extend the documentation of the class
Mention the use of USE_NLS, INHIBIT_DEFAULT_DEPS and the cross-canadian
class.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 0bbb3eb02881b6ba41d3e77a21345e3520bbedea)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit d877e54f1c85cefc00dd674d60f2db81446bd95a)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
ea90d0a5b1 ref-manual/variables.rst: document the USE_NLS variable
Part of bitbake.conf, this variable allowing to enable or disable
translation was undocumented. Add a entry to the glossary.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 380018c93b0aa4832985bf083620fabee96dda72)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 92a55345a56b5038c0344669daaa7a3a99dd0fc0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
9e1c28514a ref-manual/variables.rst: document the REQUIRED_IMAGE_FEATURES variable
Added by commit 96a9702a24a7 ("distro_features_check: expand with
IMAGE_FEATURES") in OE-Core.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 7aeeefafb27fd1eae4388d6445a28951f4d79a02)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 860ddbd491ee9db291868bd939392538a2c64a4b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
24772dd301 ref-manual/variables.rst: document the REQUIRED_COMBINED_FEATURES variable
Added in OE-Core commit: 5f4875b950ce ("distro_features_check: expand
with MACHINE_FEATURES and COMBINED_FEATURES, rename").

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: db007c4b59514d0fa4fb63c8d6c2543e5d54e38f)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit bbc7f26240c2db5cd4179f297ae49c778789514e)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
5f0dcc1dc6 ref-manual/variables.rst: document the REQUIRED_MACHINE_FEATURES variable
Added in OE-Core commit: 5f4875b950ce ("distro_features_check: expand
with MACHINE_FEATURES and COMBINED_FEATURES, rename").

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 02d5f9664a71a4f1b72b28d7093c19cc03ec08f6)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c0551456cba6016d5014c2be8d6906e58a324cc4)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
8d8972d1b4 ref-manual/classes,variables: document the CCACHE_DISABLE variable
Can be used in recipes that want to explicitly skip Ccache support when
the ccache class is enabled.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: cc6e7a2d80ca03ee49a94af2eda74e83b1a33552)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b1b4adc8d4d9d23ff6fd91bca632bb0f5277e72b)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
João Marcos Costa
9626809dce variables.rst: fix LAYERDEPENDS description
This variable does not apply to the scope of a single recipe, but rather
to the scope of the entire layer.

(From yocto-docs rev: 7ff462805eb45bd29e361017dfb5041cce448e4d)

Signed-off-by: João Marcos Costa <joaomarcos.costa@bootlin.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit eec26e11adb6e3a9c4f53f825b9a1730c9ddee12)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Paul Barker
3fe029171f dev-manual, test-manual: Update autobuilder output links
The current autobuilder cluster is at valkyrie.yocto.io, published files
on autobuilder.yocto.io will be missing or out-of-date.

(From yocto-docs rev: 5cccf2e65b85c52cb9b9fd22d46ebde6d624fbe5)

Signed-off-by: Paul Barker <paul@pbarker.dev>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 9ed06c070e309b52f1dbf8877867dcede79f4cb6)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
9a4c708aa5 ref-manual/classes.rst: extend the uninative class documentation
Extend the documentation of the uninative class based on [1].

[1]: https://lore.kernel.org/r/061e6150ce177221f7b6ee8754b03a20347a92c3.camel@linuxfoundation.org

Co-developed-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(From yocto-docs rev: 7efaf626a9313cd0835391c06d3e3af6bdbd0d71)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 68996f0f3bf882714e8d96a0aa7b2492fe16d0c3)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Antonin Godard
2442316a1e ref-manual/variables.rst: document UNINATIVE_URL/CHECKSUM
Document the UNINATIVE_URL and UNINATIVE_CHECKSUM variables.

(From yocto-docs rev: e94c46499255f087ccb43c5fa45bf7a3f51b12c6)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 974fe4e1c5db65b462a382e089e016326e7b3f26)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Peter Marko
48ab50b55c lz4: patch CVE-2025-62813
Pick commit mentioned in NVD report.

(From OE-Core rev: 612d09f6b9e262640ed3ee0ee81ac4b6d7c29f4d)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Hitendra Prajapati
bee2fe9cc5 git: fix CVE-2025-48386
Upstream-Status: Backport from 9de345cb27

(From OE-Core rev: 3f2fce1ababbf6c94a9e4995d133d5338913b2ce)

Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Yash Shinde
d0f445a1e2 binutils: fix CVE-2025-8225
CVE: CVE-2025-8225

It is possible with fuzzed files to have num_debug_info_entries zero
after allocating space for debug_information, leading to multiple
allocations.

* dwarf.c (process_debug_info): Don't test num_debug_info_entries
to determine whether debug_information has been allocated,
test alloc_num_debug_info_entries.

Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4]

(From OE-Core rev: 9b5bb098b542a43a7aa97cc376c358f0a38778e3)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Yash Shinde
0118bd1e10 binutils: fix CVE-2025-11081
CVE: CVE-2025-11081

Trying to dump .sframe in a PE file results in a segfault accessing
elf_section_data.

	* objdump (dump_sframe_section, dump_dwarf_section): Don't access
	elf_section_type without first checking the file is ELF.

PR 33406 SEGV in dump_dwarf_section
[https://sourceware.org/bugzilla/show_bug.cgi?id=33406]

Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f87a66db645caf8cc0e6fc87b0c28c78a38af59b]

(From OE-Core rev: a7d39d40ec867bbcc36d71cf98858a34c619c9fe)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-31 06:23:13 -07:00
Peter Marko
7ca21c761a python3: upgrade 3.10.18 -> 3.10.19
Drop upstreamed patch and refresh remaining patches.

Release information:
* https://www.python.org/downloads/release/python-31019/
* The release you're looking at is Python 3.10.19, a security bugfix
  release for the legacy 3.10 series.

Handles CVE-2025-59375, CVE-2025-47273 and CVE-2024-6345.

(From OE-Core rev: 9b3dbd691f6ebdbdfe88cef3d3a676ddd1399c63)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
4e75dd0f5f linux-yocto/5.15: update to v5.15.194
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    29e53a5b1c4f1 Linux 5.15.194
    1c532dd246bf2 drm/i915/backlight: Return immediately when scale() finds invalid parameters
    45a7527cd7da4 i40e: add validation for ring_len param
    8043ca4882e77 i40e: increase max descriptors for XL710
    1fa0aadade344 i40e: fix idx validation in config queues msg
    8e35c80f85704 i40e: fix validation of VF state in get resources
    3e851448078f5 mm/hugetlb: fix folio is still mapped when deleted
    4f52f7c50f5b6 mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()
    523edfed4f68b af_unix: Don't leave consecutive consumed OOB skbs.
    ecbfd9ef5cf3e fbcon: Fix OOB access in font allocation
    b8a6e85328aeb fbcon: fix integer overflow in fbcon_do_set_font
    0d41604d2d53c tracing: dynevent: Add a missing lockdown check on dynevent
    1b1c3bdb8ab3f i40e: add mask to apply valid bits for itr_idx
    77a35be582dff i40e: add max boundary check for VF filters
    f8c8e11825b24 i40e: fix input validation logic for action_meta
    34dfac0c90482 i40e: fix idx validation in i40e_validate_queue_map
    d382d6daf0184 crypto: af_alg - Fix incorrect boolean values in af_alg_ctx
    e4c1ec11132ec crypto: af_alg - Disallow concurrent writes in af_alg_sendmsg
    e15de80737d44 drm/gma500: Fix null dereference in hdmi teardown
    37821b843e4e5 net: dsa: lantiq_gswip: suppress -EINVAL errors for bridge FDB entries added to the CPU port
    e8687ab9c8a11 net: dsa: lantiq_gswip: move gswip_add_single_port_br() call to port_setup()
    b9010dba5f36b net: dsa: lantiq_gswip: do also enable or disable cpu port
    cf2d597fb6f04 selftests: fib_nexthops: Fix creation of non-FDB nexthops
    0e7bfe7a268cc nexthop: Forbid FDB status change while nexthop is in a group
    5d4856a3717d6 bnxt_en: correct offset handling for IPv6 destination address
    d646358255b69 ethernet: rvu-af: Remove slash from the driver name
    48822a59ecc47 can: peak_usb: fix shift-out-of-bounds issue
    6eec67bfb2563 can: mcba_usb: populate ndo_change_mtu() to prevent buffer overflow
    60463a1c13890 can: sun4i_can: populate ndo_change_mtu() to prevent buffer overflow
    7ab85762274c0 can: hi311x: populate ndo_change_mtu() to prevent buffer overflow
    72de0facc50af can: etas_es58x: populate ndo_change_mtu() to prevent buffer overflow
    256b64f7a9ba0 can: etas_es58x: sort the includes by alphabetic order
    f44124f407a39 can: etas_es58x: advertise timestamping capabilities and add ioctl support
    0a6e1bd2d2500 can: dev: add generic function can_eth_ioctl_hwts()
    b9a0e6f3b043a can: dev: add generic function can_ethtool_op_get_ts_info_hwts()
    533e3220bac26 can: bittiming: replace CAN units with the generic ones from linux/units.h
    33b83a90b65e4 can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min
    d51c6b51981fa bpf: Reject bpf_timer for PREEMPT_RT
    9ebf862184569 can: rcar_can: rcar_can_resume(): fix s2ram with PSCI
    b32c64db4370c cpufreq: Initialize cpufreq-based invariance before subsys
    db28f975ed7f3 arm64: dts: imx8mp: Correct thermal sensor index
    bb3eeb3a7c749 IB/mlx5: Fix obj_type mismatch for SRQ event subscriptions
    825c17c54cfb2 usb: core: Add 0x prefix to quirks debug output
    9ba349a33f50e ALSA: usb-audio: Fix build with CONFIG_INPUT=n
    1746e7a74ca0b ALSA: usb-audio: Convert comma to semicolon
    b4b94f092f193 ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5
    4f9294613bb39 ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks
    790b167e58570 ALSA: usb-audio: Simplify NULL comparison in mixer_quirks
    e4f6ae98ebd94 ALSA: usb-audio: Avoid multiple assignments in mixer_quirks
    a4bb77c1bab94 ALSA: usb-audio: Drop unnecessary parentheses in mixer_quirks
    2f56442a417d5 ALSA: usb-audio: Fix block comments in mixer_quirks
    ada2282259243 net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer
    98c2894580f42 net: rfkill: gpio: add DT support
    2f58e6d3e7a71 mptcp: propagate shutdown to subflows when possible
    773fddf976d28 ksmbd: smbdirect: validate data_offset and data_length field of smb_direct_data_transfer
    dde28a51b8c3a mptcp: set remote_deny_join_id0 on SYN recv
    ca9e4e6a87376 phy: ti: omap-usb2: fix device leak at unbind
    f5648527d2e88 phy: Use device_get_match_data()
    0df0f4bcc7a25 phy: broadcom: ns-usb3: fix Wvoid-pointer-to-enum-cast warning
    662b75f7d1bfb USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels
    94fac8987bea7 usb: gadget: dummy_hcd: remove usage of list iterator past the loop body
    dbf216ae5aea8 xhci: dbc: Fix full DbC transfer ring after several reconnects
    503ba5026801b xhci: dbc: decouple endpoint allocation from initialization
    84870a62c48f7 serial: sc16is7xx: fix bug in flow control levels init
    dfca6fa9d174c drm: bridge: cdns-mhdp8546: Fix missing mutex unlock on error path
    51a501e990a35 drm: bridge: anx7625: Fix NULL pointer dereference with early IRQ
    79a06d96e73e4 ASoC: SOF: Intel: hda-stream: Fix incorrect variable used in error message
    e07847f44a0e0 ASoC: wm8974: Correct PLL rate rounding
    0235a5787e87b ASoC: wm8940: Correct typo in control name
    2e94bc6451cb6 rds: ib: Increment i_fastreg_wrs before bailing out
    9697890763328 KVM: SVM: Sync TPR from LAPIC into VMCB::V_TPR even if AVIC is active
    8a29726633978 mmc: mvsdio: Fix dma_unmap_sg() nents value
    4f935a1297080 btrfs: tree-checker: fix the incorrect inode ref size check
    29d9125d6c07f power: supply: bq27xxx: restrict no-battery detection to bq27000
    fe0f602a75cc9 power: supply: bq27xxx: fix error return in case of no bq27000 hdq battery
    40fb833c64cab nilfs2: fix CFI failure when accessing /sys/fs/nilfs2/features/*
    0405055930264 cnic: Fix use-after-free bugs in cnic_delete_task
    428c1dd78ef66 net: liquidio: fix overflow in octeon_init_instr_queue()
    3cae94808b2ff Revert "net/mlx5e: Update and set Xon/Xoff upon port speed set"
    33a4fdf0b4a25 tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect().
    17cb9b4017be7 i40e: remove redundant memory barrier when cleaning Tx descs
    95235d29cd8b0 net: natsemi: fix `rx_dropped` double accounting on `netif_rx()` failure
    e0e24571a7b2f qed: Don't collect too many protection override GRC elements
    e4343d400761c dpaa2-switch: fix buffer pool seeding for control traffic
    5e94e44c9cb30 um: virtio_uml: Fix use-after-free after put_device in probe
    f2795d1b92506 cgroup: split cgroup_destroy_wq into 3 workqueues
    f2ede1f9070cc pcmcia: omap_cf: Mark driver struct with __refdata to prevent section mismatch
    0f9cf94656d08 wifi: mac80211: fix incorrect type for ret
    d2587970f0887 ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported
    5f2f50aa44de7 net: hsr: hsr_slave: Fix the promiscuous mode in offload mode
    99f7048957f5a mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory
    a8b0032687c74 drm/i915/power: fix size for for_each_set_bit() in abox iteration
    f1b349706538c drm/amdgpu: fix a memory leak in fence cleanup when unloading
    91b2c8ee68219 soc: qcom: mdt_loader: Deal with zero e_shentsize
    e3d490ff8d12e phy: ti-pipe3: fix device leak at unbind
    4de4344ed4164 phy: tegra: xusb: fix device and OF node leak at probe
    6ac1599d0e780 dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees
    24a65b46cd663 hrtimers: Unconditionally update target CPU base after offline timer migration
    e90b685c5f2a8 hrtimer: Rename __hrtimer_hres_active() to hrtimer_hres_active()
    95b76ebeb0f14 hrtimer: Remove unused function
    5d5385feef357 regulator: sy7636a: fix lifecycle of power good gpio
    301a96cc4dc00 dmaengine: ti: edma: Fix memory allocation size for queue_priority_map
    810167fa6f34a hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr
    cedfcd09a338e hsr: use rtnl lock when iterating over ports
    1100242709d56 net: hsr: Add VLAN CTAG filter support
    7e0ef989aa6d4 net: hsr: Add support for MC filtering at the slave device
    d981b9680be2b net: hsr: Disable promiscuous mode in offload mode
    e202ffd9e5453 can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB
    5cf37a6fcb61c can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails
    3245eb9c25e94 can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed
    b9721a023df38 i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path
    7d9bd1c2bf4a7 i40e: Use irq_update_affinity_hint()
    e7ddb59a63cb8 genirq: Provide new interfaces for affinity hints
    582f5ce29adce igb: fix link test skipping when interface is admin down
    f39a12660ea88 tunnels: reset the GSO metadata before reusing the skb
    93a699d6e92cf net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable()
    e818c35296a4f USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions
    93e4404990206 USB: serial: option: add Telit Cinterion FN990A w/audio compositions
    28d20ff4e3886 dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks
    d91604c39b74c tty: hvc_console: Call hvc_kick in hvc_write unconditionally
    9cf2429fe6cbb Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table
    e32a2ea52b513 mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer
    6e2859c6aa466 mtd: rawnand: stm32_fmc2: Fix dma_map_sg error check
    e0bca4dd48fc5 mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing
    c3f1ea856e147 mtd: nand: raw: atmel: Fix comment in timings preparation
    123e31a54d51b mm/khugepaged: fix the address passed to notifier on testing young
    ea12ab684f8ae libceph: fix invalid accesses to ceph_connection_v1_info
    1e1bcbc548777 fuse: prevent overflow in copy_file_range return value
    5d41589fa0699 fuse: check if copy_file_range() returns larger than requested size
    b8af2e74e49db mtd: rawnand: stm32_fmc2: fix ECC overwrite
    ef30404980e4c ocfs2: fix recursive semaphore deadlock in fiemap call
    23092f6723bc1 mptcp: sockopt: make sync_socket_options propagate SOCK_KEEPOPEN
    5d7267abcd65e compiler-clang.h: define __SANITIZE_*__ macros only when undefined
    8178ccf5671e6 EDAC/altera: Delete an inappropriate dma_free_coherent() call
    34b87ac4bb903 KVM: SVM: Set synthesized TSA CPUID flags
    54270c1b29f2a KVM: SVM: Return TSA_SQ_NO and TSA_L1_NO bits in __do_cpuid_func()
    2fab1e2af6c59 KVM: x86: Move open-coded CPUID leaf 0x80000021 EAX bit propagation code
    7429b8b9bfbc2 tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork.
    5f756d1866ebb NFSv4/flexfiles: Fix layout merge mirror check.
    9a38cd92493c2 tracing: Fix tracing_marker may trigger page fault during preempt_disable
    c10744fd7fec8 NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server
    89f40500c09aa NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set
    91902607106c0 NFSv4: Don't clear capabilities that won't be reset
    929de8cc2f66c flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read
    76b1a7c29ef3b mm/rmap: reject hugetlb folios in folio_make_device_exclusive()
    1cdb41d4f08a6 tracing: Do not add length to print format in synthetic events
    d51e47e2ab6ef net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod.
    85d1c5d416c6a media: i2c: imx214: Fix link frequency validation
    6e31585286b97 media: mtk-vcodec: venc: avoid -Wenum-compare-conditional warning
    10d8884e1869f mm: introduce and use {pgd,p4d}_populate_kernel()
    adb2f26b875b9 kunit: kasan_test: disable fortify string checker on kasan_strings() test
    69944b3cd7ec5 xfs: short circuit xfs_growfs_data_private() if delta is zero
    c0950ee2c3cc8 Revert "fbdev: Disable sysfb device registration when removing conflicting FBs"

(From OE-Core rev: b75a820962588097058e528a7db9ccd04368d299)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
75cb79eaf5 linux-yocto/5.15: update to v5.15.193
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

no ids found, dumping:
    43bb85222e53 Linux 5.15.193
    70de678302a8 x86/vmscape: Add old Intel CPUs to affected list
    79ec330d124e x86/vmscape: Warn when STIBP is disabled with SMT
    1cd71b057f05 x86/bugs: Move cpu_bugs_smt_update() down
    2f4f2f8f860c x86/vmscape: Enable the mitigation
    d5490dfa3542 x86/vmscape: Add conditional IBPB mitigation
    f2ed886bb650 x86/vmscape: Enumerate VMSCAPE bug
    a4fff4e5c054 Documentation/hw-vuln: Add VMSCAPE documentation
    de9476bb4f1b Linux 5.15.192
    3e7c1c70abf2 dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status()
    b521afbe4525 spi: tegra114: Use value to check for invalid delays
    ffe9232693e3 clk: qcom: gdsc: Set retain_ff before moving to HW CTRL
    b01a706f9e73 perf bpf-event: Fix use-after-free in synthesis
    43167766ea1b drm/bridge: ti-sn65dsi86: fix REFCLK setting
    f2e6b997632d spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
    18fac6162dda spi: spi-fsl-lpspi: Set correct chip-select polarity bit
    5255b997529b spi: spi-fsl-lpspi: Fix transmissions when using CONT
    85be7ef8c8e7 pcmcia: Add error handling for add_interval() in do_validate_mem()
    271ed980d57d ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model
    7e287256904e mm/slub: avoid accessing metadata when pointer is invalid in object_err()
    8b9a5269b442 randstruct: gcc-plugin: Fix attribute addition
    db44404d1b9b randstruct: gcc-plugin: Remove bogus void member
    4da1cc986b75 arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
    85530b4ec374 vmxnet3: update MTU after device quiesce
    a82c31b8e9b6 net: dsa: microchip: linearize skb for tail-tagging switches
    01ea671f1f2b net: dsa: microchip: update tag_ksz masks for KSZ9477 family
    6db1f39f003c dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()
    d0b7f11dd68b dma-buf: insert memory barrier before updating num_fences
    b336106f04a2 gpio: pca953x: fix IRQ storm on system wake up
    1d7def97e7eb iio: light: opt3001: fix deadlock due to concurrent flag access
    28e4e1b59a34 iio: chemical: pms7003: use aligned_s64 for timestamp
    66dc11e9c28f spi: tegra114: Don't fail set_cs_timing when delays are zero
    45eef6be830e spi: tegra114: Remove unnecessary NULL-pointer checks
    b9f28182e29e KVM: x86: Take irqfds.lock when adding/deleting IRQ bypass producer
    c824d766e472 cpufreq/sched: Explicitly synchronize limits_changed flag handling
    abdf3c339181 mm/khugepaged: fix ->anon_vma race
    99a8772611e2 e1000e: fix heap overflow in e1000_set_eeprom
    5d334bce9fad batman-adv: fix OOB read/write in network-coding decode
    95b63d15fce5 scsi: lpfc: Fix buffer free/clear order in deferred receive path
    da98fc73f7d1 drm/amdgpu: drop hw access in non-DC audio fini
    acdf26a91219 wifi: mwifiex: Initialize the chan_stats array to zero
    732e62212f49 mm: move page table sync declarations to linux/pgtable.h
    744ff519c72d x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings()
    4bd570f49412 pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region()
    2be7109ef258 ALSA: usb-audio: Add mute TLV for playback volumes on some devices
    0bb7069ee343 phy: mscc: Stop taking ts_lock for tx_queue and use its own lock
    24b24295464f net: phy: mscc: Fix memory leak when using one step timestamping
    b4c2fb32f4fe ptp: Add generic PTP is_sync() function
    0b21e9cd4559 ppp: fix memory leak in pad_compress_skb
    955f400e4f51 net: atm: fix memory leak in atm_register_sysfs when device_register fail
    2bd0f6721290 ax25: properly unshare skbs in ax25_kiss_rcv()
    a7eae33227ee ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init()
    894c7d0c3fba net: thunder_bgx: decrement cleanup index before use
    299c6d47528e net: thunder_bgx: add a missing of_node_put
    e5f334ac7747 wifi: libertas: cap SSID len in lbs_associate()
    24ec8826381f wifi: cw1200: cap SSID length in cw1200_do_join()
    eaa10a027ab6 net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets
    1eadabcf5623 i40e: Fix potential invalid access when MAC list is empty
    348a01c8574b icmp: fix icmp_ndo_send address translation for reply direction
    e96d08ddbc99 mISDN: Fix memory leak in dsp_hwec_enable()
    1079c1029384 xirc2ps_cs: fix register access when enabling FullDuplex
    47f6090bcf75 Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen()
    c79730e337a1 netfilter: conntrack: helper: Replace -EEXIST by -EBUSY
    d00c8b0daf56 netfilter: br_netfilter: do not check confirmed bit in br_nf_local_in() after confirm
    ff040562c10a wifi: cfg80211: fix use-after-free in cmp_bss()
    0f70fab5598d arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro
    4377eac565c2 tee: fix NULL pointer dereference in tee_shm_put
    b187c9761119 fs: writeback: fix use-after-free in __mark_inode_dirty()
    71224142994b drm/amd/display: Don't warn when missing DCE encoder caps
    c1c74584b9b4 bpf: Fix oob access in cgroup local storage
    c04992612ed4 bpf: Move bpf map owner out of common struct
    bfb8da7a5dd1 bpf: Move cgroup iterator helpers to bpf.h
    23099792bb6f bpf: Add cookie object to bpf maps
    7a6c2d093c45 Linux 5.15.191
    90bae69c2959 xfs: do not propagate ENODATA disk errors into xattr code
    c570d773884c Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS"
    3db34718c755 HID: mcp2221: Handle reads greater than 60 bytes
    6ac648746149 HID: mcp2221: Don't set bus speed on every transfer
    2a0ed07b6967 drm/nouveau/disp: Always accept linear modifier
    40a0165278b7 net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions
    9a0b5fdce128 dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted
    67334c94b853 Revert "drm/amdgpu: fix incorrect vm flags to map bo"
    4338b0f6544c HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version()
    bfde0392d74f HID: wacom: Add a new Art Pen 2
    4263e5851779 HID: multitouch: fix slab out-of-bounds access in mt_report_fixup()
    eaae728e7335 HID: asus: fix UAF via HID_CLAIMED_INPUT validation
    d51e381beed5 KVM: x86: use array_index_nospec with indices that come from guest
    568e7761279b efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare
    17d6c7747045 sctp: initialize more fields in sctp_v6_from_sk()
    700a71e78755 net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts
    47fbd9c3364c net/mlx5e: Set local Xoff after FW update
    9352f6ea981d net/mlx5e: Update and set Xon/Xoff upon port speed set
    7011f0f400d4 net/mlx5e: Update and set Xon/Xoff upon MTU set
    f64abfa0649a phy: mscc: Fix when PTP clock is register and unregister
    5680a4dd1009 net: dlink: fix multicast stats being counted incorrectly
    62f368472b0a atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
    bf813928bb53 Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced
    e726dc92f45d powerpc/kvm: Fix ifdef to remove build warning
    5a2d5ab38365 net: ipv4: fix regression in local-broadcast routes
    6606a6d37496 udf: Fix directory iteration for longer tail extents
    d717c12fbb23 vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put()
    f230d40147cc NFS: Fix a race when updating an existing write
    fd947b71cc1b nfs: fold nfs_page_group_lock_subrequests into nfs_lock_and_join_requests
    2e0d974cdbd1 ASoC: codecs: tx-macro: correct tx_macro_component_drv name
    8f397cdef773 scsi: core: sysfs: Correct sysfs attributes access rights
    a6f0f8873cc3 ftrace: Fix potential warning in trace_printk_seq during ftrace_dump
    2573ee4e6c03 pinctrl: STMFX: add missing HAS_IOMEM dependency
    01879f56bdde Linux 5.15.190
    77cf363f7667 alloc_fdtable(): change calling conventions.
    e442a966e2b7 wifi: mac80211: check basic rates validity in sta_link_apply_parameters
    82ef97abf227 netfilter: nf_reject: don't leak dst refcount for loopback packets
    53320a99948d s390/hypfs: Enable limited access during lockdown
    0ffb1bf99e49 s390/hypfs: Avoid unnecessary ioctl registration in debugfs
    bbdfdc63afdf ALSA: usb-audio: Use correct sub-type for UAC3 feature unit validation
    9d48c8091947 bonding: update LACP activity flag after setting lacp_active
    5748c51afe91 net/sched: Remove unnecessary WARNING condition for empty child qdisc in htb_activate
    0dacfc5372e3 net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit
    f422b5e49b72 igc: fix disabling L1.2 PCI-E link substate on I226 on init
    aa65c2bdb19f ixgbe: xsk: resolve the negative overflow of budget in ixgbe_xmit_zc
    fcb4ce9f729c net: usb: asix_devices: Fix PHY address mask in MDIO bus initialization
    5d1fed4b1c3c phy: mscc: Fix timestamping for vsc8584
    94beabf466da net: phy: Use netif_rx().
    9a1969fbffc1 ppp: fix race conditions in ppp_fill_forward_path
    9f113d2828f0 ipv6: sr: validate HMAC algorithm ID in seg6_hmac_info_add
    2af45aadb7b5 drm/amd/display: Add null pointer check in mod_hdcp_hdcp1_create_session()
    38c13968b80e ALSA: usb-audio: Fix size validation in convert_chmap_v3()
    ddf1691f2534 drm/hisilicon/hibmc: fix the hibmc loaded failed bug
    10ae957833eb mlxsw: spectrum: Forward packets with an IPv4 link-local source IP
    0ad8509b468f iommu/amd: Avoid stack buffer overflow from kernel cmdline
    325bf7d57c4e scsi: qla4xxx: Prevent a potential error pointer dereference
    34171b9e53bd net: bridge: fix soft lockup in br_multicast_query_expired()
    0ba6efb2c174 RDMA/bnxt_re: Fix to initialize the PBL array
    e7ea080f85b7 cgroup/cpuset: Use static_branch_enable_cpuslocked() on cpusets_insane_config_key
    c635a42d9b74 mm/page_alloc: detect allocation forbidden by cpuset and bail out early
    873f32201df8 x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper
    4ad0d45ffc39 mm/memory-failure: fix infinite UCE for VM_PFNMAP pfn
    d8c5d87a4315 iio: light: as73211: Ensure buffer holes are zeroed
    41b838420457 tracing: Limit access to parser->buffer when trace_get_user failed
    9fb26b72bb8b tracing: Remove unneeded goto out logic
    14b0d8e7423a iio: imu: inv_icm42600: change invalid data error to -EBUSY
    c78c8e5048b7 usb: xhci: Fix slot_id resource race conflict
    5e2414ebe6f9 compiler: remove __ADDRESSABLE_ASM{_STR,}() again
    c8124155c223 selftests: mptcp: pm: check flush doesn't reset limits
    9aff206cfc27 pwm: mediatek: Fix duty and period setting
    7735341026e5 pwm: mediatek: Handle hardware enable and clock enable separately
    de1dda2e5312 pwm: mediatek: Implement .apply() callback
    1c72f369221c scsi: mpi3mr: Serialize admin queue BAR writes on 32-bit systems
    fef82b52a48c scsi: mpi3mr: Drop unnecessary volatile from __iomem pointers
    098b2c8ee208 scsi: ufs: exynos: Fix programming of HCI_UTRL_NEXUS_TYPE
    423fd248c7aa iio: adc: ad_sigma_delta: change to buffer predisable
    0d59ce2bfc3b soc: qcom: mdt_loader: Ensure we don't read past the ELF header
    e94264b07c41 wifi: ath11k: fix dest ring-buffer corruption when ring is full
    80bc1e5d9e15 asm-generic: Add memory barrier dma_mb()
    06b70cccc106 locking/barriers, kcsan: Support generic instrumentation
    9db6a78bc5e4 media: venus: protect against spurious interrupts during probe
    c52e2ecb77e8 media: venus: Add support for SSR trigger using fault injection
    39d70ce5a252 media: qcom: camss: cleanup media device allocated resource on error path
    4ef9526792ae media: camss: Convert to platform remove callback returning void
    6b7784ea07e6 f2fs: fix to avoid out-of-boundary access in dnode page
    a19b31f854a8 drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS
    a7037057fd16 mptcp: disable add_addr retransmission when timeout is 0
    7c5f3b639bb1 drm/amd/display: Don't overclock DCE 6 by 15%
    dfe40159eec6 usb: dwc3: Remove WARN_ON for device endpoint command timeouts
    bccd26d713ec usb: dwc3: Ignore late xferNotReady event to prevent halt timeout
    7ec4f6da3a4b USB: storage: Ignore driver CD mode for Realtek multi-mode Wi-Fi dongles
    564b015af068 usb: storage: realtek_cr: Use correct byte order for bcs->Residue
    b5a59ea98836 USB: storage: Add unusual-devs entry for Novatek NTK96550-based camera
    f596da86b8c7 usb: renesas-xhci: Fix External ROM access timeouts
    f9f402f8b93c usb: core: hcd: fix accessing unmapped memory in SINGLE_STEP_SET_FEATURE test
    868a1b68dcd9 comedi: Fix use of uninitialized memory in do_insn_ioctl() and do_insnlist_ioctl()
    bab220b0bb5a comedi: pcl726: Prevent invalid irq number
    ab77e85bd3bc comedi: Make insn_rw_emulate_bits() do insn->n samples
    78232f3d0eac usb: quirks: Add DELAY_INIT quick for another SanDisk 3.2Gen1 Flash Drive
    4cb568aacc43 most: core: Drop device reference after usage in get_channel()
    65817f61e181 iio: proximity: isl29501: fix buffered read on big-endian systems
    35b8c9082dd5 iio: pressure: bmp280: Use IS_ERR() in bmp280_common_probe()
    e0b6b223167e ftrace: Also allocate and copy hash for reading of filter files
    403820959475 fpga: zynq_fpga: Fix the wrong usage of dma_map_sgtable()
    905986f6b670 use uniform permission checks for all mount propagation changes
    03b40bf5d038 fs/buffer: fix use-after-free when call bh_read() helper
    0496b11f223f drm/amd/display: Fill display clock and vblank time in dce110_fill_display_configs
    9031c990fd69 drm/amd/display: Find first CRTC and its line time in dce110_fill_display_configs
    2e278aee6afe drm/amd/display: Fix DP audio DTO1 clock source on DCE 6.
    fe8670344ab3 drm/amd/display: Fix fractional fb divider in set_pixel_clock_v3
    9c92d12b5cb9 drm/amd/display: Avoid a NULL pointer dereference
    f89530d76d28 ALSA: hda/realtek: Add support for HP EliteBook x360 830 G6 and EliteBook 830 G6
    7bf57a0709cd mm/debug_vm_pgtable: clear page table entries at destroy_args()
    b14850b047e8 squashfs: fix memory leak in squashfs_fill_super
    7a556ae35d7c mmc: sdhci-pci-gli: GL9763e: Rename the gli_set_gl9763e() for consistency
    c3e0a66fd999 memstick: Fix deadlock by moving removing flag earlier
    23249dade24e KVM: arm64: Fix kernel BUG() due to bad backport of FPSIMD/SVE/SME fix
    d08713bac991 scsi: ufs: ufs-pci: Fix default runtime and system PM levels
    b2be32915f07 scsi: ufs: ufs-pci: Fix hibernate state transition for Intel MTL-like host controllers
    fb9c73ef2ac2 mptcp: do not queue data on closed subflows
    a08f285d2020 mptcp: drop unused sk in mptcp_push_release
    13e85f7d6979 selftests: mptcp: Initialize variables to quiet gcc 12 warnings
    c9f8a3b0600b mptcp: introduce MAPPING_BAD_CSUM
    1da47584e2d7 mptcp: fix error mibs accounting
    f4480eaad489 selftests: mptcp: add missing join check
    2b92ae68ba70 selftests: mptcp: connect: also cover checksum
    2668261dd04d selftests: mptcp: connect: also cover alt modes
    2c5b3b71fe6b selftests: mptcp: make sendfile selftest work
    696480028b59 kbuild: userprogs: use correct linker when mixing clang and GNU ld
    ad1190744da9 ACPI: processor: idle: Check acpi_fetch_acpi_dev() return value
    cbb445d5cd98 PCI: vmd: Assign VMD IRQ domain before enumeration
    c2d25fddd867 sch_htb: make htb_deactivate() idempotent
    eda741fe155d codel: remove sch->q.qlen check before qdisc_tree_reduce_backlog()
    db568d2151cd sch_drr: make drr_qlen_notify() idempotent
    dd83b2be69a1 btrfs: populate otime when logging an inode item
    a803d916ae9a KVM: VMX: Flush shadow VMCS on emergency reboot
    be9692dafdfb net/sched: ets: use old 'nbands' while purging unused classes
    1980d8d38cef net_sched: sch_ets: implement lockless ets_dump()
    de127abe923a net/sched: sch_ets: properly init all active DRR list handles
    8af89a96144e platform/chrome: cros_ec: Unregister notifier in cros_ec_unregister()
    9936cb9ef2d2 platform/chrome: cros_ec: remove unneeded label and if-condition
    2ad140545b2a platform/chrome: cros_ec: Use per-device lockdep key
    d9e812b90b38 platform/chrome: cros_ec: Make cros_ec_unregister() return void
    79c745be310e usb: dwc3: imx8mp: fix device leak at unbind
    7b3f0e3b60c2 bus: mhi: host: Detect events pointing to unexpected TREs
    cfbd61d63263 ata: Fix SATA_MOBILE_LPM_POLICY description in Kconfig
    90a53102729e usb: musb: omap2430: fix device leak at unbind
    1be6c638f72d usb: musb: omap2430: Convert to platform remove callback returning void
    69bea84b06b5 mm/ptdump: take the memory hotplug lock inside ptdump_walk_pgd()
    3924dab90816 NFS: Fix the setting of capabilities when automounting a new filesystem
    dbadab480714 NFS: Create an nfs4_server_set_init_caps() function
    e60dc74f62f0 net: enetc: fix device and OF node leak at probe
    a39791e479ba block: Make REQ_OP_ZONE_FINISH a write operation
    1aaa8e9e4f50 PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports
    5cbf5709aa05 usb: typec: fusb302: cache PD RX state
    3467c4ebb334 hv_netvsc: Fix panic during namespace deletion with VF
    26eb63f732b0 smb: server: Fix extension string in ksmbd_extract_shortname()
    14fafb398360 ALSA: scarlett2: Add retry on -EPROTO from scarlett2_usb_tx()
    1b2b7e9da01e x86/fpu: Delay instruction pointer fixup until after warning
    6550b2bef095 smb: client: fix use-after-free in crypt_message when using async crypto
    ae8428d68252 usb: hub: Don't try to recover devices lost during warm reset.
    98df81d18e5d usb: hub: avoid warm port reset during USB3 disconnect
    8a0b022147b1 x86/mce/amd: Add default names for MCA banks and blocks
    4e2ee5d14333 iio: hid-sensor-prox: Fix incorrect OFFSET calculation
    4597cf3ac9ba iio: hid-sensor-prox: Restore lost scale assignments
    c4029044cc40 f2fs: fix to do sanity check on ino and xnid
    3a12e18a0310 ARM: 9448/1: Use an absolute path to unified.h in KBUILD_AFLAGS
    407047893a64 arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack()
    6188d61ba73d drm/sched: Remove optimization that causes hang when killing dependent jobs
    7c5a13c76dd3 ice: Fix a null pointer dereference in ice_copy_and_init_pkg()
    46a7cdcf06c4 selftests/memfd: add test for mapping write-sealed memfd read-only
    1c296cba6568 mm: reinstate ability to map write-sealed memfd mappings read-only
    d919658a3871 mm: update memfd seal write check to include F_SEAL_WRITE
    27df40ad7445 mm: drop the assumption that VM_SHARED always implies writable
    44e2f93f9820 sch_qfq: make qfq_qlen_notify() idempotent
    a5efc95a33bd sch_hfsc: make hfsc_qlen_notify() idempotent
    967955c9e57f sch_htb: make htb_qlen_notify() idempotent
    587558d812ac mptcp: pm: kernel: flush: do not reset ADD_ADDR limit
    6ddf51fc0b07 mptcp: drop skb if MPTCP skb extension allocation fails
    3b348c9c8d2c ipv6: sr: Fix MAC comparison to be constant-time
    3ae272ab523d net, hsr: reject HSR frame if skb can't hold tag
    da240d7f7e10 drm/amd/display: Don't overwrite dce60_clk_mgr
    92c4a1fde641 drm/amd: Restore cached power limit during resume
    5005e4e6f964 media: venus: venc: Clamp param smaller than 1fps and bigger than 240
    48045c17fddf media: venus: vdec: Clamp param smaller than 1fps and bigger than 240.
    e6e5e5e5b40a media: venus: hfi: explicitly release IRQ during teardown
    ef09b96665f1 media: venus: Add a check for packet size after reading from shared memory
    f16dc2c87ce4 media: ov2659: Fix memory leaks in ov2659_probe()
    fbc81e78d75b media: rainshadow-cec: fix TOCTOU race condition in rain_interrupt()
    5427dda195d6 media: usbtv: Lock resolution while streaming
    436774334587 media: v4l2-ctrls: Don't reset handler's error in v4l2_ctrl_handler_free()
    025617f4851a media: imx: fix a potential memory leak in imx_media_csc_scaler_device_init()
    5197247df6a0 media: hi556: correct the test pattern configuration
    6512784dbf5d media: gspca: Add bounds checking to firmware parser
    90cc9e7d82e1 soc/tegra: pmc: Ensure power-domains are in a known state
    84ff98c1ea19 jbd2: prevent softlockup in jbd2_log_do_checkpoint()
    fb454ba99189 PCI: endpoint: Fix configfs group removal on driver teardown
    dc4ffbd57171 PCI: endpoint: Fix configfs group list head handling
    7d5c223edf89 mtd: rawnand: fsmc: Add missing check after DMA map
    93f1be8de86a mtd: spinand: propagate spinand_wait() errors from spinand_write_page()
    e26bd46c2968 hwmon: (gsc-hwmon) fix fan pwm setpoint show functions
    dbe8b4366878 pwm: imx-tpm: Reset counter if CMOD is 0
    6b6fa2a7a1b3 wifi: ath11k: fix source ring-buffer corruption
    5679342831db wifi: brcmsmac: Remove const from tbl_ptr parameter in wlc_lcnphy_common_read_table()
    1bb6bb6cd975 zynq_fpga: use sgtable-based scatterlist wrappers
    0176a6117fc7 ata: libata-scsi: Fix ata_to_sense_error() status handling
    48a1795cbf67 scsi: mpi3mr: Fix race between config read submit and interrupt completion
    e1f8a51a8602 ext4: fix hole length calculation overflow in non-extent inodes
    66245c16d72e ext4: use kmalloc_array() for array space allocation
    5396de17bcea ext4: don't try to clear the orphan_present feature block device is r/o
    2c9c15656569 ext4: fix reserved gdt blocks handling in fsmap
    e0fad182ba8a ext4: fix fsmap end of range reporting with bigalloc
    cdfc7b6d3473 ext4: check fast symlink for ea_inode correctly
    8a5e6282c6a7 Revert "vgacon: Add check for vc_origin address range in vgacon_scroll()"
    649383fa7f67 lib/crypto: mips/chacha: Fix clang build and remove unneeded byteswap
    969668b6e7d2 vt: defkeymap: Map keycodes above 127 to K_HOLE
    6b03d59b1e0e vt: keyboard: Don't process Unicode characters in K_OFF mode
    228c686e20ff bus: mhi: host: Fix endianness of BHI vector table
    9d916500ecf9 usb: dwc3: meson-g12a: fix device leaks at unbind
    332d4a4b8615 usb: gadget: udc: renesas_usb3: fix device leak at unbind
    f6d79955b2a3 usb: atm: cxacru: Merge cxacru_upload_firmware() into cxacru_heavy_init()
    5e5ccfdbe4ac m68k: Fix lost column on framebuffer debug console
    177d3651dbd3 cpufreq: armada-8k: Fix off by one in armada_8k_cpufreq_free_table()
    68c4613e89f0 serial: 8250: fix panic due to PSLVERR
    08e12045014b HID: magicmouse: avoid setting up battery timer when not needed
    123cf618a0ae media: uvcvideo: Do not mark valid metadata as invalid
    8343f3fe0b75 media: uvcvideo: Fix 1-byte out-of-bounds read in uvc_parse_format()
    f249d32bb548 mm/kmemleak: avoid deadlock by moving pr_warn() outside kmemleak_lock
    a04de4c40aab mm/kmemleak: avoid soft lockup in __kmemleak_do_cleanup()
    d06e119a16ce parisc: Makefile: fix a typo in palo.conf
    078e62bffca4 fbdev: Fix vmalloc out-of-bounds write in fast_imageblit
    fa086b1398cf btrfs: do not allow relocation of partially dropped subvolumes
    8563ac0b5b8f btrfs: fix log tree replay failure due to file with 0 links and extents
    fa6e0cc6a720 cdc-acm: fix race between initial clearing halt and open
    6eb63a710da3 thunderbolt: Fix copy+paste error in match_service_id()
    d85fac8729c9 comedi: fix race between polling and detaching
    56b9177f17ab usb: typec: ucsi: Update power_supply on power role change
    030b156ec7e0 misc: rtsx: usb: Ensure mmc child device is active when card is present
    058ad2b72281 usb: core: config: Prevent OOB read in SS endpoint companion parsing
    91789de2ed20 ext4: fix largest free orders lists corruption on mb_optimize_scan switch
    3b6de89a9dda drm/amdgpu: fix incorrect vm flags to map bo
    30b14a9374d9 ASoC: fsl_sai: replace regmap_write with regmap_update_bits
    780ce4759f94 ASoC: soc-dai.h: merge DAI call back functions into ops
    4f60001afa06 ASoC: soc-dai.c: add missing flag check at snd_soc_pcm_dai_probe()
    87c474a68724 scsi: lpfc: Remove redundant assignment to avoid memory leak
    481701300b7b rtc: ds1307: remove clear of oscillator stop flag (OSF) in probe
    4f783333cbfa pNFS: Fix uninited ptr deref in block/scsi layout
    f47b0662bdbd pNFS: Handle RPC size limit for layoutcommits
    1ba621a63625 pNFS: Fix disk addr range check in block/scsi layout
    c8dea4397432 pNFS: Fix stripe mapping in block/scsi layout
    8b3ce085b52e block: avoid possible overflow for chunk_sectors check in blk_stack_limits()
    53acbc94344e net: phy: smsc: add proper reset flags for LAN8710A
    dc826121cd44 ipmi: Fix strcpy source and destination the same
    a12feec53c1a kconfig: lxdialog: fix 'space' to (de)select options
    f7d9f0717be8 kconfig: gconf: fix potential memory leak in renderer_edited()
    28498cf306f9 kconfig: gconf: avoid hardcoding model2 in on_treeview2_cursor_changed()
    19b946182978 ipmi: Use dev_warn_ratelimited() for incorrect message warnings
    2b4aa66f7532 scsi: aacraid: Stop using PCI_IRQ_AFFINITY
    2e24d269359b scsi: target: core: Generate correct identifiers for PR OUT transport IDs
    237edd281d52 scsi: Fix sas_user_scan() to handle wildcard and multi-channel scans
    e008120a621e kconfig: nconf: Ensure null termination where strncpy is used
    a73ee10c2781 kconfig: lxdialog: replace strcpy() with strncpy() in inputbox.c
    344ef2a6c6e8 i2c: Force DLL0945 touchpad i2c freq to 100khz
    3963ecbdddaf dm-mpath: don't print the "loaded" message if registering fails
    6f83cf2e362a i3c: don't fail if GETHDRCAP is unsupported
    ce3195182fe0 rtc: ds1307: handle oscillator stop flag (OSF) for ds1341
    758b8e343610 i3c: add missing include to internal header
    b506af24d662 md: dm-zoned-target: Initialize return variable r to avoid uninitialized use
    e6f44cd74134 crypto: octeontx2 - add timeout for load_fvc completion poll
    eb6059474e70 media: uvcvideo: Fix bandwidth issue for Alcor camera
    17b30e5ded06 media: dvb-frontends: w7090p: fix null-ptr-deref in w7090p_tuner_write_serpar and w7090p_tuner_read_serpar
    529fd5593b72 media: dvb-frontends: dib7090p: fix null-ptr-deref in dib7090p_rw_on_apb()
    e06e706500b8 media: usb: hdpvr: disable zero-length read messages
    aef1b717d4a2 media: tc358743: Increase FIFO trigger level to 374
    21ba26a8e347 media: tc358743: Return an appropriate colorspace from tc358743_set_fmt
    a6ccbe037734 media: tc358743: Check I2C succeeded during probe
    2e82f9a5a37b pinctrl: stm32: Manage irq affinity settings
    0de080a0ecab scsi: mpt3sas: Correctly handle ATA device errors
    5e25ee1ecec9 scsi: lpfc: Check for hdwq null ptr when cleaning up lpfc_vport structure
    c16984bc84bf RDMA/core: reduce stack using in nldev_stat_get_doit()
    9d3211cb61a0 RDMA: hfi1: fix possible divide-by-zero in find_hw_thread_mask()
    a8c0dc453e9f leds: leds-lp50xx: Handle reg to get correct multi_index
    b6a9cc9918db media: v4l2-common: Reduce warnings about missing V4L2_CID_LINK_FREQ control
    bd90dbd19683 MIPS: Don't crash in stack_top() for tasks without ABI or vDSO
    1467a75819e4 jfs: upper bound check of tree index in dbAllocAG
    9ad054cd2c4c jfs: Regular file corruption check
    8ed7275910fb jfs: truncate good inode pages when hard link is 0
    ba024d925645 scsi: bfa: Double-free fix
    f5de907f0479 watchdog: iTCO_wdt: Report error if timeout configuration fails
    90c1295da0a7 MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free}
    e9849ca6dd01 watchdog: dw_wdt: Fix default timeout
    dacfd8cf9c23 fs/orangefs: use snprintf() instead of sprintf()
    fd5aad080edb scsi: libiscsi: Initialize iscsi_conn->dd_data only if memory is allocated
    7f322c12df7a ext4: do not BUG when INLINE_DATA_FL lacks system.data xattr
    79ec8dabf001 crypto: hisilicon/hpre - fix dma unmap sequence
    b06a3c552c00 cifs: Fix calling CIFSFindFirst() for root path without msearch
    8e6932ee0cc9 watchdog: sbsa: Adjust keepalive timeout to avoid MediaTek WS0 race condition
    1117260a5402 vhost: fail early when __vhost_add_used() fails
    6ef6e42de0d4 net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
    77e56dbc7b7a drm/ttm: Respect the shrinker core free target
    65a7b7717600 uapi: in6: restore visibility of most IPv6 socket options
    49586908dea6 drm/ttm: Should to return the evict error
    6716de171b2a net: ncsi: Fix buffer overflow in fetching version id
    56c4837283eb wifi: rtlwifi: fix possible skb memory leak in _rtl_pci_init_one_rxdesc()
    f531abcdfec2 net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
    bae08d48d044 net: dsa: b53: prevent DIS_LEARNING access on BCM5325
    9874ad64285f net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
    36bec4066dff net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
    392aa29dbcc5 gve: Return error for unknown admin queue command
    452de5797933 net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs
    d49af61978b6 drm/amd: Allow printing VanGogh OD SCLK levels without setting dpm to manual
    851c50b31611 dpaa_eth: don't use fixed_phy_change_carrier
    6de7a77911b2 wifi: iwlegacy: Check rate_idx range after addition
    7cc4b7c2e24f netmem: fix skb_frag_address_safe with unreadable skbs
    7451726049e8 wifi: rtlwifi: fix possible skb memory leak in `_rtl_pci_rx_interrupt()`.
    e80b670bc30d drm/amd/display: Fix 'failed to blank crtc!'
    6fed73112e43 wifi: iwlwifi: fw: Fix possible memory leak in iwl_fw_dbg_collect
    ffbf9699d639 wifi: iwlwifi: dvm: fix potential overflow in rs_fill_link_cmd()
    851726384eb6 drm/amd/display: Separate set_gsl from set_gsl_source_select
    e03f9c0b9324 net: fec: allow disable coalescing
    03dd58451897 net: atlantic: add set_power to fw_ops for atl2 to fix wol
    833e0e6744cd net: thunderbolt: Fix the parameter passing of tb_xdomain_enable_paths()/tb_xdomain_disable_paths()
    39117551069d drm/msm: use trylock for debugfs
    834c1e80164e ipv6: mcast: Check inet6_dev->dead under idev->mc_lock in __ipv6_dev_mc_inc().
    e22b1ee8cec9 (powerpc/512) Fix possible `dma_unmap_single()` on uninitialized pointer
    599dcdfff36f wifi: mac80211: don't complete management TX on SAE commit
    bb9a6585c2f9 s390/stp: Remove udelay from stp_sync_clock()
    13ff80efde1c wifi: iwlwifi: mvm: fix scan request validation
    ac31ba743054 sched/deadline: Fix accounting after global limits change
    037d856072bc net: thunderx: Fix format-truncation warning in bgx_acpi_match_id()
    c965a0f7477a net: ipv4: fix incorrect MTU in broadcast routes
    7fcb3d1a622b wifi: cfg80211: Fix interface type validation
    15b05f078e6c net: mctp: Prevent duplicate binds
    0ad84d622174 rcu: Protect ->defer_qs_iw_pending from data race
    a8b4ecb16327 arm64: Mark kernel as tainted on SAE and SError panic
    0f2d1bcdd01c net/mlx5e: Properly access RCU protected qdisc_sleeping variable
    8769e2cd97dc net: ag71xx: Add missing check after DMA map
    44746e44ef61 et131x: Add missing check after DMA map
    9152c8dce4fa be2net: Use correct byte order and format string for TCP seq and ack_seq
    5e18232d72a1 s390/time: Use monotonic clock in get_cycles()
    39968a6d1b7f wifi: cfg80211: reject HTC bit for management frames
    72632af764d0 ktest.pl: Prevent recursion of default variable options
    2fc78b1f4544 xen/netfront: Fix TX response spurious interrupts
    a0c4744b3e7a ASoC: codecs: rt5640: Retry DEVICE_ID verification
    2191a2f89827 iio: adc: ad7768-1: Ensure SYNC_IN pulse minimum timing requirement
    97e1d2a18a7d ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros
    77477121f87a ALSA: pcm: Rewrite recalculate_boundary() to avoid costly loop
    c2dacfe495b7 ALSA: hda/ca0132: Fix buffer overflow in add_tuning_control
    a73ccab0ebd2 platform/chrome: cros_ec_typec: Defer probe on missing EC parent
    93d700f59bf9 platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches
    ddb96ab185e8 pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()
    ffa551a30da6 usb: core: usb_submit_urb: downgrade type check
    5c7fda829b16 usb: typec: intel_pmc_mux: Defer probe if SCU IPC isn't present
    82ba7b8cf9f6 ASoC: core: Check for rtd == NULL in snd_soc_remove_pcm_runtime()
    afd0dd1baf0a ALSA: intel8x0: Fix incorrect codec index usage in mixer for ICH4
    866fcfc056c3 ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
    b3f0f92abaac x86/bugs: Avoid warning when overriding return thunk
    921592ffe886 mmc: rtsx_usb_sdmmc: Fix error-path in sd_set_power_mode()
    345df19a971a reset: brcmstb: Enable reset drivers for ARCH_BCM2835
    932d27bc3650 pps: clients: gpio: fix interrupt handling order in remove path
    e8d164041ebd ACPI: APEI: GHES: add TAINT_MACHINE_CHECK on GHES panic path
    18aed89a19d9 mmc: sdhci-msm: Ensure SD card power isn't ON when card removed
    0c48c9fe3fac ACPI: processor: fix acpi_object initialization
    b287704f0b51 PM: sleep: console: Fix the black screen issue
    7121241b7267 thermal: sysfs: Return ENODATA instead of EAGAIN for reads
    c2b884662890 PM: runtime: Clear power.needs_force_resume in pm_runtime_reinit()
    2bcc6a6c3fbd ACPI: PRM: Reduce unnecessary printing to avoid user confusion
    e453c89e247d selftests: tracing: Use mutex_unlock for testing glob filter
    2499b0ac908e ARM: tegra: Use I/O memcpy to write to IRAM
    aeb7edd5cb7e gpio: tps65912: check the return value of regmap_update_bits()
    4dd40dfba23a tools/nolibc: define time_t in terms of __kernel_old_time_t
    5b49e57e1e73 thermal/drivers/qcom-spmi-temp-alarm: Enable stage 2 shutdown when required
    8cac2bd3cc83 ASoC: soc-dapm: set bias_level if snd_soc_dapm_set_bias_level() was successed
    472af4d4fa68 EDAC/synopsys: Clear the ECC counters on init
    2a65a7477b82 PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store()
    c0726d1e466e ARM: rockchip: fix kernel hang during smp initialization
    4d0b2d5a7419 cpufreq: Exit governor when failed to start old governor
    6c3ae3c40cbb gpio: wcd934x: check the return value of regmap_update_bits()
    bade491eb9e0 usb: xhci: Avoid showing errors during surprise removal
    c4ba0c252d92 usb: xhci: Set avg_trb_len = 8 for EP0 during Address Device Command
    04e615daf3b9 usb: xhci: Avoid showing warnings for dying controller
    5a164a725b9c usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default
    cc1613a46a1f selftests/futex: Define SYS_futex on 32-bit architectures with 64-bit time_t
    be45f1b5f28d cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
    f3ab168d3c85 usb: xhci: print xhci->xhc_state when queue_command failed
    c8704dca5792 securityfs: don't pin dentries twice, once is enough...
    d167a43b29cc ext2: Handle fiemap on empty files to prevent EINVAL
    5a77f371b4a1 fs/ntfs3: correctly create symlink for relative path
    bde58c1539f3 fs/ntfs3: Add sanity check for file name
    11388106fab5 ata: libata-sata: Disallow changing LPM state if not supported
    11b567346c65 better lockdep annotations for simple_recursive_removal()
    ad5f53b993b2 hfs: fix not erasing deleted b-tree node issue
    84ef8dd32383 drbd: add missing kref_get in handle_write_conflicts
    dc83df485f44 udf: Verify partition map count
    9d5012ffe141 smb/server: avoid deadlock when linking with ReplaceIfExists
    f8d55c912e45 arm64: Handle KCOV __init vs inline mismatches
    03cd1db1494c hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file()
    ccf0ad56a779 hfsplus: fix slab-out-of-bounds read in hfsplus_uni2asc()
    5ab59229bef6 hfsplus: fix slab-out-of-bounds in hfsplus_bnode_read()
    a1a60e795022 hfs: fix slab-out-of-bounds in hfs_bnode_read()
    240325993e78 ptp: prevent possible ABBA deadlock in ptp_clock_freerun()
    55b12736625d cpuidle: governors: menu: Avoid using invalid recent intervals data
    8680e712240e intel_idle: Allow loading ACPI tables for any family
    cd0e92bb2b75 sctp: linearize cloned gso packets in sctp_rcv
    19b909a4b145 netfilter: ctnetlink: fix refcount leak on table dump
    a47767e20cf7 udp: also consider secpath when evaluating ipsec use for checksumming
    edc065c19257 ACPI: processor: perflib: Move problematic pr->performance check
    40f8fea730ce ACPI: processor: perflib: Fix initial _PPC limit application
    289d1d1fc1dc Documentation: ACPI: Fix parent device references
    71379495ab70 eventpoll: Fix semi-unbounded recursion
    749528086620 fs: Prevent file descriptor table allocations exceeding INT_MAX
    9620376f73fa sunvdc: Balance device refcount in vdc_port_mpgroup_check
    6fd42124b445 NFSD: detect mismatch of file handle and delegation stateid in OPEN op
    f3aac6cf390d nfsd: handle get_client_locked() failure in nfsd4_setclientid_confirm()
    75947d3200de net: usb: asix_devices: add phy_mask for ax88772 mdio bus
    1b35f7ee5012 net: dpaa: fix device leak when querying time stamp info
    f95f0deb566d net: gianfar: fix device leak when querying time stamp info
    f324959ad47e netlink: avoid infinite retry looping in netlink_unicast()
    286b5be7f2ae gpio: virtio: Fix config space reading.
    275e37532e8e ALSA: usb-audio: Validate UAC3 cluster segment descriptors
    f03418bb9d54 ALSA: usb-audio: Validate UAC3 power domain descriptors, too
    b0878a23aee6 io_uring: don't use int for ABI
    8afb22aa063f usb: gadget : fix use-after-free in composite_dev_cleanup()
    66b1f50158e6 mm/hmm: move pmd_to_hmm_pfn_flags() to the respective #ifdeffery
    42ade82926c3 MIPS: mm: tlb-r4k: Uniquify TLB entries on init
    e05310943e7b ALSA: intel_hdmi: Fix off-by-one error in __hdmi_lpe_audio_probe()
    1946a6a9bdeb net: usbnet: Fix the wrong netif_carrier_on() call
    e2a4325ce21a net: usbnet: Avoid potential RCU stall on LINK_CHANGE event
    b4b40bab6c34 USB: serial: option: add Foxconn T99W709
    cf86704798c1 vsock: Do not allow binding to VMADDR_PORT_ANY
    ba2257034755 net/packet: fix a race in packet_set_ring() and packet_notifier()
    2675f405a60b selftests/perf_events: Add a mmap() correctness test
    3bd518cc7ea6 perf/core: Prevent VMA split of buffer mappings
    de85e72598d8 perf/core: Exit early on perf_mmap() fail
    899d253add77 perf/core: Don't leak AUX buffer refcount on allocation failure
    ce0481ac88a7 pptp: fix pptp_xmit() error path
    229429073578 smb: client: let recv_done() cleanup before notifying the callers.
    1f6525e79074 smb: server: let recv_done() avoid touching data_transfer after cleanup/move
    87fc5ce6ff98 smb: server: let recv_done() consistently call put_recvmsg/smb_direct_disconnect_rdma_connection
    fb3854e76cd3 smb: server: make sure we call ib_dma_unmap_single() only if we called ib_dma_map_single already
    484dea96e8c6 smb: server: remove separate empty_recvmsg_queue
    61a58a043906 ALSA: hda/ca0132: Fix missing error handling in ca0132_alt_select_out()
    f80b34ebc579 benet: fix BUG when creating VFs
    4c1022220b1b net: drop UFO packets in udp_rcv_segment()
    09ff062b89d8 ipv6: reject malicious packets in ipv6_gso_segment()
    d0e1d47eca66 net/mlx5: Correctly set gso_segs when LRO is used
    5de7513f38f3 pptp: ensure minimal skb length in pptp_xmit()
    10c803dee386 phy: mscc: Fix parsing of unicast frames
    0a0108796b84 netpoll: prevent hanging NAPI when netcons gets enabled
    19b83e315441 NFS: Fixup allocation flags for nfsiod's __GFP_NORETRY
    461125e8f46c XArray: Add calls to might_alloc()
    b23afb4a5fd2 NFSv4.2: another fix for listxattr
    3570ef5c3131 NFS: Fix filehandle bounds checking in nfs_fh_to_dentry()
    70bf32087b4d pNFS/flexfiles: don't attempt pnfs on fatal DS errors
    2ec8ec57bb8e PCI: pnv_php: Fix surprise plug detection and recovery
    f56e004b7817 powerpc/eeh: Make EEH driver device hotplug safe
    efabe0bd99f4 powerpc/eeh: Rely on dev->link_active_reporting
    cb1ea063039c powerpc/eeh: Export eeh_unfreeze_pe()
    12656cda9194 PCI: pnv_php: Work around switches with broken presence detection
    912e200240b6 PCI: pnv_php: Clean up allocated IRQs on unplug
    06e25dfea328 kconfig: qconf: fix ConfigList::updateListAllforAll()
    a30c34e6be0f scsi: ufs: core: Use link recovery when h8 exit fails during runtime resume
    0967189e6a09 scsi: mpt3sas: Fix a fw_event memory leak
    666b7cf6ac9a f2fs: fix to avoid out-of-boundary access in devs.path
    5cd99d5aa3d3 f2fs: fix to avoid panic in f2fs_evict_inode
    1edf68272b8c f2fs: fix to avoid UAF in f2fs_sync_inode_meta()
    fba3a1c1c330 f2fs: doc: fix wrong quota mount option description
    08e8ab00a6d2 f2fs: fix KMSAN uninit-value in extent_info usage
    37f3a111913b rtc: rv3028: fix incorrect maximum clock rate handling
    2ed0bae18a77 rtc: pcf8563: fix incorrect maximum clock rate handling
    facb6e7c0f4e rtc: pcf85063: fix incorrect maximum clock rate handling
    452aed10517b rtc: hym8563: fix incorrect maximum clock rate handling
    d62a797801fd rtc: ds1307: fix incorrect maximum clock rate handling
    e9293fd04c1b ucount: fix atomic_long_inc_below() argument type
    0b973c5eeef5 module: Restore the moduleparam prefix length check
    69e83e552750 apparmor: ensure WB_HISTORY_SIZE value is a power of 2
    74a87aca0942 bpf: Check flow_dissector ctx accesses are aligned
    27354cbd69b8 vhost-scsi: Fix log flooding with target does not exist errors
    aed9a4e43946 mtd: rawnand: atmel: set pmecc data setup time
    62f7cc11b04e mtd: rawnand: rockchip: Add missing check after DMA map
    15d0e92dfd45 mtd: rawnand: atmel: Fix dma_mapping_error() address
    47bf04a5a4b7 jfs: fix metapage reference count leak in dbAllocCtl
    cca8f5a39919 fbdev: imxfb: Check fb_add_videomode to prevent null-ptr-deref
    52e1dc93d52d crypto: qat - fix seq_file position update in adf_ring_next()
    6ff44d06e953 sh: Do not use hyphen in exported variable name
    2bba4bdf050d dmaengine: nbpfaxi: Add missing check after DMA map
    c94f4c6e662a dmaengine: mv_xor: Fix missing check after DMA map and missing unmap
    bbe6cd4da912 fs/orangefs: Allow 2 more characters in do_c_string()
    d2016efbc42a PCI: endpoint: pci-epf-vntb: Fix the incorrect usage of __iomem attribute
    d54f6bc4b2b0 soundwire: stream: restore params when prepare ports fail
    cbdd905a6b3e crypto: img-hash - Fix dma_unmap_sg() nents value
    5867d62dfe92 crypto: keembay - Fix dma_unmap_sg() nents value
    0b777a598b76 hwrng: mtk - handle devm_pm_runtime_enable errors
    7a9ee7b9034a watchdog: ziirave_wdt: check record length in ziirave_firm_verify()
    d084ff4b7c6b scsi: isci: Fix dma_unmap_sg() nents value
    999bb730ca69 scsi: mvsas: Fix dma_unmap_sg() nents value
    1c0717978d2a scsi: ibmvscsi_tgt: Fix dma_unmap_sg() nents value
    896c8ac77794 clk: sunxi-ng: v3s: Fix de clock definition
    2ab3f20f4baa perf tests bp_account: Fix leaked file descriptor
    b1b1bfb81a4a kernel: trace: preemptirq_delay_test: use offstack cpu mask
    b6fbac6ae904 RDMA/hns: Fix -Wframe-larger-than issue
    20c0ed8dd658 crypto: ccp - Fix crash when rebind ccp device for ccp.ko
    f25a1c8834c3 crypto: inside-secure - Fix `dma_unmap_sg()` nents value
    9f13f09c8dc4 perf sched: Fix memory leaks for evsel->priv in timehist
    84cd7256f068 clk: clk-axi-clkgen: fix fpfd_max frequency for zynq
    7b5365d17b58 pinctrl: sunxi: Fix memory leak on krealloc failure
    0369e2055789 PCI: endpoint: pci-epf-vntb: Return -ENOENT if pci_epc_get_next_free_bar() fails
    9ed082a72c20 power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set
    4ebbb9106aaa power: supply: cpcap-charger: Fix null check for power_supply_get_by_name
    7e903da71f8b clk: xilinx: vcu: unregister pll_post only if registered correctly
    c62c0b6d797e media: v4l2-ctrls: Fix H264 SEPARATE_COLOUR_PLANE check
    2adc945b70c4 clk: davinci: Add NULL check in davinci_lpsc_clk_register()
    e86cc0b9812c mtd: fix possible integer overflow in erase_xfer()
    9745eecf5b69 crypto: marvell/cesa - Fix engine load inaccuracy
    dcd17f4f579b PCI: rockchip-host: Fix "Unexpected Completion" log message
    2e34470f44eb vrf: Drop existing dst reference in vrf_ip6_input_dst
    5e0275f888eb selftests: rtnetlink.sh: remove esp4_offload after test
    b10cfa2de13d netfilter: xt_nfacct: don't assume acct name is null-terminated
    bfc8a82751f6 can: kvaser_usb: Assign netdev.dev_port based on device channel index
    0721467bb069 can: kvaser_pciefd: Store device channel index
    19859cc12acc wifi: brcmfmac: fix P2P discovery failure in P2P peer due to missing P2P IE
    696994a1d655 Reapply "wifi: mac80211: Update skb's control block key in ieee80211_tx_dequeue()"
    9b096abd5454 wifi: mac80211: Check 802.11 encaps offloading in ieee80211_tx_h_select_key()
    fe1ee935285a wifi: mac80211: Don't call fq_flow_idx() for management frames
    d56890533b08 mwl8k: Add missing check after DMA map
    da1be393a75d wifi: rtl8xxxu: Fix RX skb size for aggregation disabled
    7c537709a18c xen/gntdev: remove struct gntdev_copy_batch from stack
    9cd1537036ac net_sched: act_ctinfo: use atomic64_t for three counters
    cab280994498 net/sched: Restrict conditions for adding duplicating netems to qdisc tree
    863b1c70e7f8 um: rtc: Avoid shadowing err in uml_rtc_start()
    8d83f7143ff7 arch: powerpc: defconfig: Drop obsolete CONFIG_NET_CLS_TCINDEX
    5351b8a41623 netfilter: nf_tables: adjust lockdep assertions handling
    7a43cb575217 drm/amd/pm/powerplay/hwmgr/smu_helper: fix order of mask and value
    8f35daf34357 m68k: Don't unregister boot console needlessly
    9053a69abfb5 net/mlx5: Check device memory pointer before usage
    f5a27666c8cf tcp: fix tcp_ofo_queue() to avoid including too much DUP SACK range
    eff3bb53c18c wifi: ath11k: clear initialized flag for deinit-ed srng lists
    2e9f85ee3b46 iwlwifi: Add missing check for alloc_ordered_workqueue
    d76ca8359371 wifi: iwlwifi: Fix memory leak in iwl_mvm_init()
    c73c773b09e3 wifi: rtl818x: Kill URBs before clearing tx status queue
    9a0624ff42df caif: reduce stack size, again
    a7caec2a1b59 bpftool: Fix memory leak in dump_xx_nlmsg on realloc failure
    73fc5d04009d bpf, ktls: Fix data corruption when using bpf_msg_pop_data() in ktls
    c0efe4eae2cc bpf, sockmap: Fix psock incorrectly pointing to sk
    d699e4e6d33b drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed
    4bf712152125 selftests/tracing: Fix false failure of subsystem event test
    3afd514c77f4 staging: nvec: Fix incorrect null termination of battery manufacturer
    f7c2de49fee3 samples: mei: Fix building on musl libc
    90918264362d cpufreq: Init policy->rwsem before it may be possibly used
    d9c7fc2c8ae2 cpufreq: Initialize cpufreq-based frequency-invariance later
    997c36d137e3 cpufreq: intel_pstate: Always use HWP_DESIRED_PERF in passive mode
    f0479e878d4b PM / devfreq: Check governor before using governor->name
    35a490ea5a80 arm64: dts: imx8mn-beacon: Fix HS400 USDHC clock speed
    10c0fbd5ad66 arm64: dts: imx8mm-beacon: Fix HS400 USDHC clock speed
    0008ec694e2b ARM: dts: imx6ul-kontron-bl-common: Fix RTS polarity for RS485 interface
    a789256941ab arm: dts: ti: omap: Fixup pinheader typo
    ae08cd98fef4 usb: early: xhci-dbc: Fix early_ioremap leak
    c6fdcd40390e Revert "vmci: Prevent the dispatching of uninitialized payloads"
    a891b456ba2b pps: fix poll support
    a85dc8385749 vmci: Prevent the dispatching of uninitialized payloads
    3290f62f23fa staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc()
    76f1842cdc91 usb: misc: apple-mfi-fastcharge: Make power supply names unique
    4986c1e82e93 ARM: dts: vfxxx: Correctly use two tuples for timer address
    b6b551196f5b selftests: Fix errno checking in syscall_user_dispatch test
    cfb5e5582f69 ASoC: ops: dynamically allocate struct snd_ctl_elem_value
    fe18d9f14f4c ASoC: soc-dai: tidyup return value of snd_soc_xlate_tdm_slot_mask()
    bec8109f957a Revert "fs/ntfs3: Replace inode_trylock with inode_lock"
    14922f0cc92e hfsplus: remove mutex_lock check in hfsplus_free_extents
    92c50b2d5a57 fs_context: fix parameter name in infofc() macro
    7becf31ed946 ASoC: Intel: fix SND_SOC_SOF dependencies
    c845b2e787d8 ethernet: intel: fix building with large NR_CPUS
    6dd7e3fc9246 usb: phy: mxs: disconnect line when USB charger is attached
    c53baa6a134c usb: chipidea: add USB PHY event
    6005cea17d04 ALSA: hda: Add missing NVIDIA HDA codec IDs
    988be12b610d comedi: comedi_test: Fix possible deletion of uninitialized timers
    fa6ce4a9cc9f jfs: reject on-disk inodes of an unsupported type
    6b80d98a9710 x86/bugs: Fix use of possibly uninit value in amd_check_tsa_microcode()
    6d40dd35a932 usb: typec: tcpm: apply vbus before data bringup in tcpm_src_attach
    92370ce7071c usb: typec: tcpm: allow switching to mode accessory to mux properly
    2f7fbb19d983 usb: typec: tcpm: allow to use sink in accessory mode
    4991f824128b mm/zsmalloc: do not pass __GFP_MOVABLE if CONFIG_COMPACTION=n
    98872a934ea6 nilfs2: reject invalid file types when reading inodes
    1d6f02700d75 gve: Fix stuck TX queue for DQ queue format
    ae07af3d1f8e e1000e: ignore uninitialized checksum word on tgp
    30e2871bd4b3 e1000e: disregard NVM checksum on tgp when valid checksum bit is not set
    8aa46b2428b8 dpaa2-switch: Fix device reference count leak in MAC endpoint handling
    30f7d3d90f41 dpaa2-eth: Fix device reference count leak in MAC endpoint handling
    094a94e3b237 ALSA: hda/realtek - Add mute LED support for HP Pavilion 15-eg0xxx
    83f64bb37197 bus: fsl-mc: Fix potential double device reference in fsl_mc_get_endpoint()
    c742b06302a0 i2c: virtio: Avoid hang by using interruptible completion wait
    d05ec13aa3eb i2c: qup: jump out of the loop in case of timeout
    ec1aa39ea7f9 platform/x86: ideapad-laptop: Fix kbd backlight not remembered among boots
    a8e8b3733ebd net: hns3: fixed vf get max channels bug
    d739b876c161 net: hns3: disable interrupt when ptp init failed
    f1d943048fd2 net: hns3: fix concurrent setting vlan filter issue
    ab905a2e982e net/sched: sch_qfq: Avoid triggering might_sleep in atomic context in qfq_delete_class
    186942d19c02 net: appletalk: Fix use-after-free in AARP proxy probe
    4640c4dc604d i40e: report VF tx_dropped with tx_errors instead of tx_discards
    8d9184cce2bf i40e: Add rx_missed_errors for buffer exhaustion
    c8aefc5994eb regmap: fix potential memory leak of regmap_bus
    cda04854614f interconnect: qcom: sc7280: Add missing num_links to xm_pcie3_1 node
    532fbdc74a4e RDMA/core: Rate limit GID cache warning messages
    ca9bef9ba1a6 regulator: core: fix NULL dereference on unbind due to stale coupling data
    664e5a6f541f Input: gpio-keys - fix a sleep while atomic with PREEMPT_RT
    b62c8ee41b81 x86: Pin task-stack in __get_wchan()
    e43191f9efa3 x86: Fix __get_wchan() for !STACKTRACE
    5ce1264b586d sched: Add wrapper for get_wchan() to keep task blocked
    b52e53a44a43 x86: Fix get_wchan() to support the ORC unwinder
    4dba44333a11 bpf, sockmap: Fix panic when calling skb_linearize
    7722142d7265 platform/x86: think-lmi: Fix kobject cleanup
    f110c609b0c5 powercap: intel_rapl: Do not change CLAMPING bit if ENABLE bit cannot be changed
    7d2c4a0fee61 mm/vmalloc: leave lazy MMU mode on PTE mapping error
    ee093910b9f8 ASoC: fsl_sai: Force a software reset when starting in consumer mode
    d2ab0bb400cc usb: dwc3: qcom: Don't leave BCR asserted
    5e2851d5e3cf usb: musb: fix gadget state on disconnect
    8594a4e87977 usb: musb: Add and use inline functions musb_{get,set}_state
    7a7178837bed usb: hub: Fix flushing of delayed work used for post resume purposes
    1a6fee8d8295 usb: hub: Fix flushing and scheduling of delayed work that tunes runtime pm
    e38ca702130b usb: hub: fix detection of high tier USB3 devices behind suspended hubs
    36fecd740de2 clone_private_mnt(): make sure that caller has CAP_SYS_ADMIN in the right userns
    9ef510db1362 sched: Change nr_uninterruptible type to unsigned long
    850226aef8d2 net/sched: Return NULL when htb_lookup_leaf encounters an empty rbtree
    2a4b9df3cb50 net: bridge: Do not offload IGMP/MLD messages
    047b61a24d7c net: vlan: fix VLAN 0 refcount imbalance of toggling filtering during runtime
    9aa9261bf1fe Bluetooth: L2CAP: Fix attempting to adjust outgoing MTU
    6e4eec86fe5f ipv6: mcast: Delay put pmc->idev in mld_del_delrec()
    984a2fb6f2ed net/mlx5: Correctly set gso_size when LRO is used
    88576404084d net/mlx5e: Add support to klm_umr_wqe
    9737501f26b6 lib: bitmap: Introduce node-aware alloc API
    ce2f1b5d0f13 Bluetooth: SMP: Fix using HCI_ERROR_REMOTE_USER_TERM on timeout
    edf3a1828373 Bluetooth: SMP: If an unallowed command is received consider it a failure
    3a4eca2a1859 Bluetooth: Fix null-ptr-deref in l2cap_sock_resume_cb()
    a6a238c4126e usb: net: sierra: check for no status endpoint
    4eb5cc48399f hwmon: (corsair-cpro) Validate the size of the received input buffer
    22bff8038efb selftests: net: increase inter-packet timeout in udpgro.sh
    db262843d1ce selftests: udpgro: report error when receive failed
    46c321f45c87 nvme: fix misaccounting of nvme-mpath inflight I/O
    4256a483fe58 smb: client: fix use-after-free in cifs_oplock_break
    4b5022b649ab pinctrl: mediatek: moore: check if pin_desc is valid before use
    8ba6c2362b85 rpl: Fix use-after-free in rpl_do_srh_inline().
    c6df79400014 net/sched: sch_qfq: Fix race condition on qfq_aggregate
    ca9850df52cc net: emaclite: Fix missing pointer increment in aligned_read()
    97303e541e12 bpf: Reject %p% format string in bprintf-like helpers
    020eed5681d0 comedi: Fix initialization of data for instructions that write to subdevice
    c53570e62b5b comedi: Fix use of uninitialized data in insn_rw_emulate_bits()
    757127050b43 comedi: Fix some signed shift left operations
    69dc06b95145 comedi: Fail COMEDI_INSNLIST ioctl if n_insns is too large
    73f34d609397 comedi: das6402: Fix bit shift out of bounds
    b3c95fa508e5 comedi: das16m1: Fix bit shift out of bounds
    c593215385f0 comedi: aio_iiro_16: Fix bit shift out of bounds
    29ef03e5b844 comedi: pcl812: Fix bit shift out of bounds
    eda041948635 iio: adc: stm32-adc: Fix race in installing chained IRQ handler
    2f10149ae596 iio: adc: max1363: Reorder mode_list[] entries
    8ff32ec36adb iio: adc: max1363: Fix MAX1363_4X_CHANS/MAX1363_8X_CHANS[]
    166afe964e84 soc: aspeed: lpc-snoop: Don't disable channels that aren't enabled
    fe632e8fc184 soc: aspeed: lpc-snoop: Cleanup resources in stack-order
    5fd9150de773 pmdomain: governor: Consider CPU latency tolerance from pm_domain_cpu_gov
    ecb1a74e41b5 mmc: sdhci_am654: Workaround for Errata i2312
    4d6c8f3e13af mmc: sdhci-pci: Quirk for broken command queuing on Intel GLK-based Positivo models
    0886c420da61 mmc: bcm2835: Fix dma_unmap_sg() nents value
    0a8432ef8cd9 memstick: core: Zero initialize id_reg in h_memstick_read_dev_id()
    6ef428a6e972 isofs: Verify inode mode when loading from disk
    24861ef8b517 dmaengine: nbpfaxi: Fix memory corruption in probe()
    052af0c58b5b af_packet: fix soft lockup issue caused by tpacket_snd()
    9e3219d33907 af_packet: fix the SO_SNDTIMEO constraint not effective on tpacked_snd()
    e98c1dfae40e phonet/pep: Move call to pn_skb_get_dst_sockaddr() earlier in pep_sock_accept()
    ca60064ea03f tracing: Add down_write(trace_event_sem) when adding trace event
    f10923b8d32a HID: core: do not bypass hid_hw_raw_request
    aefa6e92d9b4 HID: core: ensure __hid_request reserves the report ID as the first byte
    7fa83d004337 HID: core: ensure the allocated report buffer can contain the reserved report ID
    6c6ae150dbd8 pch_uart: Fix dma_sync_sg_for_device() nents value
    d83feb2854d8 Input: xpad - set correct controller type for Acer NGR200
    8039721de433 thunderbolt: Fix bit masking in tb_dp_port_set_hops()
    0bcdbf953523 i2c: stm32: fix the device used for the DMA map
    15a872068799 usb: gadget: configfs: Fix OOB read on empty string write
    76157b526d17 USB: serial: ftdi_sio: add support for NDI EMGUIDE GEMINI
    660b9dc0fd3d USB: serial: option: add Foxconn T99W640
    d374b477ae95 USB: serial: option: add Telit Cinterion FE910C04 (ECM) composition
    cdcb0ffd6448 phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode

(From OE-Core rev: bd8a3bdbd78f806b4a3077de8ae7aa3bc00511fc)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
5abe7f3283 linux-yocto/5.15: update to v5.15.189
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    c79648372d02 Linux 5.15.189
    3e4028ef31b6 rseq: Fix segfault on registration when rseq_cs is non-zero
    4b934b78041f x86: Fix X86_FEATURE_VERW_CLEAR definition
    562f207d0a91 x86/mm: Disable hugetlb page table sharing on 32-bit
    8312a1ccff15 vhost-scsi: protect vq->log_used with vq->mutex
    02fd0c7d0d14 Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
    1b297ab6f38c HID: quirks: Add quirk for 2 Chicony Electronics HP 5MP Cameras
    68c0e3adf09a HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY
    95f184337eb4 vt: add missing notification when switching back to text mode
    f174d73b3fb0 HID: lenovo: Add support for ThinkPad X1 Tablet Thin Keyboard Gen2
    acc94849ebb9 net: usb: qmi_wwan: add SIMCom 8230C composition
    78fe114f13a3 um: vector: Reduce stack usage in vector_eth_configure()
    8ea9a9fb79a9 atm: idt77252: Add missing `dma_map_error()`
    8d672a1a6bfc bnxt_en: Set DMA unmap len correctly for XDP_REDIRECT
    0118fe8fbe2b bnxt_en: Fix DCB ETS validation
    8d11e48b1276 net: ll_temac: Fix missing tx_pending check in ethtools_set_ringparam()
    0da557bbeae2 can: m_can: m_can_handle_lost_msg(): downgrade msg lost in rx message to debug level
    6b08605e12b3 net: phy: microchip: limit 100M workaround to link-down events on LAN88xx
    b2f5dfa87367 net: appletalk: Fix device refcount leak in atrtr_create()
    a3aea97d5596 netfilter: flowtable: account for Ethernet header in nf_flow_pppoe_proto()
    df525911974c ksmbd: fix a mount write count leak in ksmbd_vfs_kern_path_locked()
    fedd65b58469 smb: server: make use of rdma_destroy_qp()
    cb121c47f364 nbd: fix uaf in nbd_genl_connect() error path
    10c6021a609d raid10: cleanup memleak at raid10_make_request
    48da050b4f54 md/raid1: Fix stack memory use after return in raid1_reshape
    b24f65c18454 wifi: zd1211rw: Fix potential NULL pointer dereference in zd_mac_tx_to_dev()
    09064e6d6597 dma-buf: fix timeout handling in dma_resv_wait_timeout v2
    419192cb11f2 dma-buf: use new iterator in dma_resv_wait_timeout
    84df80b4c704 dma-buf: add dma_resv_for_each_fence_unlocked v8
    3435a2048972 usb: dwc3: Abort suspend on soft disconnect failure
    c1cb5c166fec usb: cdnsp: Fix issue with CV Bad Descriptor test
    ba3a2e446fc7 usb: cdnsp: Replace snprintf() with the safer scnprintf() variant
    2991f28da681 usb:cdnsp: remove TRB_FLUSH_ENDPOINT command
    9a433cd87236 Input: xpad - support Acer NGR 200 Controller
    e9b894ca7589 xhci: Disable stream for xHC controller with XHCI_BROKEN_STREAMS
    e262ff8d634c usb: xhci: quirk for data loss in ISOC transfers
    59aca35c69c2 xhci: Allow RPM on the USB controller (1022:43f7) by default
    982beb7582c1 virtio-net: ensure the received length does not exceed allocated size
    c47c83f6f2ec netlink: make sure we allow at least one dump skb
    ccc9da90af65 netlink: Fix rmem check in netlink_broadcast_deliver().
    a2504279841f pwm: mediatek: Ensure to disable clocks in error path
    d7684190951e RDMA/mlx5: Fix vport loopback for MPV device
    e774a693b7ff btrfs: use btrfs_record_snapshot_destroy() during rmdir
    21ab2c7c9794 btrfs: propagate last_unlink_trans earlier when doing a rmdir
    d216d5a277de Revert "ACPI: battery: negate current when discharging"
    a5012673d497 usb: gadget: u_serial: Fix race condition in TTY wakeup
    2f4df5d07c77 drm/gem: Fix race in drm_gem_handle_create_tail()
    ef841f8e4e1f drm/sched: Increment job count before swapping tail spsc queue
    cb4b08a095b1 pinctrl: qcom: msm: mark certain pins as invalid for interrupts
    0c1ad5738526 gre: Fix IPv6 multicast route creation.
    e3154a48fd0b x86/mce: Make sure CMCI banks are cleared during shutdown on Intel
    9f4431ba8501 x86/mce: Don't remove sysfs if thresholding sysfs init fails
    9cd4fa64814b x86/mce/amd: Fix threshold limit reset
    ae0e082687b2 xen: replace xen_remap() with memremap()
    f98bf80b20f4 jfs: fix null ptr deref in dtInsertEntry
    65ad600b9bde bpf, sockmap: Fix skb refcnt race after locking changes
    2499fa286fb0 aoe: avoid potential deadlock at set_capacity
    39d5137085a6 thermal/int340x_thermal: handle data_vault when the value is ZERO_SIZE_PTR
    e37e3b6cc8dc bpf: fix precision backtracking instruction iteration
    f5e72b7824d0 rxrpc: Fix oops due to non-existence of prealloc backlog struct
    d30910170f7e ice: safer stats processing
    32caa50275cc fs/proc: do_task_stat: use __for_each_thread()
    25452638f133 net/sched: Abort __tc_modify_qdisc if parent class does not exist
    7f1cad84ac1a atm: clip: Fix NULL pointer dereference in vcc_sendmsg()
    5641019dfbae atm: clip: Fix infinite recursive call of clip_push().
    1c075e88d585 atm: clip: Fix memory leak of struct clip_vcc.
    3251ce3979f4 atm: clip: Fix potential null-ptr-deref in to_atmarpd().
    66f9065c1c7d net: phy: smsc: Fix link failure in forced mode with Auto-MDIX
    29a5de38fa1e net: phy: smsc: Fix Auto-MDIX configuration when disabled by strap
    0ba1021a8302 vsock: Fix IOCTL_VM_SOCKETS_GET_LOCAL_CID to check also `transport_local`
    36a439049b34 vsock: Fix transport_* TOCTOU
    80d7dc15805a vsock: Fix transport_{g2h,h2g} TOCTOU
    dab8ded2e5ff tipc: Fix use-after-free in tipc_conn_close().
    fd69af061010 netlink: Fix wraparounds of sk->sk_rmem_alloc.
    552a066477cb fix proc_sys_compare() handling of in-lookup dentries
    c0aec35f861f perf: Revert to requiring CAP_SYS_ADMIN for uprobes
    2df3e265a301 ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode
    87825fbd1e17 drm/exynos: exynos7_drm_decon: add vblank check in IRQ handling

(From OE-Core rev: b3f7c8cd4d56120e96b2b12f5a1eb76dc65f682b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Bruce Ashfield
9a1d2ff9d0 linux-yocto/5.15: update to v5.15.188
Updating linux-yocto/5.15 to the latest korg -stable release that comprises
the following commits:

    89950c454265 Linux 5.15.188
    cd0d988f7dd7 x86/CPU/AMD: Properly check the TSA microcode
    2f693b607545 Linux 5.15.187
    21953dde398d x86/process: Move the buffer clearing before MONITOR
    c334ae4a545a KVM: SVM: Advertise TSA CPUID bits to guests
    3d6513b51b72 KVM: x86: add support for CPUID leaf 0x80000021
    f2b75f1368af x86/bugs: Add a Transient Scheduler Attacks mitigation
    04304f5fe3e3 x86/bugs: Rename MDS machinery to something more generic
    7be0d1ea71f5 usb: typec: displayport: Fix potential deadlock
    5bcca95ca6d2 platform/x86: think-lmi: Create ksets consecutively
    d01c737efd81 Logitech C-270 even more broken
    475f89e1f9bd i2c/designware: Fix an initialization issue
    b32dfd00bd51 usb: cdnsp: do not disable slot for disabled slot
    969941ca9f1e xhci: dbc: Flush queued requests before stopping dbc
    45f2cd76bc50 xhci: dbctty: disable ECHO flag by default
    d8ccb3d08159 platform/x86: dell-wmi-sysman: Fix class device unregistration
    8ac2cb8d809b platform/x86: think-lmi: Fix class device unregistration
    846baaa88a2d dpaa2-eth: fix xdp_rxq_info leak
    3f0b6236e11f net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats
    b2e1b676711e dpaa2-eth: Update SINGLE_STEP register access
    8e4d49fc2617 dpaa2-eth: Update dpni_get_single_step_cfg command
    0ab03e2616a1 ethernet: atl1: Add missing DMA mapping error checks and count errors
    94a09ec93e93 NFSv4/flexfiles: Fix handling of NFS level errors in I/O
    576a6739e08a drm/v3d: Disable interrupts before resetting the GPU
    56738cbac3bb regulator: gpio: Fix the out-of-bounds access to drvdata::gpiods
    e772f8f5c82d regulator: gpio: Add input_supply support in gpio_regulator_config
    1728e17762b9 mmc: core: sd: Apply BROKEN_SD_DISCARD quirk earlier
    bee6329e5fd5 rcu: Return early if callback is not specified
    68d3417305ee mtd: spinand: fix memory leak of ECC engine conf
    ab1e8491c19e ACPICA: Refuse to evaluate a method if arguments are missing
    46b47d4b06fa wifi: ath6kl: remove WARN on bad firmware input
    a856228c44dc wifi: mac80211: drop invalid source address OCB frames
    1129e0e0a833 scsi: target: Fix NULL pointer dereference in core_scsi3_decode_spec_i_port()
    161ff4102038 powerpc: Fix struct termio related ioctl macros
    ce5f6b2540d6 ata: pata_cs5536: fix build on 32-bit UML
    ba5104b9b3fa ALSA: sb: Force to disable DMAs once when DMA mode is changed
    73337c003f3d ALSA: sb: Don't allow changing the DMA mode during operations
    5deab0fa6cfd drm/msm: Fix a fence leak in submit error path
    e269f29e9395 net/sched: Always pass notifications when child class becomes empty
    7bf497c2ad87 nui: Fix dma_mapping_error() check
    2b952dbb32fe rose: fix dangling neighbour pointers in rose_rt_device_down()
    1fba51f021b2 enic: fix incorrect MTU comparison in enic_change_mtu()
    52b4b2e85e63 amd-xgbe: align CL37 AN sequence as per databook
    7edff1bbdd3a lib: test_objagg: Set error message in check_expect_hints_stats()
    f5874e0dea9e igc: disable L1.2 PCI-E link substate to avoid performance issue
    f10af3426144 drm/i915/gt: Fix timeline left held on VMA alloc error
    92c2d914b533 platform/x86: dell-wmi-sysman: Fix WMI data block retrieval in sysfs callbacks
    4caf6a93ac39 drm/i915/selftests: Change mock_request() to return error pointers
    54f62d542d2c spi: spi-fsl-dspi: Clear completion counter before initiating transfer
    4c315caf16e8 drm/exynos: fimd: Guard display clock control with runtime PM calls
    a1950bb9edfa btrfs: fix missing error handling when searching for inode refs during log replay
    9f0771b8cc4a RDMA/mlx5: Fix CC counters query for MPV
    abfdb3b4ce2b scsi: ufs: core: Fix spelling of a sysfs attribute name
    1afb58c7e32b scsi: qla4xxx: Fix missing DMA mapping error in qla4xxx_alloc_pdu()
    9ceff7ded1e9 scsi: qla2xxx: Fix DMA mapping test in qla24xx_get_port_database()
    8846fd02c98d NFSv4/pNFS: Fix a race to wake on NFS_LAYOUT_DRAIN
    b92397ce9674 nfs: Clean up /proc/net/rpc/nfs when nfs_fs_proc_net_init() fails.
    00ed215f5938 RDMA/mlx5: Initialize obj_event->obj_sub_list before xa_insert
    16a16c901a75 platform/mellanox: mlxbf-tmfifo: fix vring_desc.len assignment
    944ced3e4a09 mtk-sd: reset host->mrq on prepare_data() error
    48bf4f3dfcda mtk-sd: Prevent memory corruption from DMA map failure
    2580162c4ebf mtk-sd: Fix a pagefault in dma_unmap_sg() for not prepared data
    621d5a3ef023 usb: typec: altmodes/displayport: do not index invalid pin_assignments
    aab032d171e7 Revert "mmc: sdhci: Disable SD card clock before changing parameters"
    3d07fd496513 mmc: sdhci: Add a helper function for dump register in dynamic debug mode
    2d44723a091b vsock/vmci: Clear the vmci transport packet properly when initializing it
    1def00386211 rtc: cmos: use spin_lock_irqsave in cmos_interrupt
    8516edd36397 ARM: 9354/1: ptrace: Use bitfield helpers
    143842584c12 btrfs: don't drop extent_map for free space inode on write error
    6a8aa6420ad3 arm64: Restrict pagetable teardown to avoid false warning
    6d486f1e3818 Revert "ipv6: save dontfrag in cork"
    9f69eb424aa2 s390: Add '-std=gnu11' to decompressor and purgatory CFLAGS
    707030cb1c66 s390/entry: Fix last breaking event handling in case of stack corruption
    9e2976e4e326 media: uvcvideo: Rollback non processed entities on error
    45d1aa5674d6 PCI: hv: Do not set PCI_COMMAND_MEMORY to reduce VM boot time
    34d3e10ab905 drm/amd/display: Add null pointer check for get_first_active_display()
    53dee8fd76a6 drm/bridge: cdns-dsi: Wait for Clk and Data Lanes to be ready
    62a7143dce1c drm/bridge: cdns-dsi: Check return value when getting default PHY config
    49a421180aaa drm/bridge: cdns-dsi: Fix connecting to next bridge
    6c3056ed0b73 drm/bridge: cdns-dsi: Fix the clock variable for mode_valid()
    105b0a0c7e65 drm/amdkfd: Fix race in GWS queue scheduling
    b0dc5d6da1da drm/udl: Unregister device before cleaning up on disconnect
    c7fc459ae6f9 drm/tegra: Fix a possible null pointer dereference
    21dfbd590734 drm/tegra: Assign plane type before registration
    03b68435fbe3 HID: wacom: fix kobject reference count leak
    796abf9f710a HID: wacom: fix memory leak on sysfs attribute creation failure
    ca7b6d00a713 HID: wacom: fix memory leak on kobject creation failure
    896bc23e1e25 btrfs: update superblock's device bytes_used when dropping chunk
    2826ef05854d dm-raid: fix variable in journal device check
    78f4cf0e81b7 Bluetooth: L2CAP: Fix L2CAP MTU negotiation
    34cbe5543bec dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive
    f61db0a69d0b staging: rtl8723bs: Avoid memset() in aes_cipher() and aes_decipher()
    9f7fd60fb8f7 net: selftests: fix TCP packet checksum
    26248d5d68c8 atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister().
    6b908e85a739 net: enetc: Correct endianness handling in _enetc_rd_reg64
    8898080d6143 um: ubd: Add missing error check in start_io_thread()
    a4aa7c001043 vsock/uapi: fix linux/vm_sockets.h userspace compilation errors
    1bc8c7b8e5b9 af_unix: Don't set -ECONNRESET for consumed OOB skb.
    2afcde1b3676 wifi: mac80211: fix beacon interval calculation overflow
    1197abb1ee3b libbpf: Fix null pointer dereference in btf_dump__free on allocation failure
    6b4ce195552b attach_recursive_mnt(): do not lock the covering tree when sliding something under it
    c3fb926abe90 ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()
    9199e8cb75f1 atm: clip: prevent NULL deref in clip_push()
    ad1bdd24a02d s390/pkey: Prevent overflow in size calculation for memdup_user()
    56e54021b77c i2c: robotfuzz-osif: disable zero-length read messages
    d6bc3e078509 i2c: tiny-usb: disable zero-length read messages
    9b084de34f1a platform/x86: ideapad-laptop: use usleep_range() for EC polling
    d0537c51b4a1 dummycon: Trigger redraw when switching consoles with deferred takeover
    acd41ac591b7 tty: vt: make consw::con_switch() return a bool
    a74907cdd18d tty: vt: sanitize arguments of consw::con_clear()
    d2781a0ba98c tty: vt: make init parameter of consw::con_init() a bool
    de2871093fa3 vgacon: remove unneeded forward declarations
    72dc92531df9 vgacon: switch vgacon_scrolldelta() and vgacon_restore_screen()
    4b0b22dfe4d6 tty/vt: consolemap: rename and document struct uni_pagedir
    3a88320314ab fbcon: delete a few unneeded forward decl
    c8ea0f204cf4 uio_hv_generic: Align ring size to system page
    a955c1b360b3 uio_hv_generic: Query the ringbuffer size for device
    a8c1b5e33a1c Drivers: hv: vmbus: Add utility function for querying ring size
    101c4437f6fb Drivers: hv: Rename 'alloced' to 'allocated'
    1f2f2f56f59e f2fs: don't over-report free space or inodes in statvfs
    fbcbbf2ebe5c media: imx-jpeg: Drop the first error frames
    8701675abab4 clk: ti: am43xx: Add clkctrl data for am43xx ADC1
    9f55faa41eac media: omap3isp: use sgtable-based scatterlist wrappers
    78b7d79b8626 media: davinci: vpif: Fix memory leak in probe error path
    c3705c82b740 jfs: validate AG parameters in dbMount() to prevent crashes
    4789cea3f8d4 fs/jfs: consolidate sanity checking in dbMount
    8c8d1dcc726a ovl: Check for NULL d_inode() in ovl_dentry_upper()
    42923c6e9cd7 ceph: fix possible integer overflow in ceph_zero_objects()
    bfdbc927d165 ALSA: usb-audio: Add a quirk for Lenovo Thinkpad Thunderbolt 3 dock
    da01b76bb66a ALSA: hda: Add new pci id for AMD GPU display HD audio controller
    44aa0cdaed5f ALSA: hda: Ignore unsol events for cards being shut down
    56846793f105 usb: typec: displayport: Receive DP Status Update NAK request exit dp altmode
    cd414d7d7077 usb: cdc-wdm: avoid setting WDM_READ for ZLP-s
    383d33f3aeb7 usb: Add checks for snprintf() calls in usb_alloc_dev()
    780e48c99f66 usb: common: usb-conn-gpio: use a unique name for usb connector device
    9c905fdbba68 tty: serial: uartlite: register uart driver in init
    6f77e344515b usb: potential integer overflow in usbg_make_tpg()
    5cb3cb3db317 usb: dwc2: also exit clock_gating when stopping udc while suspended
    fd72dd6a82e2 coresight: Only check bottom two claim bits
    be620f25161f um: Add cmpxchg8b_emu and checksum functions to asm-prototypes.h
    82ddbbc98949 iio: pressure: zpa2326: Use aligned_s64 for the timestamp
    1f25f2d3fa29 bcache: fix NULL pointer in cache_set_flush()
    8ddce5eab6c3 md/md-bitmap: fix dm-raid max_write_behind setting
    477c044309e6 dmaengine: xilinx_dma: Set dma_device directions
    566487aad232 ksmbd: allow a filename to contain special characters on SMB3.1.1 posix extension
    d8322d861a6f hwmon: (pmbus/max34440) Fix support for max34451
    bbd1511e27ee leds: multicolor: Fix intensity setting while SW blinking
    a23b82a0693b mfd: max14577: Fix wakeup source leaks on device unbind
    852a2bda152a mailbox: Not protect module_put with spin_lock_irqsave
    86be8c7409b7 NFSv4.2: fix listxattr to return selinux security label
    a35f2168961e NFSv4: Always set NLINK even if the server doesn't support it
    80251a15ed61 cifs: Fix cifs_query_path_info() for Windows NT servers

(From OE-Core rev: 6b6a51e73e89903e5766175c54fad23cc4a1721b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:20 -07:00
Saravanan
2b691e84d8 cmake: fix CVE-2025-9301
Reference:
	https://nvd.nist.gov/vuln/detail/CVE-2025-9301
	https://gitlab.kitware.com/cmake/cmake/-/issues/27135

Upstream-patch:
	37e27f71bc

(From OE-Core rev: 0aacc4298f2cdaaf6d19a58e6e134b6a6ecc5097)

Signed-off-by: Saravanan <saravanan.kadambathursubramaniyam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Rajeshkumar Ramasamy
41ae63737b glib-networking: fix CVE-2025-60019
glib-networking's OpenSSL backend fails to properly check the return
value of memory allocation routines. An out of memory condition could
potentially result in writing to an invalid memory location.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-60019

Upstream-patch:
70df675dd4

(From OE-Core rev: eda5838fcbb8c725e6e39d6e72b63c33f6c44446)

Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Rajeshkumar Ramasamy
ca6745e603 glib-networking: fix CVE-2025-60018
glib-networking's OpenSSL backend fails to properly check the return
value of a call to BIO_write(), resulting in an out of bounds read.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-60018

Upstream-patch:
4dd540505d

(From OE-Core rev: bd11f18909b5946e4570e0eba9b3cb9b47791dc1)

Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-24 06:47:19 -07:00
Sunil Dora
d847c8aac1 glibc: : PTHREAD_COND_INITIALIZER compatibility with pre-2.41 versions (bug 32786)
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=dbc5a50d12eff4cb3f782129029d04b8a76f58e7
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002282.html

(From OE-Core rev: 8f1000d9dad5e51f08a40b0f6650204425cc8efb)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
1bf7d50410 glibc: nptl Use all of g1_start and g_signals
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=91bb902f58264a2fd50fbce8f39a9a290dd23706
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002283.html

(From OE-Core rev: 4593e800b832d740d0b63ddd4b5c948c564116b2)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
b48d3ea982 glibc: nptl rename __condvar_quiesce_and_switch_g1
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=4b79e27a5073c02f6bff9aa8f4791230a0ab1867
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002281.html

(From OE-Core rev: 0a9ccd040037c12aa2e7fbc2213ca60b30dafcc4)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
42b3adafcc glibc: nptl Fix indentation
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=ee6c14ed59d480720721aaacc5fb03213dc153da
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002280.html

(From OE-Core rev: f54e082df2f07893f66183089518f98cb792f22e)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
2105de9c82 glibc: nptl Use a single loop in pthread_cond_wait instaed of a nested loop
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=929a4764ac90382616b6a21f099192b2475da674
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002279.html

(From OE-Core rev: 75bbc8cb3a94640120d778916abb2edf78b89fd0)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
dd624cec3b glibc: Remove g_refs from condition variables
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=c36fc50781995e6758cae2b6927839d0157f213c
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002278.html

(From OE-Core rev: 1972b6776fa8a23b9d373d516ace32e136e9058f)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
2fdbec72e5 glibc: nptl Remove unnecessary quadruple check in pthread_cond_wait
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=4f7b051f8ee3feff1b53b27a906f245afaa9cee1
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002276.html

(From OE-Core rev: e6cac5aef751d698327f6ebee966462644c6c6a8)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
7b6bc5b49c glibc: nptl Remove unnecessary catch-all-wake in condvar group switch
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=b42cc6af11062c260c7dfa91f1c89891366fed3e
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002274.html

(From OE-Core rev: 18b4f22aaae19cd0efb21433f0c23c5580246a2e)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
0c1db5ac27 glibc: nptl Update comments and indentation for new condvar implementation
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=0cc973160c23bb67f895bc887dd6942d29f8fee3
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002275.html

(From OE-Core rev: bf3d91124c2584b9d3000098d1f81d9459d143fc)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
8f20ad5f77 glibc: pthreads NPTL lost wakeup fix 2
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
  [1] https://sourceware.org/git/?p=glibc.git;a=commit;h=1db84775f831a1494993ce9c118deaf9537cc50a
  [2] https://sourceware.org/pipermail/libc-stable/2025-July/002277.html

(From OE-Core rev: 4d57f7c82ccb64e2bd2a2371ef18bdc5a4b718e3)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Sunil Dora
74672d72c0 glibc: Remove partial BZ#25847 backport patches
To facilitate a clean backport of the full 10-commit series
addressing the pthread condition variable lost wakeup issue
(BZ#25847) in glibc 2.35, remove the existing 8 patches that
were applied as a partial backport.

The previous partial backport excluded commit:
c36fc50781995e6758cae2b6927839d0157f213c ("nptl: Remove
g_refs from condition variables") based on guidance from
glibc maintainer Florian Weimer(#comment #74)

This exclusion was recommended for stable branches to
avoid altering the layout of pthread_cond_t, which could
introduce ABI incompatibilities. Additionally, the dependent
commit dbc5a50d12eff4cb3f782129029d04b8a76f58e7 was not needed
in the partial backport.

To align with upstream mainline, per maintainer Carlos O'Donell
(comment #75), apply the complete 10-commit series for consistency.

By removing these patches first, we ensure the subsequent
application of the full 10 commits results in cleaner, more
reviewable changes without intermixed conflicts or overlaps.

Removed patches and corresponding upstream commits:
- 0026-PR25847-1.patch: 1db84775f831a1494993ce9c118deaf9537cc50a
- 0026-PR25847-2.patch: 0cc973160c23bb67f895bc887dd6942d29f8fee3
- 0026-PR25847-3.patch: b42cc6af11062c260c7dfa91f1c89891366fed3e
- 0026-PR25847-4.patch: 4f7b051f8ee3feff1b53b27a906f245afaa9cee1
- 0026-PR25847-5.patch: 929a4764ac90382616b6a21f099192b2475da674
- 0026-PR25847-6.patch: ee6c14ed59d480720721aaacc5fb03213dc153da
- 0026-PR25847-7.patch: 4b79e27a5073c02f6bff9aa8f4791230a0ab1867
- 0026-PR25847-8.patch: 91bb902f58264a2fd50fbce8f39a9a290dd23706

Bug reference: https://sourceware.org/bugzilla/show_bug.cgi?id=25847
This change prepares the branch for the full backport in follow-up commits.

(From OE-Core rev: 9881dd70305b87945e9649d744bcbc40a1a7b780)

Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
f245c680a8 binutils: patch CVE-2025-11083
Pick patch per link in NVD report.

(From OE-Core rev: 99879f41af7272e597c9a8c4c0260d1b690f9051)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
2325a1dbc5 binutils: patch CVE-2025-11082
Pick patch per link in NVD report.

(From OE-Core rev: cdc458b5dd21614058aac56de68a272201283141)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:24 -07:00
Peter Marko
2952d99f0f qemu: patch CVE-2024-8354
Pick commit per [1].

(From OE-Core rev: bebd1b24473e3480ae6c4ae2897fbfdf4942ea11)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-17 07:27:23 -07:00
Peter Marko
962d08fb40 vulnerabilities: update nvdcve file name
The filename is outdated as its version was already bumped and there are
also different files for different feed choices.
Use glob to match any available file.

(From yocto-docs rev: fca48e1239950ccf10f6b1b805c5734104144ded)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Lee Chee Yang
425363de54 migration-guides: add release notes for 4.0.30
(From yocto-docs rev: 2999dd8be2534d3d5b2cfa28be703d07fffa795c)

Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit e89c95b167c24cfb9c1d5d548a26872393ca2fee)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Steve Sakoman
e5fb48f371 oeqa/sdk/cases/buildcpio.py: use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html

(From OE-Core rev: 0d11c9103f072841baf39166efc133f2a20fc4dc)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Steve Sakoman
259d81175f selftest/cases/meta_ide.py: use use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html

(From OE-Core rev: 97939775d2b81af392a2f98c922165763ff0ae5f)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Gyorgy Sarvari
eca1e13385 conf/bitbake.conf: use gnu mirror instead of main server
ftp.gnu.org is the main server of the GNU project, however download speed
can vary greatly based on one's location.

Using ftpmirror.gnu.org should redirect the request to the closest up-to-date mirror,
which should result sometimes in significantly faster download speed, depending
on one's location. This should also distribute the traffic more across the mirrors.

This information was sourced from https://www.gnu.org/prep/ftp.html .

(From OE-Core rev: 8418289277056d582d88916b524b920a2e005c75)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit d8c6f01d7467e018aa0ed27a87850d9e4434a47a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
AshishKumar Mishra
e46adde7bb p11-kit: backport fix for handle USE_NLS from master
Disable NLS in the build when USE_NLS is off.

(From OE-Core rev: b94798ecd535956ef4565663710ea9a701ff21ed)

This change corresponds to upstream eeb3974472
from master .
Since the p11-kit version are different between master & kirkstone
applied the patch manually

(From OE-Core rev: c621612a12cdbf5c89279b69e28d0e3a0b5d0a86)

Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: AshishKumar Mishra <emailaddress.ashish@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
AshishKumar Mishra
d34a0bd00b systemd: backport fix for handle USE_NLS from master
Do not build translations when NLS is disabled.
(From OE-Core rev: 83795ef6c3fa12a863cd20b7ec1a2607606987b6)

This change corresponds to upstream d848b454e6
from master .
Since the systemd version are different between master & kirkstone
applied the patch manually

(From OE-Core rev: 4b612ae7cbdc8327765c34d0e64fa8e0564891d4)

Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: AshishKumar Mishra <emailaddress.ashish@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Deepesh Varatharajan
11f3763b0f glibc: stable 2.35 branch updates
git log --oneline a66bc3941ff298e474d5f02d0c3303401951141f..4e50046821f05ada5f14c76803845125ddb3ed7d

4e50046821 (HEAD, origin/release/2.35/master) x86-64: Add GLIBC_ABI_DT_X86_64_PLT [BZ #33212]
c97735cfde elf: Handle ld.so with LOAD segment gaps in _dl_find_object (bug 31943)
96cc65a28a elf: Extract rtld_setup_phdr function from dl_main
e3f04f64fa elf: Do not add a copy of _dl_find_object to libc.so
bfae8bf49c arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)

Testing Results:
           Before     After   Diff
PASS         4605      4609     +4
XPASS           6         6      0
FAIL          358       356     -2
XFAIL          16        16      0
UNRESOLVED      0         1     +1
UNSUPPORTED   197       197      0

Testcases changes

testcase-name                              before           after

elf/tst-link-map-contiguous-libc(new)        -               PASS
elf/tst-link-map-contiguous-ldso(new)        -               FAIL
elf/check-dt-x86-64-plt(new)                 -               UNRESOLVED
misc/tst-tsearch                            FAIL             PASS
posix/bug-regex24                           FAIL             PASS
string/tst-cmp                              FAIL             PASS

(From OE-Core rev: 932ee96c0dc24ac3cdb9cee5bf96375568b41df0)

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Archana Polampalli
89a78911d7 openssl: upgrade 3.0.17 -> 3.0.18
This release incorporates the following bug fixes and mitigations:
Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap. (CVE-2025-9230)
Fix Out-of-bounds read in HTTP client no_proxy handling. (CVE-2025-9232)

Changelog:
https://github.com/openssl/openssl/blob/openssl-3.0.18/NEWS.md#openssl-30

(From OE-Core rev: 0a0d640436258269ffaaf23116d41f9a79db5ab7)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Aleksandar Nikolic
673b839a6b scripts/install-buildtools: Update to 4.0.30
Update to the 4.0.30 release of the 4.0 series for buildtools

(From OE-Core rev: 237452d023dfc895cd8183e30e781da6f60b2ec5)

Signed-off-by: Aleksandar Nikolic <aleksandar.nikolic@zeiss.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Archana Polampalli
f63f49bdea go: fix CVE-2025-47906
If the PATH environment variable contains paths which are executables
(rather than just directories), passing certain strings to LookPath
("", ".", and ".."), can result in the binaries listed in the PATH
being unexpectedly returned.

(From OE-Core rev: c4d81e32ee3fb7d05db2cfbfaaa8081841bc16ce)

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Peter Marko
7a5c6b3e18 ffmpeg: mark CVE-2023-6601 as patched
Per [1] this CVE is fixed by the same commits as the other 3 CVEs.

[1] https://security-tracker.debian.org/tracker/CVE-2023-6601

(From OE-Core rev: b0542ad422ac1ba05dd5b8003429b8719619d892)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:36 -07:00
Peter Marko
5d1ccbd52f ffmpeg: ignore CVE-2023-6603
Per [1] this CVE is fixed by [2] which is available in version 5.0, so
version 5.0.3 is not vulnerable anymore.

[1] https://security-tracker.debian.org/tracker/CVE-2023-6603
[2] 28c83584e8

(From OE-Core rev: dcfd5672474f7a9bf7913c0f0e35f7c40bb685c4)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
c95f2e55ac pulseaudio: ignore CVE-2024-11586
As per the linked ticket, this issue is related to an Ubuntu-specific
patch that we don't have.

(From OE-Core rev: dc81fdc6bdf8ab39b7f2fd994d50256430c36558)

(From OE-Core rev: 72e63e44a0c6ad5a408c4dc59a24288c36463439)

Rewritten CVE_STATUS to CVE_CHECK_IGNORE.

(From OE-Core rev: 66e45229a9614d33f64167f0259ae1d719839d83)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
02148028a0 ghostscript: patch CVE-2025-59800
Pick commit mentioned in the NVD report.

(From OE-Core rev: 5109fd6675b6782f10f86f774fe54b6ccecee415)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
093e91d190 ghostscript: patch CVE-2025-59799
Pick commit mentioned in the NVD report.

(From OE-Core rev: 10a51275bb0f62b018a6182953352ecf7aa3d220)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
0163ca382a ghostscript: patch CVE-2025-59798
Pick commit mentioned in the NVD report.

(From OE-Core rev: dc65da274b26c1e7f4143154cd7639a93cc658be)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
0adb465b9e grub: ignore CVE-2024-2312
This CVE is specific to Ubuntu [1].

[1] https://bugs.launchpad.net/ubuntu/+source/grub2-unsigned/+bug/2054127

(From OE-Core rev: dc10bf2f9dd91cbd34af43162b61736fc26aa314)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
ca3783f70d gstreamer1.0: ignore CVE-2025-2759
Copy statement from [1] that it is problem of installers (non-Linux).
Also [2] linked in NVD says "Fixed in 1.25.1 Gstreamer Installer".
Since Yocto builds from sources into our own packages, ignore it.

[1] https://security-tracker.debian.org/tracker/CVE-2025-2759
[2] https://www.zerodayinitiative.com/advisories/ZDI-25-268/

(From OE-Core rev: 99ee1df6bde2ffd4fa2ddea44c0a9b94d9d77bae)

Reworked to CVE_CHECK_IGNORE format.

(From OE-Core rev: 2162bc3b305a0b088018e251baad54c356f7855f)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
b5a57a04eb gstreamer1.0: ignore CVEs fixed in plugins
All these CVEs were fixed in recent commits.

(From OE-Core rev: 86f48cdb1b26b6e234dde10b1e636e54e8a7e71f)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
ed56389e82 tiff: Fix CVE-2025-9165
Upstream-Commit: ed141286a3

(From OE-Core rev: 08823f96a400055e5924bae3af0d2dfaf488148b)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
4a1254610c tiff: Fix CVE-2025-8961
Upstream-Status: Backport from 0ac97aa7a5

(From OE-Core rev: 8d956d80f0eae39f9de68c0cd5a361c69b47cda4)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
4ef41425c6 libxslt: Patch for CVE-2025-7424
This patch is taken from the upstream bug, and is used by Apple in their
build of WebKit.

Origin: https://gitlab.gnome.org/-/project/1762/uploads/627ae84cb0643d9adf6e5c86947f6be6/gnome-libxslt-bug-139-apple-fix.diff

Ref: https://gitlab.gnome.org/GNOME/libxslt/-/issues/139

(From OE-Core rev: 2e2fa1ae7f24dadae9cb8371174aa7744aa42028)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Peter Marko
db50dd87bc busybox: patch CVE-2025-46394
Pick commit mentioning this CVE.
Additionally fix test broken by the CVE fix.

(From OE-Core rev: 137299edbc47e8a57173ef3c22bcb719d48d5302)

Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Vijay Anusuri
2b82706dc5 gstreamer1.0-plugins-bad: Fix CVE-2025-3887
Upstream-Status: Backport from
5463f0e097
& bcaab36098

(From OE-Core rev: a35bdbdb4d1dd77de7b85ab19d7354be6a11e8b2)

Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Theo GAIGE
bc7377a239 libxml2: fix CVE-2025-9714
Upstream-Status: Backport from 677a42645e

(From OE-Core rev: 277692c2472f03ae62401bfbd26e8c4d872113d0)

Signed-off-by: Theo GAIGE <tgaige.opensource@witekio.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-14 07:20:35 -07:00
Adam Blank
7f12221f49 ref-manual/variables.rst: fix the description of STAGING_DIR
There is no single "recipe-sysroots" directory, but rather many
"recipe-sysroot*" directories.

(From yocto-docs rev: eca2cb23eb1fd4186d1f5cadc3280d73e8f52631)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f2d6e228409cb1dd1dbf339c405699ac6d3900be)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Antonin Godard
11d8b290dd ref-manual/structure: document the auto.conf file
Add documentation for auto.conf, which is used by external tools for
automatically setting variables.

(From yocto-docs rev: 707b29352838792c635b39c8b5c20c519b10b832)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 134e54a75e0144c4629f702c6f43e92ed1f12dce)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Talel BELHAJ SALEM
55c58356f1 dev-manual/building.rst: add note about externalsrc variables absolute paths
(From yocto-docs rev: a0ffc6296e7349367fa6e6e615b74e2017a1a67e)

Signed-off-by: Talel BELHAJ SALEM <bhstalel@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 33166d70b6ad093bd95ffccafc0b07820682f656)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Adam Blank
3c3b5d0fe9 ref-manual/variables.rst: fix the description of KBUILD_DEFCONFIG
Remove some leftover confusing mention of KMACHINE.

(From yocto-docs rev: 972f61f12f2b33fc518cf8c3e3da5bf71e1b1cb9)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 582ee9e0b4930aea03255542b3d3913df19af8b0)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Adam Blank
3ff44348f7 kernel-dev/common.rst: fix the in-tree defconfig description
The description of the relation between KBUILD_DEFCONFIG and
SRC_URI is reversed. In fact it is the SRC_URI provided
defconfig which will be dropped by the kernel-yocto class
if both are provided.

(From yocto-docs rev: 6efc3ca5491722072fd394bae92d827791ef6bc3)

Signed-off-by: Adam Blank <adam.blank.g@gmail.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a808420655a0976ba08f013f468cf80f379b1d89)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 10:09:02 -07:00
Antonin Godard
1f6c798015 test-manual/yocto-project-compatible.rst: fix a typo
Fix a typo in yocto-project-compatible.rst.

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
(From yocto-docs rev: 95f31030628d0f7681401b1de6fb8e7a362963c1)

Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a84c234acfedfa714419006c743405e2f9acaedc)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:18 -07:00
Quentin Schulz
fd0df2cb78 contributor-guide: submit-changes: make "Crediting contributors" part of "Commit your changes"
There's no need to differentiate crediting contributors from committing
your changes, so let's simply make it the last step of "Commit your
changes" section.

This simply indents the text so it's now part of "Commit your changes"
list instead of the main list in the "Implement and commit changes"
section. Because of this reorganisation, the instruction to use "git
commit --amend" to add the contributors is moved to a note, and the
first few sentences are reworded to better match the wording of other
items in the "Commit your changes" list of instructions.

(From yocto-docs rev: 5ce7ae8f655f45dec80e68398911f117920f5eb2)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit eff4d14e28d323ebfdaeb0c5c805b5f1e2ad153d)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:18 -07:00
Quentin Schulz
ffd5cd98d6 contributor-guide: submit-changes: number instruction list in commit your changes
... so that it's clear that you need to read and follow each and every
instruction in this list.

(From yocto-docs rev: 4799ffa5170a5f9e12350634bcdfca6f531ea937)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit c628a489f081925fabaabb5acac6752251150269)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
794b42f01a contributor-guide: submit-changes: reword commit message instructions
This should hopefully make it clearer what is expected from the
contributor.

This follows my understanding of git-commit(1)[1] where the following is
a git commit message:

"""
git commit title

git commit description
"""

I'm putting the "Fixes [YOCTO" line in "body of the commit message" so
it's understood as being different from the git commit description so
that the note admonition allowing us to have an empty commit description
doesn't apply to the "Fixes [YOCTO" line.

[1] https://www.man7.org/linux/man-pages/man1/git-commit.1.html#DISCUSSION

(From yocto-docs rev: f817ef5542adc2ce830e22dd04424b9d5d5ed5c5)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit b84903a760350bd118c56ea9ce4e98039edf6e55)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
11999973cb contributor-guide: submit-changes: make the Cc tag follow kernel guidelines
The kernel docs specifies[1] a Cc: tag and not CC: tag, so let's align
with that.

[1] https://www.kernel.org/doc/html/latest/process/submitting-patches.html#when-to-use-acked-by-cc-and-co-developed-by

(From yocto-docs rev: 87721121d9dc95e2de110cadee4538e2ea4ff7c3)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f800fef4e9e2c1d3584ac49be8324638d2923b17)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
49a5ab4d5f contributor-guide: submit-changes: align CC tag description
The other tag descriptions have the double colon outside of the
highlight, and start the sentence with a lowercase word, so let's align
the CC tag with those.

(From yocto-docs rev: 9764dc8ff26883684f3e993cfa821116ee2e6d95)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit f116e93fb335e9d0f85891c4cb501bcf55b18ccf)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
d153a3dc36 contributor-guide: submit-changes: clarify example with Yocto bug ID
The example could be understood as the content of the commit message
once the editor (git config core.editor) opens, where the first
line is the actual commit title and not the commit description.

This example would make the Fixes line the commit title, which is not
what we want.

In short, according to my understanding of git-commit(1):

The following is a git commit message:

"""
git commit title

git commit description
"""

Reported-by: Barne Carstensen <barne.carstensen@danfoss.com>
(From yocto-docs rev: db54a8bd56f38c532498e0f624fcceb60d2b9ea7)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit a5862406bf3230befe9db9f2539bbbc86c02015d)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Quentin Schulz
2399c63ca5 contributor-guide: submit-changes: fix improper bold string
I don't know what was the initial intent but this doesn't seem right, so
let's remove the bold formatting.

Fixes: 4abe87cb20d3 ("contributor-guide: submit-changes: detail commit and patch creation")
Cc: Michael Opdenacker <michael.opdenacker@rootcommit.com>
(From yocto-docs rev: 508a1b7d905dabe8a36361da8e346040db4cca2a)

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
(cherry picked from commit 6c499b3796a578a0fe4c319c9547b4321b0d41df)
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Gyorgy Sarvari
866395041f libhandy: update git branch name
Master branch was renamed to main.

(From OE-Core rev: 2285f30e643f52511c328e4f6e1f0c042bea4110)

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Soumya Sambu
6303a9d5b5 python3-jinja2: upgrade 3.1.4 -> 3.1.6
Includes fix for - CVE-2024-56326, CVE-2025-27516, CVE-2024-56201

Changelog:
https://github.com/pallets/jinja/blob/3.1.6/CHANGES.rst
https://github.com/pallets/jinja/blob/3.1.5/CHANGES.rst

(From OE-Core rev: a935ef8f205c9510ebc5539c133960bc72504902)

(From OE-Core rev: 7108dccff524888d77f0e5e02d9cc4523a700a91)

Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Soumya Sambu <soumya.sambu@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Divya Chellam
1811a2d13e vim: upgrade 9.1.1652 -> 9.1.1683
Handles CVE-2025-9389

Changes between 9.1.1652 -> 9.1.1683
====================================
https://github.com/vim/vim/compare/v9.1.1652...v9.1.1683

(From OE-Core rev: 24b7e7f719ca600a88aa893b87f6ea821caeadce)

Signed-off-by: Divya Chellam <divya.chellam@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
15dd68bda1 tiff: fix CVE-2025-9900
A flaw was found in Libtiff. This vulnerability is a "write-what-where"
condition, triggered when the library processes a specially crafted TIFF
image file.[EOL][EOL]By providing an abnormally large image height value
in the file's metadata, an attacker can trick the library into writing
attacker-controlled color data to an arbitrary memory location. This
memory corruption can be exploited to cause a denial of service (application
crash) or to achieve arbitrary code execution with the permissions of the user.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-9900

Upstream patch:
3e0dcf0ec6

(From OE-Core rev: f4e5cdeccee02d3ea78db91d5dfdcfd017c40ee0)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
9c9c706252 curl: fix CVE-2025-9086
1, A cookie is set using the secure keyword for https://target
2, curl is redirected to or otherwise made to speak with http://target
(same hostname, but using clear text HTTP) using the same cookie set
3, The same cookie name is set - but with just a slash as path (path="/").
Since this site is not secure, the cookie should just be ignored.
4, A bug in the path comparison logic makes curl read outside a heap buffer boundary

The bug either causes a crash or it potentially makes the comparison come to
the wrong conclusion and lets the clear-text site override the contents of
the secure cookie, contrary to expectations and depending on the memory contents
immediately following the single-byte allocation that holds the path.

The presumed and correct behavior would be to plainly ignore the second set of
the cookie since it was already set as secure on a secure host so overriding
it on an insecure host should not be okay.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-9086

Upstream patch:
https://github.com/curl/curl/commit/c6ae07c6a541e0e96d0040afb6

(From OE-Core rev: dc842a631b178acd9c4f00c4a3b87831baf08ebb)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Yogita Urade
d2a96dd89c grub2: fix CVE-2024-56738
Backport an algorithmic change to grub_crypto_memcmp() so that it
completes in constant time and thus isn't susceptible to side-channel
attacks.

reference:
https://git.openembedded.org/openembedded-core/commit/?id=30a1cc225a2bd5d044bf608d863a67df3f9c03be

Upstream patch:
https://cgit.git.savannah.gnu.org/cgit/grub.git/commit/?id=0739d24cd1648531d0708d1079ff6bbfa6140268

(From OE-Core rev: d6572d29892b7da593acafe3af68cf98230acf04)

Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
Praveen Kumar
9ae3736eb4 go: fix CVE-2025-47907
Cancelling a query (e.g. by cancelling the context passed to one of
the query methods) during a call to the Scan method of the returned
Rows can result in unexpected results if other queries are being made
in parallel. This can result in a race condition that may overwrite
the expected results with those of another query, causing the call to
Scan to return either unexpected results from the other query or an
error.

Made below changes for Go 1.17 backport:
- Replaced `atomic.Pointer[error]` with `atomic.Value`, since
  atomic pointers are not supported in Go 1.17.
- Used errp.(*error) to retrieve and dereference
  the stored *error, Without this, build fails with:
  invalid indirect of errp (type interface{}).
- Replaced Go 1.18 `any` keyword with `interface{}` for backward
  compatibility with Go 1.17.

Reference:
https://nvd.nist.gov/vuln/detail/CVE-2025-47907

Upstream-patch:
8a924caaf3
298fe517a9
c23579f031

(From OE-Core rev: af9c43c39764ce9ce37785c44dfb83e25cb24703)

Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-10-03 09:51:17 -07:00
89 changed files with 4194 additions and 991 deletions

View File

@@ -123,110 +123,116 @@ to add the upgraded version.
$ git commit -s file1 file2 dir1 dir2 ...
To include **a**\ ll staged files::
To include all staged files::
$ git commit -sa
- The ``-s`` option of ``git commit`` adds a "Signed-off-by:" line
to your commit message. There is the same requirement for contributing
to the Linux kernel. Adding such a line signifies that you, the
submitter, have agreed to the `Developer's Certificate of Origin 1.1
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__
as follows:
#. The ``-s`` option of ``git commit`` adds a "Signed-off-by:" line
to your commit message. There is the same requirement for contributing
to the Linux kernel. Adding such a line signifies that you, the
submitter, have agreed to the `Developer's Certificate of Origin 1.1
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin>`__
as follows:
.. code-block:: none
.. code-block:: none
Developer's Certificate of Origin 1.1
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
- Provide a single-line summary of the change and, if more
explanation is needed, provide more detail in the body of the
commit. This summary is typically viewable in the "shortlist" of
changes. Thus, providing something short and descriptive that
gives the reader a summary of the change is useful when viewing a
list of many commits. You should prefix this short description
with the recipe name (if changing a recipe), or else with the
short form path to the file being changed.
#. Provide a single-line summary of the change and, if more
explanation is needed, provide more detail in the description of the
commit. This summary is typically viewable in the "shortlist" of
changes. Thus, providing something short and descriptive that
gives the reader a summary of the change is useful when viewing a
list of many commits. You should prefix this short description
with the recipe name (if changing a recipe), or else with the
short form path to the file being changed.
.. note::
To find a suitable prefix for the commit summary, a good idea
is to look for prefixes used in previous commits touching the
same files or directories::
git log --oneline <paths>
#. For the commit description, provide detailed information
that describes what you changed, why you made the change, and the
approach you used. It might also be helpful if you mention how you
tested the change. Provide as much detail as you can in the commit
description.
.. note::
If the single line summary is enough to describe a simple
change, the commit description can be left empty.
#. If the change addresses a specific bug or issue that is associated
with a bug-tracking ID, include a reference to that ID in the body of the
commit message. For example, the Yocto Project uses a
specific convention for bug references --- any commit that addresses
a specific bug should use the following form for the body of the commit
message. Be sure to use the actual bug-tracking ID from
Bugzilla for bug-id::
single-line summary of change
Fixes [YOCTO #bug-id]
detailed description of change
#. If other people participated in this patch, add some tags to the commit
description to credit other contributors to the change:
- ``Reported-by``: name and email of a person reporting a bug
that your commit is trying to fix. This is a good practice
to encourage people to go on reporting bugs and let them
know that their reports are taken into account.
- ``Suggested-by``: name and email of a person to credit for the
idea of making the change.
- ``Tested-by``, ``Reviewed-by``: name and email for people having
tested your changes or reviewed their code. These fields are
usually added by the maintainer accepting a patch, or by
yourself if you submitted your patches to early reviewers,
or are submitting an unmodified patch again as part of a
new iteration of your patch series.
- ``Cc``: name and email of people you want to send a copy
of your changes to. This field will be used by ``git send-email``.
See `more guidance about using such tags
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>`__
in the Linux kernel documentation.
.. note::
To find a suitable prefix for the commit summary, a good idea
is to look for prefixes used in previous commits touching the
same files or directories::
git log --oneline <paths>
- For the body of the commit message, provide detailed information
that describes what you changed, why you made the change, and the
approach you used. It might also be helpful if you mention how you
tested the change. Provide as much detail as you can in the body
of the commit message.
.. note::
If the single line summary is enough to describe a simple
change, the body of the commit message can be left empty.
- If the change addresses a specific bug or issue that is associated
with a bug-tracking ID, include a reference to that ID in your
detailed description. For example, the Yocto Project uses a
specific convention for bug references --- any commit that addresses
a specific bug should use the following form for the detailed
description. Be sure to use the actual bug-tracking ID from
Bugzilla for bug-id::
Fixes [YOCTO #bug-id]
detailed description of change
#. *Crediting contributors:* By using the ``git commit --amend`` command,
you can add some tags to the commit description to credit other contributors
to the change:
- ``Reported-by``: name and email of a person reporting a bug
that your commit is trying to fix. This is a good practice
to encourage people to go on reporting bugs and let them
know that their reports are taken into account.
- ``Suggested-by``: name and email of a person to credit for the
idea of making the change.
- ``Tested-by``, ``Reviewed-by``: name and email for people having
tested your changes or reviewed their code. These fields are
usually added by the maintainer accepting a patch, or by
yourself if you submitted your patches to early reviewers,
or are submitting an unmodified patch again as part of a
new iteration of your patch series.
- ``CC:`` Name and email of people you want to send a copy
of your changes to. This field will be used by ``git send-email``.
See `more guidance about using such tags
<https://www.kernel.org/doc/html/latest/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>`__
in the Linux kernel documentation.
One can amend an existing git commit message to add missing tags for
contributors with the ``git commit --amend`` command.
Test your changes
-----------------

View File

@@ -909,6 +909,11 @@ to point to that directory::
EXTERNALSRC_BUILD:pn-myrecipe = "path-to-your-source-tree"
.. note::
The values of :term:`EXTERNALSRC` and :term:`EXTERNALSRC_BUILD`
must be absolute paths.
Replicating a Build Offline
===========================

View File

@@ -12,7 +12,7 @@ known security vulnerabilities, as tracked by the public
database.
The Yocto Project maintains a `list of known vulnerabilities
<https://autobuilder.yocto.io/pub/non-release/patchmetrics/>`__
<https://valkyrie.yocto.io/pub/non-release/patchmetrics/>`__
for packages in Poky and OE-Core, tracking the evolution of the number of
unpatched CVEs and the status of patches. Such information is available for
the current development version and for each supported release.
@@ -235,7 +235,7 @@ products defined in :term:`CVE_PRODUCT`. Then, for each found CVE:
The CVE database is stored in :term:`DL_DIR` and can be inspected using
``sqlite3`` command as follows::
sqlite3 downloads/CVE_CHECK/nvdcve_1.1.db .dump | grep CVE-2021-37462
sqlite3 downloads/CVE_CHECK/nvd*.db .dump | grep CVE-2021-37462
When analyzing CVEs, it is recommended to:

View File

@@ -724,13 +724,9 @@ a Raspberry Pi 2, which is based on the Broadcom 2708/2709 chipset::
KBUILD_DEFCONFIG:raspberrypi2 ?= "bcm2709_defconfig"
Aside from modifying your kernel recipe and providing your own
``defconfig`` file, you need to be sure no files or statements set
:term:`SRC_URI` to use a ``defconfig`` other than your "in-tree" file (e.g.
a kernel's ``linux-``\ `machine`\ ``.inc`` file). In other words, if the
build system detects a statement that identifies an "out-of-tree"
``defconfig`` file, that statement will override your
:term:`KBUILD_DEFCONFIG` variable.
If the build system detects a statement that identifies an "out-of-tree"
``defconfig`` file, your :term:`KBUILD_DEFCONFIG` variable will take precedence
over it.
See the
:term:`KBUILD_DEFCONFIG`

View File

@@ -36,3 +36,4 @@ Release 4.0 (kirkstone)
release-notes-4.0.27
release-notes-4.0.28
release-notes-4.0.29
release-notes-4.0.30

View File

@@ -0,0 +1,170 @@
Release notes for Yocto-4.0.30 (Kirkstone)
------------------------------------------
Security Fixes in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- cups: Fix :cve_nist:`2025-58060` and :cve_nist:`2025-58364`
- dpkg: Fix :cve_nist:`2025-6297`
- ffmpeg: Fix :cve_nist:`2023-6602`, :cve_nist:`2023-6604`, :cve_nist:`2023-6605`,
:cve_nist:`2025-1594` and CVE-2025-7700
- git: Fix :cve_nist:`2025-27613`, :cve_nist:`2025-27614`, :cve_nist:`2025-46334`,
:cve_nist:`2025-46835` and :cve_nist:`2025-48384`
- glib-2.0: Fix :cve_nist:`2025-7039`
- glib-2.0: Ignore :cve_nist:`2025-4056`
- go: Ignore :cve_nist:`2024-24790` and :cve_nist:`2025-0913`
- gstreamer1.0-plugins-base: Fix :cve_nist:`2025-47806`, :cve_nist:`2025-47807` and
:cve_nist:`2025-47808`
- gstreamer1.0-plugins-good: Fix :cve_nist:`2025-47183` and :cve_nist:`2025-47219`
- libarchive: Fix :cve_nist:`2025-5918`
- libxslt: Fix :cve_nist:`2023-40403`
- openssl: Fix :cve_nist:`2023-50781`
- python3: Fix :cve_nist:`2025-8194`
- qemu: Ignore :cve_nist:`2024-7730`
- sqlite3: Revert "sqlite3: patch CVE-2025-7458"
- tiff: Fix :cve_nist:`2024-13978`, :cve_nist:`2025-8176`, :cve_nist:`2025-8177`,
:cve_nist:`2025-8534` and :cve_nist:`2025-8851`
- vim: Fix :cve_nist:`2025-53905` and :cve_nist:`2025-53906`
- wpa-supplicant: Fix :cve_nist:`2022-37660`
- xserver-xorg: Fix :cve_nist:`2025-49175`, :cve_nist:`2025-49176`, :cve_nist:`2025-49177`,
:cve_nist:`2025-49178`, :cve_nist:`2025-49179` and :cve_nist:`2025-49180`
Fixes in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~
- build-appliance-image: Update to kirkstone head revision
- default-distrovars.inc: Fix CONNECTIVITY_CHECK_URIS redirect issue
- dev-manual/security-subjects.rst: update mailing lists
- gnupg: disable tests to avoid running target binaries at build time
- go-helloworld: fix license
- insane: Ensure that `src-uri-bad` fails correctly
- insane: Improve patch warning/error handling
- libubootenv: backport patch to fix unknown type name 'size_t'
- llvm: fix typo in CVE-2024-0151.patch
- migration-guides: add release notes for 4.0.29
- overview-manual/yp-intro.rst: fix broken link to article
- poky.conf: bump version for 4.0.30
- pulseaudio: Add audio group explicitly
- ref-manual/classes.rst: document the testexport class
- ref-manual/system-requirements.rst: update supported distributions
- ref-manual/variables.rst: document :term:`FIT_CONF_PREFIX` :term:`SPL_DTB_BINARY` variable
- ref-manual/variables.rst: expand :term:`IMAGE_OVERHEAD_FACTOR` glossary entry
- sdk: The main in the C example should return an int
- sudo: remove devtool FIXME comment
- systemd: Fix manpage build after :cve_nist:`2025-4598`
- vim: not adjust script pathnames for native scripts either
- vim: upgrade to 9.1.1652
Known Issues in Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- N/A
Contributors to Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Antonin Godard
- Archana Polampalli
- Dan McGregor
- Deepak Rathore
- Divya Chellam
- Erik Lindsten
- Guocai He
- Gyorgy Sarvari
- Hitendra Prajapati
- Jan Vermaete
- Jiaying Song
- Joao Marcos Costa
- Kyungjik Min
- Lee Chee Yang
- Mingli Yu
- Peter Marko
- Philip Lorenz
- Praveen Kumar
- Quentin Schulz
- Richard Purdie
- Steve Sakoman
- Vijay Anusuri
- Yogita Urade
- Youngseok Jeong
Repositories / Downloads for Yocto-4.0.30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
poky
- Repository Location: :yocto_git:`/poky`
- Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </poky/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`51dc9c464de0703bfbc6f1ee71ac9bea20933a45 </poky/commit/?id=51dc9c464de0703bfbc6f1ee71ac9bea20933a45>`
- Release Artefact: poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45
- sha: 2b5db0a07598df7684975c0839e6f31515a8e78d366503feb9917ef1ca56c0b2
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/poky-51dc9c464de0703bfbc6f1ee71ac9bea20933a45.tar.bz2
openembedded-core
- Repository Location: :oe_git:`/openembedded-core`
- Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
- Tag: :oe_git:`yocto-4.0.30 </openembedded-core/log/?h=yocto-4.0.30>`
- Git Revision: :oe_git:`d381eeb5e70bd0ce9e78032c909e4a23564f4dd7 </openembedded-core/commit/?id=d381eeb5e70bd0ce9e78032c909e4a23564f4dd7>`
- Release Artefact: oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7
- sha: 022ab4ef5ac59ac3f01a9dacd8b1d6310cc117c6bed2e86e195ced88e0689c85
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/oecore-d381eeb5e70bd0ce9e78032c909e4a23564f4dd7.tar.bz2
meta-mingw
- Repository Location: :yocto_git:`/meta-mingw`
- Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-mingw/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`87c22abb1f11be430caf4372e6b833dc7d77564e </meta-mingw/commit/?id=87c22abb1f11be430caf4372e6b833dc7d77564e>`
- Release Artefact: meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e
- sha: f0bc4873e2e0319fb9d6d6ab9b98eb3f89664d4339a167d2db6a787dd12bc1a8
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/meta-mingw-87c22abb1f11be430caf4372e6b833dc7d77564e.tar.bz2
meta-gplv2
- Repository Location: :yocto_git:`/meta-gplv2`
- Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-gplv2/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
- Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
- sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
bitbake
- Repository Location: :oe_git:`/bitbake`
- Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
- Tag: :oe_git:`yocto-4.0.30 </bitbake/log/?h=yocto-4.0.30>`
- Git Revision: :oe_git:`8e2d1f8de055549b2101614d85454fcd1d0f94b2 </bitbake/commit/?id=8e2d1f8de055549b2101614d85454fcd1d0f94b2>`
- Release Artefact: bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2
- sha: fad4e7699bae62082118e89785324b031b0af0743064caee87c91ba28549afb0
- Download Locations:
https://downloads.yoctoproject.org/releases/yocto/yocto-4.0.30/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
https://mirrors.kernel.org/yocto/yocto/yocto-4.0.30/bitbake-8e2d1f8de055549b2101614d85454fcd1d0f94b2.tar.bz2
meta-yocto
- Repository Location: :yocto_git:`/meta-yocto`
- Branch: :yocto_git:`kirkstone </meta-yocto/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </meta-yocto/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`edf7950e4d81dd31f29a58acdd8022dabd2be494 </meta-yocto/commit/?id=edf7950e4d81dd31f29a58acdd8022dabd2be494>`
yocto-docs
- Repository Location: :yocto_git:`/yocto-docs`
- Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
- Tag: :yocto_git:`yocto-4.0.30 </yocto-docs/log/?h=yocto-4.0.30>`
- Git Revision: :yocto_git:`71a3933c609ce73ff07e5be48d9e7b03f22ef8d7 </yocto-docs/commit/?id=71a3933c609ce73ff07e5be48d9e7b03f22ef8d7>`

View File

@@ -309,8 +309,12 @@ file for details about how to enable this mechanism in your configuration
file, how to disable it for specific recipes, and how to share ``ccache``
files between builds.
However, using the class can lead to unexpected side-effects. Thus, using
this class is not recommended.
Recipes can also explicitly disable `Ccache` support even when the
:ref:`ref-classes-ccache` class is enabled, by setting the
:term:`CCACHE_DISABLE` variable to "1".
Using the :ref:`ref-classes-ccache` class can lead to unexpected side-effects.
Using this class is not recommended.
.. _ref-classes-chrpath:
@@ -825,6 +829,14 @@ software that uses the GNU ``gettext`` internationalization and localization
system. All recipes building software that use ``gettext`` should inherit this
class.
This class will configure recipes to build translations *unless*:
- the :term:`USE_NLS` variable is set to ``no``, or
- the :term:`INHIBIT_DEFAULT_DEPS` variable is set and the recipe inheriting
the :ref:`ref-classes-gettext` class does not also inherit the
:ref:`ref-classes-cross-canadian` class.
.. _ref-classes-gnomebase:
``gnomebase``
@@ -2544,6 +2556,25 @@ The :ref:`ref-classes-recipe_sanity` class checks for the presence of any host s
recipe prerequisites that might affect the build (e.g. variables that
are set or software that is present).
.. _ref-classes-relative_symlinks:
``relative_symlinks``
=====================
The :ref:`ref-classes-relative_symlinks` class walks the symbolic links in the
:term:`D` directory and replaces links pointing to absolute paths to relative
paths. This is occasionally used in some recipes that create wrong symbolic
links when their :ref:`ref-classes-native` version is built, and/or would cause
breakage in the :ref:`overview-manual/concepts:shared state cache`.
For example, if the following symbolic link is found in :term:`D`::
/usr/bin/foo -> /sbin/bar
It is replaced by::
/usr/bin/foo -> ../../sbin/bar
.. _ref-classes-relocatable:
``relocatable``
@@ -3214,22 +3245,51 @@ imitates.
``uninative``
=============
Attempts to isolate the build system from the host distribution's C
library in order to make re-use of native shared state artifacts across
different host distributions practical. With this class enabled, a
tarball containing a pre-built C library is downloaded at the start of
the build. In the Poky reference distribution this is enabled by default
through ``meta/conf/distro/include/yocto-uninative.inc``. Other
distributions that do not derive from poky can also
"``require conf/distro/include/yocto-uninative.inc``" to use this.
Alternatively if you prefer, you can build the uninative-tarball recipe
yourself, publish the resulting tarball (e.g. via HTTP) and set
``UNINATIVE_URL`` and ``UNINATIVE_CHECKSUM`` appropriately. For an
example, see the ``meta/conf/distro/include/yocto-uninative.inc``.
The :ref:`ref-classes-uninative` class allows binaries to run on systems with
older or newer :wikipedia:`Glibc <Glibc>` versions. This means
:ref:`ref-classes-native` recipe :ref:`overview-manual/concepts:shared state
cache` can be shared among different host distributions of different versions,
i.e. the :ref:`overview-manual/concepts:shared state cache` is "universal".
The :ref:`ref-classes-uninative` class is also used unconditionally by the extensible
SDK. When building the extensible SDK, ``uninative-tarball`` is built
and the resulting tarball is included within the SDK.
To allow this to work, the dynamic loader is changed to our own :manpage:`ld.so
<ld.so.8>` when binaries are compiled using the
``--dynamic-linker`` option. This means when the binary is executed, it finds
our own :manpage:`ld.so <ld.so.8>` and that loader has a modified search path
which finds a newer Glibc version.
The linking of the binaries is not changed at link time since the
headers on the system wouldn't match the newer Glibc and this causes
obtuse failures. Changing the loader is effectively the same as if the
system had a Glibc upgrade after the binary was compiled, so it is a
mechanism supported by upstream.
One caveat to this approach is that the uninative Glibc binary must be
equal to or newer in version to the versions on all the systems using
the common :ref:`overview-manual/concepts:shared state cache`. This is why
:ref:`ref-classes-uninative` is regularly changed on the development and stable
branches.
Another potential issue is static linking: static libraries created on
a system with a new Glibc version may have symbols not present in older
versions, which would then fail during linking on older systems. This
is one reason we don't use static linking for our :ref:`ref-classes-native`
binaries.
With this class enabled, a tarball containing a pre-built C library is
downloaded at the start of the build. In the Poky reference distribution this is
enabled by default through :oe_git:`meta/conf/distro/include/yocto-uninative.inc
</openembedded-core/tree/meta/conf/distro/include/yocto-uninative.inc>`. Other distributions that do
not derive from Poky can also "``require conf/distro/include/yocto-uninative.inc``"
to use this. Alternatively if you prefer, you can build the uninative-tarball
recipe yourself, publish the resulting tarball (e.g. via HTTP) and set
:term:`UNINATIVE_URL` and :term:`UNINATIVE_CHECKSUM` appropriately. For an
example, see :oe_git:`meta/conf/distro/include/yocto-uninative.inc
</openembedded-core/tree/meta/conf/distro/include/yocto-uninative.inc>`.
The :ref:`ref-classes-uninative` class is also used unconditionally by the
:doc:`extensible SDK </sdk-manual/extensible>`. When building the extensible
SDK, ``uninative-tarball`` is built and the resulting tarball is included within
the SDK.
.. _ref-classes-update-alternatives:

View File

@@ -328,6 +328,15 @@ Once the build process gets the sample file, it uses ``sed`` to substitute final
This file indicates the state of the sanity checks and is created during
the build.
.. _structure-build-conf-auto.conf:
``build/conf/auto.conf``
------------------------
This file contains configuration variables that are automatically modified by
tools such as :oe_git:`bitbake-config-build </bitbake/tree/bin/bitbake-config-build>`.
This file should not be modified manually.
.. _structure-build-downloads:
``build/downloads/``

View File

@@ -1097,6 +1097,11 @@ system and gives an overview of their function and contents.
:term:`CC`
The minimal command and arguments used to run the C compiler.
:term:`CCACHE_DISABLE`
When inheriting the :ref:`ref-classes-ccache` class, the
:term:`CCACHE_DISABLE` variable can be set to "1" in a recipe to disable
`Ccache` support. This is useful when the recipe is known to not support it.
:term:`CFLAGS`
Specifies the flags to pass to the C compiler. This variable is
exported to an environment variable and thus made visible to the
@@ -4251,8 +4256,7 @@ system and gives an overview of their function and contents.
would place patch files and configuration fragment files (i.e.
"out-of-tree"). However, if you want to use a ``defconfig`` file that
is part of the kernel tree (i.e. "in-tree"), you can use the
:term:`KBUILD_DEFCONFIG` variable and append the
:term:`KMACHINE` variable to point to the
:term:`KBUILD_DEFCONFIG` variable to point to the
``defconfig`` file.
To use the variable, set it in the append file for your kernel recipe
@@ -4688,7 +4692,7 @@ system and gives an overview of their function and contents.
information on how this variable is used.
:term:`LAYERDEPENDS`
Lists the layers, separated by spaces, on which this recipe depends.
Lists the layers, separated by spaces, on which this layer depends.
Optionally, you can specify a specific layer version for a dependency
by adding it to the end of the layer name. Here is an example::
@@ -6822,6 +6826,16 @@ system and gives an overview of their function and contents.
:term:`REPODIR`
See :term:`bitbake:REPODIR` in the BitBake manual.
:term:`REQUIRED_COMBINED_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies combined features (the intersection of :term:`MACHINE_FEATURES`
and :term:`DISTRO_FEATURES`) that must exist in the current configuration
in order for the :term:`OpenEmbedded Build System` to build the recipe. In
other words, if the :term:`REQUIRED_COMBINED_FEATURES` variable lists a
feature that does not appear in :term:`COMBINED_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
:term:`REQUIRED_DISTRO_FEATURES`
When inheriting the
:ref:`features_check <ref-classes-features_check>`
@@ -6833,6 +6847,32 @@ system and gives an overview of their function and contents.
the recipe will be skipped, and if the build system attempts to build
the recipe then an error will be triggered.
:term:`REQUIRED_IMAGE_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies image features that must exist in the current
configuration in order for the :term:`OpenEmbedded Build System` to build
the recipe. In other words, if the :term:`REQUIRED_IMAGE_FEATURES` variable
lists a feature that does not appear in :term:`IMAGE_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
Compared to other ``REQUIRED_*_FEATURES`` variables, the
:term:`REQUIRED_IMAGE_FEATURES` varible only targets image recipes, as the
:term:`IMAGE_FEATURES` variable is handled by the :ref:`ref-classes-core-image`
class). However, the :term:`REQUIRED_IMAGE_FEATURES` varible can also be
set from a :term:`Configuration File`, such as a distro
configuration file, if the list of required image features should apply to
all images using this :term:`DISTRO`.
:term:`REQUIRED_MACHINE_FEATURES`
When inheriting the :ref:`ref-classes-features_check` class, this variable
identifies :term:`MACHINE_FEATURES` that must exist in the current
configuration in order for the :term:`OpenEmbedded Build System` to build
the recipe. In other words, if the :term:`REQUIRED_MACHINE_FEATURES` variable
lists a feature that does not appear in :term:`MACHINE_FEATURES` within the
current configuration, then the recipe will be skipped, and if the build
system attempts to build the recipe then an error will be triggered.
:term:`REQUIRED_VERSION`
If there are multiple versions of a recipe available, this variable
determines which version should be given preference.
@@ -8174,7 +8214,7 @@ system and gives an overview of their function and contents.
directory for the build host.
:term:`STAGING_DIR`
Helps construct the ``recipe-sysroots`` directory, which is used
Helps construct the ``recipe-sysroot*`` directories, which are used
during packaging.
For information on how staging for recipe-specific sysroots occurs,
@@ -9422,6 +9462,22 @@ system and gives an overview of their function and contents.
passes and uses "all" for the target during the U-Boot building
process.
:term:`UNINATIVE_CHECKSUM`
When inheriting the :ref:`ref-classes-uninative` class, the
:term:`UNINATIVE_CHECKSUM` variable flags contain the checksums of the
uninative tarball as specified by the :term:`UNINATIVE_URL` variable.
There should be one checksum per tarballs published at
:term:`UNINATIVE_URL`, which match architectures. For example::
UNINATIVE_CHECKSUM[aarch64] ?= "812045d826b7fda88944055e8526b95a5a9440bfef608d5b53fd52faab49bf85"
UNINATIVE_CHECKSUM[i686] ?= "5cc28efd0c15a75de4bcb147c6cce65f1c1c9d442173a220f08427f40a3ffa09"
UNINATIVE_CHECKSUM[x86_64] ?= "4c03d1ed2b7b4e823aca4a1a23d8f2e322f1770fc10e859adcede5777aff4f3a"
:term:`UNINATIVE_URL`
When inheriting the :ref:`ref-classes-uninative` class, the
:term:`UNINATIVE_URL` variable contains the URL where the uninative
tarballs are published.
:term:`UNKNOWN_CONFIGURE_OPT_IGNORE`
Specifies a list of options that, if reported by the configure script
as being invalid, should not generate a warning during the
@@ -9517,6 +9573,18 @@ system and gives an overview of their function and contents.
the Yocto Project Development Tasks Manual for information on how to
use this variable.
:term:`USE_NLS`
Determine if language translations should be built for recipes that can
build them. This variable can be equal to:
- ``yes``: translations are enabled.
- ``no``: translation are disabled.
Recipes can use the value of this variable to enable language
translations in their build. Classes such as :ref:`ref-classes-gettext`
use the value of this variable to enable :wikipedia:`Gettext <Gettext>`
support.
:term:`USE_VT`
When using
:ref:`SysVinit <dev-manual/new-recipe:enabling system services>`,

View File

@@ -113,7 +113,7 @@ If ``OEQA_DEBUGGING_SAVED_OUTPUT`` is set, any differing packages will be saved
here. The test is also able to run the ``diffoscope`` command on the output to
generate HTML files showing the differences between the packages, to aid
debugging. On the Autobuilder, these appear under
https://autobuilder.yocto.io/pub/repro-fail/ in the form ``oe-reproducible +
https://valkyrie.yocto.io/pub/repro-fail/ in the form ``oe-reproducible +
<date> + <random ID>``, e.g. ``oe-reproducible-20200202-1lm8o1th``.
The project's current reproducibility status can be seen at

View File

@@ -69,7 +69,7 @@ box to "generate an email to QA" is also checked.
When the build completes, an email is sent out using the ``send-qa-email``
script in the :yocto_git:`yocto-autobuilder-helper </yocto-autobuilder-helper>`
repository to the list of people configured for that release. Release builds
are placed into a directory in https://autobuilder.yocto.io/pub/releases on the
are placed into a directory in https://valkyrie.yocto.io/pub/releases on the
Autobuilder which is included in the email. The process from here is
more manual and control is effectively passed to release engineering.
The next steps include:

View File

@@ -38,7 +38,7 @@ Benefits
and flexible: it gives users the ultimate power to change pretty much any
aspect of the system but as with most things, power comes with responsibility.
The Yocto Project would like to see people able to mix and match BSPs with
distro configs or software stacks and be able to merge succesfully.
distro configs or software stacks and be able to merge successfully.
Over time, the project identified characteristics in layers that allow them
to operate well together. "anti-patterns" were also found, preventing layers
from working well together.

View File

@@ -1,7 +1,7 @@
DISTRO = "poky"
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
#DISTRO_VERSION = "3.4+snapshot-${METADATA_REVISION}"
DISTRO_VERSION = "4.0.30"
DISTRO_VERSION = "4.0.31"
DISTRO_CODENAME = "kirkstone"
SDK_VENDOR = "-pokysdk"
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"

View File

@@ -690,7 +690,7 @@ DEBIAN_MIRROR = "http://ftp.debian.org/debian/pool"
GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles"
GNOME_GIT = "git://gitlab.gnome.org/GNOME"
GNOME_MIRROR = "https://download.gnome.org/sources/"
GNU_MIRROR = "https://ftp.gnu.org/gnu"
GNU_MIRROR = "https://ftpmirror.gnu.org/gnu"
GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt"
GPE_MIRROR = "http://gpe.linuxtogo.org/download/source"
KERNELORG_MIRROR = "https://cdn.kernel.org/pub"

View File

@@ -17,7 +17,7 @@ class BuildCpioTest(OESDKTestCase):
"""
def test_cpio(self):
with tempfile.TemporaryDirectory(prefix="cpio-", dir=self.tc.sdk_dir) as testdir:
tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
tarball = self.fetch(testdir, self.td["DL_DIR"], "https://ftpmirror.gnu.org/gnu/cpio/cpio-2.13.tar.gz")
dirs = {}
dirs["source"] = os.path.join(testdir, "cpio-2.13")

View File

@@ -40,7 +40,7 @@ class MetaIDE(OESelftestTestCase):
def test_meta_ide_can_build_cpio_project(self):
dl_dir = self.td.get('DL_DIR', None)
self.project = SDKBuildProject(self.tmpdir_metaideQA + "/cpio/", self.environment_script_path,
"https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
"https://ftpmirror.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
self.project.download_archive()
self.assertEqual(self.project.run_configure('$CONFIGURE_FLAGS --disable-maintainer-mode','sed -i -e "/char \*program_name/d" src/global.c;'), 0,

View File

@@ -0,0 +1,75 @@
From 4cef2fc7308b2132317ad166939994f098b41561 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@arm.com>
Date: Tue, 9 Sep 2025 14:23:14 +0100
Subject: [PATCH] CVE-2024-56738
Backport an algorithmic change to grub_crypto_memcmp() so that it completes in
constant time and thus isn't susceptible to side-channel attacks.
This is a partial backport of grub 0739d24cd
("libgcrypt: Adjust import script, definitions and API users for libgcrypt 1.11")
CVE: CVE-2024-56738
Upstream-Status: Backport [0739d24cd]
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
---
grub-core/lib/crypto.c | 23 ++++++++++++++++-------
include/grub/crypto.h | 2 +-
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/grub-core/lib/crypto.c b/grub-core/lib/crypto.c
index ca334d5..1bfa922 100644
--- a/grub-core/lib/crypto.c
+++ b/grub-core/lib/crypto.c
@@ -433,19 +433,28 @@ grub_crypto_gcry_error (gcry_err_code_t in)
return GRUB_ACCESS_DENIED;
}
+/*
+ * Compare byte arrays of length LEN, return 1 if it's not same,
+ * 0, otherwise.
+ */
int
-grub_crypto_memcmp (const void *a, const void *b, grub_size_t n)
+grub_crypto_memcmp (const void *b1, const void *b2, grub_size_t len)
{
- register grub_size_t counter = 0;
- const grub_uint8_t *pa, *pb;
+ const grub_uint8_t *a = b1;
+ const grub_uint8_t *b = b2;
+ int ab, ba;
+ grub_size_t i;
- for (pa = a, pb = b; n; pa++, pb++, n--)
+ /* Constant-time compare. */
+ for (i = 0, ab = 0, ba = 0; i < len; i++)
{
- if (*pa != *pb)
- counter++;
+ /* If a[i] != b[i], either ab or ba will be negative. */
+ ab |= a[i] - b[i];
+ ba |= b[i] - a[i];
}
- return !!counter;
+ /* 'ab | ba' is negative when buffers are not equal, extract sign bit. */
+ return ((unsigned int)(ab | ba) >> (sizeof(unsigned int) * 8 - 1)) & 1;
}
#ifndef GRUB_UTIL
diff --git a/include/grub/crypto.h b/include/grub/crypto.h
index 21cd1f7..432912b 100644
--- a/include/grub/crypto.h
+++ b/include/grub/crypto.h
@@ -393,7 +393,7 @@ grub_crypto_pbkdf2 (const struct gcry_md_spec *md,
grub_uint8_t *DK, grub_size_t dkLen);
int
-grub_crypto_memcmp (const void *a, const void *b, grub_size_t n);
+grub_crypto_memcmp (const void *b1, const void *b2, grub_size_t len);
int
grub_password_get (char buf[], unsigned buf_size);
--
2.40.0

View File

@@ -59,6 +59,7 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://CVE-2025-0678_CVE-2025-1125.patch \
file://CVE-2025-0690.patch \
file://CVE-2025-1118.patch \
file://CVE-2024-56738.patch \
"
SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"
@@ -69,6 +70,8 @@ CVE_CHECK_IGNORE += "CVE-2019-14865"
CVE_CHECK_IGNORE += "CVE-2021-46705"
# not-applicable-platform: Applies only to RHEL/Fedora
CVE_CHECK_IGNORE += "CVE-2024-1048 CVE-2023-4001"
# not-applicable-platform: Applies only to Ubuntu
CVE_CHECK_IGNORE += "CVE-2024-2312"
DEPENDS = "flex-native bison-native gettext-native"

View File

@@ -25,7 +25,7 @@ SRC_URI:append:class-nativesdk = " \
file://environment.d-openssl.sh \
"
SRC_URI[sha256sum] = "dfdd77e4ea1b57ff3a6dbde6b0bdc3f31db5ac99e7fdd4eaf9e1fbb6ec2db8ce"
SRC_URI[sha256sum] = "d80c34f5cf902dccf1f1b5df5ebb86d0392e37049e5d73df1b3abae72e4ffe8b"
inherit lib_package multilib_header multilib_script ptest perlnative
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"

View File

@@ -0,0 +1,57 @@
From f5e1bf966b19ea1821f00a8c9ecd7774598689b4 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Wed, 24 Sep 2025 03:28:47 +0200
Subject: [PATCH] archival/libarchive: sanitize filenames on output (prevent
control sequence attacks
This fixes CVE-2025-46394 (terminal escape sequence injection)
Original credit: Ian.Norton at entrust.com
function old new delta
header_list 9 15 +6
header_verbose_list 239 244 +5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
CVE: CVE-2025-46394
Upstream-Status: Backport [https://git.busybox.net/busybox/commit/?id=f5e1bf966b19ea1821f00a8c9ecd7774598689b4]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
archival/libarchive/header_list.c | 2 +-
archival/libarchive/header_verbose_list.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/archival/libarchive/header_list.c b/archival/libarchive/header_list.c
index 0621aa406..9490b3635 100644
--- a/archival/libarchive/header_list.c
+++ b/archival/libarchive/header_list.c
@@ -8,5 +8,5 @@
void FAST_FUNC header_list(const file_header_t *file_header)
{
//TODO: cpio -vp DIR should output "DIR/NAME", not just "NAME" */
- puts(file_header->name);
+ puts(printable_string(file_header->name));
}
diff --git a/archival/libarchive/header_verbose_list.c b/archival/libarchive/header_verbose_list.c
index a575a08a0..e7a09430d 100644
--- a/archival/libarchive/header_verbose_list.c
+++ b/archival/libarchive/header_verbose_list.c
@@ -57,13 +57,13 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
ptm->tm_hour,
ptm->tm_min,
ptm->tm_sec,
- file_header->name);
+ printable_string(file_header->name));
#endif /* FEATURE_TAR_UNAME_GNAME */
/* NB: GNU tar shows "->" for symlinks and "link to" for hardlinks */
if (file_header->link_target) {
- printf(" -> %s", file_header->link_target);
+ printf(" -> %s", printable_string(file_header->link_target));
}
bb_putchar('\n');
}

View File

@@ -0,0 +1,32 @@
From 7378db981d87b4a2264e14d60340a7fb5c67ae59 Mon Sep 17 00:00:00 2001
From: Peter Marko <peter.marko@siemens.com>
Date: Fri, 3 Oct 2025 16:12:56 +0200
Subject: [PATCH] testsuite/tar.tests: fix test after CVE-2025-46394
tar now sanitizes output and this test needs to expect that.
Signed-off-by: Peter Marko <peter.marko@siemens.com>
CVE: CVE-2025-46394
Upstream-Status: Submitted [https://lists.busybox.net/pipermail/busybox/2025-October/091743.html]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
testsuite/tar.tests | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/testsuite/tar.tests b/testsuite/tar.tests
index 0f2e89112..48fc38114 100755
--- a/testsuite/tar.tests
+++ b/testsuite/tar.tests
@@ -325,9 +325,9 @@ unset LANG
rm -rf etc usr
' "\
etc/ssl/certs/3b2716e5.0
-etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
+etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??.pem
etc/ssl/certs/f80cc7f6.0
-usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt
+usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??.crt
0
etc/ssl/certs/3b2716e5.0 -> EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem
etc/ssl/certs/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.pem -> /usr/share/ca-certificates/mozilla/EBG_Elektronik_Sertifika_Hizmet_Sağlayıcısı.crt

View File

@@ -59,6 +59,8 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://CVE-2023-42366.patch \
file://0001-cut-Fix-s-flag-to-omit-blank-lines.patch \
file://CVE-2023-39810.patch \
file://CVE-2025-46394-01.patch \
file://CVE-2025-46394-02.patch \
"
SRC_URI:append:libc-musl = " file://musl.cfg "

View File

@@ -0,0 +1,83 @@
From 4dd540505d40babe488404f3174ec39f49a84485 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Mon, 4 Aug 2025 15:10:21 -0500
Subject: [PATCH] openssl: properly check return value when writing to BIO
objects
In particular, we will read out of bounds, and then write the invalid
memory, if BIO_write() fails when getting the PROP_CERTIFICATE_PEM
property. Here we attempt to check the return value, but the check is
not correct.
This also fixes a leak of the BIO in the same place.
Also add error checking to PROP_SUBJECT_NAME and PROP_ISSUER_NAME, for
good measure.
Fixes #226
CVE: CVE-2025-60018
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib-networking/-/commit/4dd540505d40babe488404f3174ec39f49a84485]
Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
---
tls/openssl/gtlscertificate-openssl.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/tls/openssl/gtlscertificate-openssl.c b/tls/openssl/gtlscertificate-openssl.c
index 648f3e8..b536559 100644
--- a/tls/openssl/gtlscertificate-openssl.c
+++ b/tls/openssl/gtlscertificate-openssl.c
@@ -362,15 +362,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_CERTIFICATE_PEM:
bio = BIO_new (BIO_s_mem ());
- if (!PEM_write_bio_X509 (bio, openssl->cert) || !BIO_write (bio, "\0", 1))
- certificate_pem = NULL;
- else
+ if (PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
{
BIO_get_mem_data (bio, &certificate_pem);
g_value_set_string (value, certificate_pem);
-
- BIO_free_all (bio);
}
+ BIO_free_all (bio);
break;
case PROP_PRIVATE_KEY:
@@ -411,8 +408,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_SUBJECT_NAME:
bio = BIO_new (BIO_s_mem ());
name = X509_get_subject_name (openssl->cert);
- X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS);
- BIO_write (bio, "\0", 1);
+ if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
+ BIO_write (bio, "\0", 1) != 1)
+ {
+ BIO_free_all (bio);
+ break;
+ }
BIO_get_mem_data (bio, (char **)&name_string);
g_value_set_string (value, name_string);
BIO_free_all (bio);
@@ -421,9 +422,13 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_ISSUER_NAME:
bio = BIO_new (BIO_s_mem ());
name = X509_get_issuer_name (openssl->cert);
- X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS);
- BIO_write (bio, "\0", 1);
- BIO_get_mem_data (bio, &name_string);
+ if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
+ BIO_write (bio, "\0", 1) != 1)
+ {
+ BIO_free_all (bio);
+ break;
+ }
+ BIO_get_mem_data (bio, (char **)&name_string);
g_value_set_string (value, name_string);
BIO_free_all (bio);
break;
--
2.48.1

View File

@@ -0,0 +1,137 @@
From 70df675dd4f5e4a593b2f95406c1aac031aa8bc7 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Thu, 21 Aug 2025 17:21:01 -0500
Subject: [PATCH] openssl: check return values of BIO_new()
We probably need to check even more return values of even more OpenSSL
functions, but these ones allocate memory and that's particularly
important to get right.
CVE: CVE-2025-60019
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib-networking/-/commit/70df675dd4f5e4a593b2f95406c1aac031aa8bc7]
Signed-off-by: Rajeshkumar Ramasamy <rajeshkumar.ramasamy@windriver.com>
---
tls/openssl/gtlscertificate-openssl.c | 39 ++++++++++++++++++++-------
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/tls/openssl/gtlscertificate-openssl.c b/tls/openssl/gtlscertificate-openssl.c
index 8f828a7..f7fde51 100644
--- a/tls/openssl/gtlscertificate-openssl.c
+++ b/tls/openssl/gtlscertificate-openssl.c
@@ -156,6 +156,9 @@ export_privkey_to_der (GTlsCertificateOpenssl *openssl,
goto err;
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ goto err;
+
if (i2d_PKCS8_PRIV_KEY_INFO_bio (bio, pkcs8) == 0)
goto err;
@@ -189,6 +192,9 @@ export_privkey_to_pem (GTlsCertificateOpenssl *openssl)
return NULL;
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ goto out;
+
ret = PEM_write_bio_PKCS8PrivateKey (bio, openssl->key, NULL, NULL, 0, NULL, NULL);
if (ret == 0)
goto out;
@@ -201,7 +207,7 @@ export_privkey_to_pem (GTlsCertificateOpenssl *openssl)
result = g_strdup (data);
out:
- BIO_free_all (bio);
+ g_clear_pointer (&bio, BIO_free_all);
return result;
}
@@ -216,7 +222,7 @@ g_tls_certificate_openssl_get_property (GObject *object,
guint8 *data;
BIO *bio;
GByteArray *byte_array;
- char *certificate_pem;
+ const char *certificate_pem;
long size;
const ASN1_TIME *time_asn1;
@@ -251,12 +257,12 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_CERTIFICATE_PEM:
bio = BIO_new (BIO_s_mem ());
- if (PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
+ if (bio && PEM_write_bio_X509 (bio, openssl->cert) == 1 && BIO_write (bio, "\0", 1) == 1)
{
BIO_get_mem_data (bio, &certificate_pem);
g_value_set_string (value, certificate_pem);
}
- BIO_free_all (bio);
+ g_clear_pointer (&bio, BIO_free_all);
break;
case PROP_PRIVATE_KEY:
@@ -296,6 +302,8 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_SUBJECT_NAME:
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ break;
name = X509_get_subject_name (openssl->cert);
if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
BIO_write (bio, "\0", 1) != 1)
@@ -310,6 +318,8 @@ g_tls_certificate_openssl_get_property (GObject *object,
case PROP_ISSUER_NAME:
bio = BIO_new (BIO_s_mem ());
+ if (!bio)
+ break;
name = X509_get_issuer_name (openssl->cert);
if (X509_NAME_print_ex (bio, name, 0, XN_FLAG_SEP_COMMA_PLUS) < 0 ||
BIO_write (bio, "\0", 1) != 1)
@@ -377,8 +387,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_cert == FALSE);
bio = BIO_new_mem_buf ((gpointer)string, -1);
- openssl->cert = PEM_read_bio_X509 (bio, NULL, NULL, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->cert = PEM_read_bio_X509 (bio, NULL, NULL, NULL);
+ BIO_free (bio);
+ }
if (openssl->cert)
openssl->have_cert = TRUE;
else if (!openssl->construct_error)
@@ -397,8 +410,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_key == FALSE);
bio = BIO_new_mem_buf (bytes->data, bytes->len);
- openssl->key = d2i_PrivateKey_bio (bio, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->key = d2i_PrivateKey_bio (bio, NULL);
+ BIO_free (bio);
+ }
if (openssl->key)
openssl->have_key = TRUE;
else if (!openssl->construct_error)
@@ -417,8 +433,11 @@ g_tls_certificate_openssl_set_property (GObject *object,
break;
g_return_if_fail (openssl->have_key == FALSE);
bio = BIO_new_mem_buf ((gpointer)string, -1);
- openssl->key = PEM_read_bio_PrivateKey (bio, NULL, NULL, NULL);
- BIO_free (bio);
+ if (bio)
+ {
+ openssl->key = PEM_read_bio_PrivateKey (bio, NULL, NULL, NULL);
+ BIO_free (bio);
+ }
if (openssl->key)
openssl->have_key = TRUE;
else if (!openssl->construct_error)
--
2.48.1

View File

@@ -24,6 +24,8 @@ GNOMEBASEBUILDCLASS = "meson"
inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
SRC_URI += "file://run-ptest"
SRC_URI += "file://CVE-2025-60018.patch"
SRC_URI += "file://CVE-2025-60019.patch"
FILES:${PN} += "\
${libdir}/gio/modules/libgio*.so \

View File

@@ -1,6 +1,6 @@
SRCBRANCH ?= "release/2.35/master"
PV = "2.35"
SRCREV_glibc ?= "a66bc3941ff298e474d5f02d0c3303401951141f"
SRCREV_glibc ?= "4e50046821f05ada5f14c76803845125ddb3ed7d"
SRCREV_localedef ?= "794da69788cbf9bf57b59a852f9f11307663fa87"
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"

View File

@@ -1,6 +1,6 @@
From 31d9848830e496f57d4182b518467c4c63bfd4bd Mon Sep 17 00:00:00 2001
From 0402999b82f697011de388f61bad68da26060bef Mon Sep 17 00:00:00 2001
From: Frank Barrus <frankbarrus_sw@shaggy.cc>
Date: Mon, 16 Jun 2025 22:37:54 -0700
Date: Tue, 14 Oct 2025 03:55:17 -0700
Subject: [PATCH] pthreads NPTL: lost wakeup fix 2
This fixes the lost wakeup (from a bug in signal stealing) with a change
@@ -65,18 +65,19 @@ full wakeup from a G1/G2 switch.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
Commit : 1db84775f831a1494993ce9c118deaf9537cc50a
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=1db84775f831a1494993ce9c118deaf9537cc50a]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002277.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_common.c | 106 +++++++++------------------
nptl/pthread_cond_common.c | 105 +++++++++------------------
nptl/pthread_cond_wait.c | 144 ++++++++++++-------------------------
2 files changed, 81 insertions(+), 169 deletions(-)
2 files changed, 81 insertions(+), 168 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index fb035f72c3..8dd7037923 100644
index fb035f72..a55eee3e 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -201,7 +201,6 @@ static bool __attribute__ ((unused))
@@ -87,7 +88,7 @@ index fb035f72c3..8dd7037923 100644
unsigned int g1 = *g1index;
/* If there is no waiter in G2, we don't do anything. The expression may
@@ -222,85 +221,46 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -222,84 +221,46 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
* New waiters arriving concurrently with the group switching will all go
into G2 until we atomically make the switch. Waiters existing in G2
are not affected.
@@ -176,7 +177,6 @@ index fb035f72c3..8dd7037923 100644
- that this is now a new group (see __pthread_cond_wait_common for the
- matching acquire MO loads). */
- atomic_store_release (cond->__data.__g_signals + g1, 0);
-
+ unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+
+ /* If any waiters still hold group references (and thus could be blocked),
@@ -201,10 +201,10 @@ index fb035f72c3..8dd7037923 100644
+
+ futex_wake (cond->__data.__g_signals + g1, INT_MAX, private);
+ }
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
noticing that __g1_start is larger.
@@ -311,6 +271,10 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -311,6 +272,10 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
@@ -216,7 +216,7 @@ index fb035f72c3..8dd7037923 100644
lock. */
unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 20c348a503..1cb3dbf7b0 100644
index 20c348a5..1cb3dbf7 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -238,9 +238,7 @@ __condvar_cleanup_waiting (void *arg)

View File

@@ -0,0 +1,54 @@
From 4f78382dd671f381db6d1f452e6f1593d17b177e Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Tue, 14 Oct 2025 06:53:40 -0700
Subject: [PATCH] nptl: PTHREAD_COND_INITIALIZER compatibility with pre-2.41
versions (bug 32786)
The new initializer and struct layout does not initialize the
__g_signals field in the old struct layout before the change in
commit c36fc50781995e6758cae2b6927839d0157f213c ("nptl: Remove
g_refs from condition variables"). Bring back fields at the end
of struct __pthread_cond_s, so that they are again zero-initialized.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: dbc5a50d12eff4cb3f782129029d04b8a76f58e7
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002282.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
sysdeps/nptl/bits/thread-shared-types.h | 2 ++
sysdeps/nptl/pthread.h | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h
index 6f17afa4..2354ea21 100644
--- a/sysdeps/nptl/bits/thread-shared-types.h
+++ b/sysdeps/nptl/bits/thread-shared-types.h
@@ -99,6 +99,8 @@ struct __pthread_cond_s
unsigned int __g1_orig_size;
unsigned int __wrefs;
unsigned int __g_signals[2];
+ unsigned int __unused_initialized_1;
+ unsigned int __unused_initialized_2;
};
typedef unsigned int __tss_t;
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index bbb36540..8d6d24ff 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -152,7 +152,7 @@ enum
/* Conditional variable handling. */
-#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } }
+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0}, 0, 0 } }
/* Cleanup buffers */
--
2.49.0

View File

@@ -1,6 +1,6 @@
From 6aab1191e35a3da66e8c49d95178a9d77c119a1f Mon Sep 17 00:00:00 2001
From 306ea7810f5f6709ef3942a7be75077203b5d201 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:17:53 -0700
Date: Tue, 14 Oct 2025 04:27:19 -0700
Subject: [PATCH] nptl: Update comments and indentation for new condvar
implementation
@@ -9,9 +9,10 @@ Also fixing indentation where it was using spaces instead of tabs.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 0cc973160c23bb67f895bc887dd6942d29f8fee3
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=0cc973160c23bb67f895bc887dd6942d29f8fee3]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002275.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
@@ -20,7 +21,7 @@ Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 8dd7037923..306a207dd6 100644
index a55eee3e..350a16fa 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -221,8 +221,9 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -36,7 +37,7 @@ index 8dd7037923..306a207dd6 100644
__g_signals since it provides enough signals for all possible
remaining waiters. As a result, they can each consume a signal
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 1cb3dbf7b0..cee1968756 100644
index 1cb3dbf7..cee19687 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -249,7 +249,7 @@ __condvar_cleanup_waiting (void *arg)

View File

@@ -1,6 +1,6 @@
From 28a5082045429fdc5a4744d45fdc5b5202528eaa Mon Sep 17 00:00:00 2001
From 5f22e8cf95cf6b3b2e16ddb03820ae3e77fd420d Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:29:49 -0700
Date: Tue, 14 Oct 2025 04:47:48 -0700
Subject: [PATCH] nptl: Remove unnecessary catch-all-wake in condvar group
switch
@@ -15,17 +15,18 @@ switch g1 when it should, so we wouldn't even have entered this code path.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: b42cc6af11062c260c7dfa91f1c89891366fed3e
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=b42cc6af11062c260c7dfa91f1c89891366fed3e]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002274.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_common.c | 30 +-----------------------------
1 file changed, 1 insertion(+), 29 deletions(-)
nptl/pthread_cond_common.c | 31 +------------------------------
1 file changed, 1 insertion(+), 30 deletions(-)
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 306a207dd6..f976a533a1 100644
index 350a16fa..f976a533 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -221,13 +221,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -43,7 +44,7 @@ index 306a207dd6..f976a533a1 100644
/* Update __g1_start, which finishes closing this group. The value we add
will never be negative because old_orig_size can only be zero when we
@@ -240,28 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
@@ -240,29 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
@@ -69,6 +70,7 @@ index 306a207dd6..f976a533a1 100644
-
- futex_wake (cond->__data.__g_signals + g1, INT_MAX, private);
- }
-
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
noticing that __g1_start is larger.

View File

@@ -1,6 +1,6 @@
From 16b9af737c77b153fca4f36cbdbe94f7416c0b42 Mon Sep 17 00:00:00 2001
From d714165c8bb3cac420077cfa61e3df87ea7f8b2c Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:38:40 -0700
Date: Tue, 14 Oct 2025 05:34:06 -0700
Subject: [PATCH] nptl: Remove unnecessary quadruple check in pthread_cond_wait
pthread_cond_wait was checking whether it was in a closed group no less than
@@ -22,9 +22,10 @@ Removing the duplicate checks clarifies the code.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 4f7b051f8ee3feff1b53b27a906f245afaa9cee1
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=4f7b051f8ee3feff1b53b27a906f245afaa9cee1]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002276.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
@@ -32,7 +33,7 @@ Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
1 file changed, 49 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index cee1968756..47e834cade 100644
index cee19687..47e834ca 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -366,7 +366,6 @@ static __always_inline int

View File

@@ -1,105 +1,188 @@
From d9ffb50dc55f77e584a5d0275eea758c7a6b04e3 Mon Sep 17 00:00:00 2001
From f904a81ff8d0469ceaf3220329e716c03fcbd2d3 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Mon, 16 Jun 2025 23:53:35 -0700
Subject: [PATCH] nptl: Use a single loop in pthread_cond_wait instaed of a
nested loop
Date: Tue, 14 Oct 2025 05:59:02 -0700
Subject: [PATCH] nptl: Remove g_refs from condition variables
The loop was a little more complicated than necessary. There was only one
break statement out of the inner loop, and the outer loop was nearly empty.
So just remove the outer loop, moving its code to the one break statement in
the inner loop. This allows us to replace all gotos with break statements.
This variable used to be needed to wait in group switching until all sleepers
have confirmed that they have woken. This is no longer needed. Nothing waits
on this variable so there is no need to track how many threads are currently
asleep in each group.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
cmmit: c36fc50781995e6758cae2b6927839d0157f213c
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=929a4764ac90382616b6a21f099192b2475da674]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002278.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_wait.c | 41 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 22 deletions(-)
nptl/pthread_cond_wait.c | 52 +------------------------
nptl/tst-cond22.c | 12 +++---
sysdeps/nptl/bits/thread-shared-types.h | 3 +-
sysdeps/nptl/pthread.h | 2 +-
4 files changed, 9 insertions(+), 60 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 47e834cade..5c86880105 100644
index 47e834ca..8a9219e0 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -410,17 +410,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
return err;
@@ -143,23 +143,6 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
}
}
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
-
- do
-/* Wake up any signalers that might be waiting. */
-static void
-__condvar_dec_grefs (pthread_cond_t *cond, unsigned int g, int private)
-{
- /* Release MO to synchronize-with the acquire load in
- __condvar_quiesce_and_switch_g1. */
- if (atomic_fetch_add_release (cond->__data.__g_refs + g, -2) == 3)
- {
+
while (1)
{
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -429,7 +427,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If the group is closed already,
then this waiter originally had enough extra signals to
consume, up until the time its group was closed. */
- goto done;
+ break;
}
/* If there is an available signal, don't block.
@@ -438,8 +436,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
if ((int)(signals - lowseq) >= 2)
- break;
- /* Clear the wake-up request flag before waking up. We do not need more
- than relaxed MO and it doesn't matter if we apply this for an aliased
- group because we wake all futex waiters right after clearing the
- flag. */
- atomic_fetch_and_relaxed (cond->__data.__g_refs + g, ~(unsigned int) 1);
- futex_wake (cond->__data.__g_refs + g, INT_MAX, private);
- }
-}
-
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
+ &signals, signals - 2))
+ break;
+ else
+ continue;
+ }
/* No signals available after spinning, so prepare to block.
We first acquire a group reference and use acquire MO for that so
that we synchronize with the dummy read-modify-write in
@@ -479,21 +485,12 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
the lock during cancellation is not possible. */
/* Clean-up for cancellation of waiters waiting for normal signals. We cancel
our registration as a waiter, confirm we have woken up, and re-acquire the
mutex. */
@@ -171,8 +154,6 @@ __condvar_cleanup_waiting (void *arg)
pthread_cond_t *cond = cbuffer->cond;
unsigned g = cbuffer->wseq & 1;
- __condvar_dec_grefs (cond, g, cbuffer->private);
-
__condvar_cancel_waiting (cond, cbuffer->wseq >> 1, g, cbuffer->private);
/* FIXME With the current cancellation implementation, it is possible that
a thread is cancelled after it has returned from a syscall. This could
@@ -327,15 +308,6 @@ __condvar_cleanup_waiting (void *arg)
sufficient because if a waiter can see a sufficiently large value, it could
have also consume a signal in the waiters group.
- It is essential that the last field in pthread_cond_t is __g_signals[1]:
- The previous condvar used a pointer-sized field in pthread_cond_t, so a
- PTHREAD_COND_INITIALIZER from that condvar implementation might only
- initialize 4 bytes to zero instead of the 8 bytes we need (i.e., 44 bytes
- in total instead of the 48 we need). __g_signals[1] is not accessed before
- the first group switch (G2 starts at index 0), which will set its value to
- zero after a harmless fetch-or whose return value is ignored. This
- effectively completes initialization.
-
Limitations:
* This condvar isn't designed to allow for more than
@@ -440,21 +412,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
if ((int)(signals - lowseq) >= 2)
break;
- /* No signals available after spinning, so prepare to block.
- We first acquire a group reference and use acquire MO for that so
- that we synchronize with the dummy read-modify-write in
- __condvar_quiesce_and_switch_g1 if we read from that. In turn,
- in this case this will make us see the advancement of __g_signals
- to the upcoming new g1_start that occurs with a concurrent
- attempt to reuse the group's slot.
- We use acquire MO for the __g_signals check to make the
- __g1_start check work (see spinning above).
- Note that the group reference acquisition will not mask the
- release MO when decrementing the reference count because we use
- an atomic read-modify-write operation and thus extend the release
- sequence. */
- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2);
-
// Now block.
struct _pthread_cleanup_buffer buffer;
struct _condvar_cleanup_buffer cbuffer;
@@ -471,18 +428,11 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
{
- __condvar_dec_grefs (cond, g, private);
- /* If we timed out, we effectively cancel waiting. Note that
- we have decremented __g_refs before cancellation, so that a
- deadlock between waiting for quiescence of our group in
- __condvar_quiesce_and_switch_g1 and us trying to acquire
- the lock during cancellation is not possible. */
+ /* If we timed out, we effectively cancel waiting. */
__condvar_cancel_waiting (cond, seq, g, private);
result = err;
- goto done;
+ break;
goto done;
}
else
__condvar_dec_grefs (cond, g, private);
- else
- __condvar_dec_grefs (cond, g, private);
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
}
- }
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g,
- &signals, signals - 2));
-
- done:
/* Reload signals. See above for MO. */
signals = atomic_load_acquire (cond->__data.__g_signals + g);
diff --git a/nptl/tst-cond22.c b/nptl/tst-cond22.c
index 1336e9c7..bdcb45c5 100644
--- a/nptl/tst-cond22.c
+++ b/nptl/tst-cond22.c
@@ -106,13 +106,13 @@ do_test (void)
status = 1;
}
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
if (pthread_create (&th, NULL, tf, (void *) 1l) != 0)
@@ -152,13 +152,13 @@ do_test (void)
status = 1;
}
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
return status;
diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h
index 5653507e..6f17afa4 100644
--- a/sysdeps/nptl/bits/thread-shared-types.h
+++ b/sysdeps/nptl/bits/thread-shared-types.h
@@ -95,8 +95,7 @@ struct __pthread_cond_s
{
__atomic_wide_counter __wseq;
__atomic_wide_counter __g1_start;
- unsigned int __g_refs[2] __LOCK_ALIGNMENT;
- unsigned int __g_size[2];
+ unsigned int __g_size[2] __LOCK_ALIGNMENT;
unsigned int __g1_orig_size;
unsigned int __wrefs;
unsigned int __g_signals[2];
diff --git a/sysdeps/nptl/pthread.h b/sysdeps/nptl/pthread.h
index dedad4ec..bbb36540 100644
--- a/sysdeps/nptl/pthread.h
+++ b/sysdeps/nptl/pthread.h
@@ -152,7 +152,7 @@ enum
/* Conditional variable handling. */
-#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }
+#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, 0, 0, {0, 0} } }
/* Cleanup buffers */
--
2.49.0

View File

@@ -1,166 +1,100 @@
From a2faee6d0dac6e5232255da9afda4d9ed6cfb6e5 Mon Sep 17 00:00:00 2001
From bbd7c84a1a14bf93bf1e5976d8a1540aabbf901b Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 01:37:12 -0700
Subject: [PATCH] nptl: Fix indentation
Date: Tue, 14 Oct 2025 06:19:02 -0700
Subject: [PATCH] nptl: Use a single loop in pthread_cond_wait instaed of a
nested loop
In my previous change I turned a nested loop into a simple loop. I'm doing
the resulting indentation changes in a separate commit to make the diff on
the previous commit easier to review.
The loop was a little more complicated than necessary. There was only one
break statement out of the inner loop, and the outer loop was nearly empty.
So just remove the outer loop, moving its code to the one break statement in
the inner loop. This allows us to replace all gotos with break statements.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 929a4764ac90382616b6a21f099192b2475da674
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=ee6c14ed59d480720721aaacc5fb03213dc153da]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002279.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_wait.c | 132 ++++++++++++++++-----------------------
1 file changed, 54 insertions(+), 78 deletions(-)
nptl/pthread_cond_wait.c | 41 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 22 deletions(-)
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 5c86880105..104ebd48ca 100644
index 8a9219e0..c8c99bbf 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -410,87 +410,63 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
@@ -382,17 +382,15 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
return err;
}
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
-
- while (1)
- {
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
-
- if (seq < (g1_start >> 1))
- {
- /* If the group is closed already,
- then this waiter originally had enough extra signals to
- consume, up until the time its group was closed. */
- break;
- }
-
- /* If there is an available signal, don't block.
- If __g1_start has advanced at all, then we must be in G1
- by now, perhaps in the process of switching back to an older
- G2, but in either case we're allowed to consume the available
- signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
- {
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- if (atomic_compare_exchange_weak_acquire (
- cond->__data.__g_signals + g,
+ while (1)
+ {
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- do
- {
+
+ if (seq < (g1_start >> 1))
+ {
+ /* If the group is closed already,
+ then this waiter originally had enough extra signals to
+ consume, up until the time its group was closed. */
+ break;
+ }
+
+ /* If there is an available signal, don't block.
+ If __g1_start has advanced at all, then we must be in G1
+ by now, perhaps in the process of switching back to an older
+ G2, but in either case we're allowed to consume the available
+ signal and should not block anymore. */
+ if ((int)(signals - lowseq) >= 2)
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
&signals, signals - 2))
- break;
- else
- continue;
- }
- /* No signals available after spinning, so prepare to block.
- We first acquire a group reference and use acquire MO for that so
- that we synchronize with the dummy read-modify-write in
- __condvar_quiesce_and_switch_g1 if we read from that. In turn,
- in this case this will make us see the advancement of __g_signals
- to the upcoming new g1_start that occurs with a concurrent
- attempt to reuse the group's slot.
- We use acquire MO for the __g_signals check to make the
- __g1_start check work (see spinning above).
- Note that the group reference acquisition will not mask the
- release MO when decrementing the reference count because we use
- an atomic read-modify-write operation and thus extend the release
- sequence. */
- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2);
while (1)
{
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -401,7 +399,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If the group is closed already,
then this waiter originally had enough extra signals to
consume, up until the time its group was closed. */
- goto done;
+ break;
}
/* If there is an available signal, don't block.
@@ -410,7 +408,16 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
if ((int)(signals - lowseq) >= 2)
- break;
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
+ &signals, signals - 2))
+ break;
+ else
+ continue;
+ }
// Now block.
struct _pthread_cleanup_buffer buffer;
@@ -431,19 +438,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
/* If we timed out, we effectively cancel waiting. */
__condvar_cancel_waiting (cond, seq, g, private);
result = err;
- goto done;
+ break;
}
-
- // Now block.
- struct _pthread_cleanup_buffer buffer;
- struct _condvar_cleanup_buffer cbuffer;
- cbuffer.wseq = wseq;
- cbuffer.cond = cond;
- cbuffer.mutex = mutex;
- cbuffer.private = private;
- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
-
- err = __futex_abstimed_wait_cancelable64 (
- cond->__data.__g_signals + g, signals, clockid, abstime, private);
-
- __pthread_cleanup_pop (&buffer, 0);
-
- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
- {
- __condvar_dec_grefs (cond, g, private);
- /* If we timed out, we effectively cancel waiting. Note that
- we have decremented __g_refs before cancellation, so that a
- deadlock between waiting for quiescence of our group in
- __condvar_quiesce_and_switch_g1 and us trying to acquire
- the lock during cancellation is not possible. */
- __condvar_cancel_waiting (cond, seq, g, private);
- result = err;
break;
- }
- else
- __condvar_dec_grefs (cond, g, private);
-
+ else
+ continue;
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
}
+ // Now block.
+ struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ cbuffer.wseq = wseq;
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+ cbuffer.private = private;
+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
+
+ err = __futex_abstimed_wait_cancelable64 (
+ cond->__data.__g_signals + g, signals, clockid, abstime, private);
+
+ __pthread_cleanup_pop (&buffer, 0);
+
+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
+ {
+ /* If we timed out, we effectively cancel waiting. */
+ __condvar_cancel_waiting (cond, seq, g, private);
+ result = err;
+ break;
+ }
+ }
- }
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g,
- &signals, signals - 2));
-
- done:
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the

View File

@@ -1,160 +1,149 @@
From 2a601ac9041e2ca645acad2c174b1c545cfceafe Mon Sep 17 00:00:00 2001
From 1077953950d1e8864c63222967141c67f51297f8 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 01:53:25 -0700
Subject: [PATCH] nptl: rename __condvar_quiesce_and_switch_g1
Date: Tue, 14 Oct 2025 06:27:04 -0700
Subject: [PATCH] nptl: Fix indentation
This function no longer waits for threads to leave g1, so rename it to
__condvar_switch_g1
In my previous change I turned a nested loop into a simple loop. I'm doing
the resulting indentation changes in a separate commit to make the diff on
the previous commit easier to review.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: ee6c14ed59d480720721aaacc5fb03213dc153da
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=4b79e27a5073c02f6bff9aa8f4791230a0ab1867]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002280.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++++--------------
nptl/pthread_cond_signal.c | 17 ++++++++---------
nptl/pthread_cond_wait.c | 9 ++++-----
4 files changed, 26 insertions(+), 30 deletions(-)
nptl/pthread_cond_wait.c | 110 +++++++++++++++++++--------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index 5ae141ac81..a07435589a 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -60,7 +60,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
cond->__data.__g_size[g1] << 1);
cond->__data.__g_size[g1] = 0;
- /* We need to wake G1 waiters before we quiesce G1 below. */
+ /* We need to wake G1 waiters before we switch G1 below. */
/* TODO Only set it if there are indeed futex waiters. We could
also try to move this out of the critical section in cases when
G2 is empty (and we don't need to quiesce). */
@@ -69,7 +69,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
/* G1 is complete. Step (2) is next unless there are no waiters in G2, in
which case we can stop. */
- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ if (__condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index f976a533a1..3baac4dabc 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -189,16 +189,15 @@ __condvar_get_private (int flags)
return FUTEX_SHARED;
}
-/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to
- leave G1, converts G1 into a fresh G2, and then switches group roles so that
- the former G2 becomes the new G1 ending at the current __wseq value when we
- eventually make the switch (WSEQ is just an observation of __wseq by the
- signaler).
+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2,
+ and then switches group roles so that the former G2 becomes the new G1
+ ending at the current __wseq value when we eventually make the switch
+ (WSEQ is just an observation of __wseq by the signaler).
If G2 is empty, it will not switch groups because then it would create an
empty G1 which would require switching groups again on the next signal.
Returns false iff groups were not switched because G2 was empty. */
static bool __attribute__ ((unused))
-__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int *g1index, int private)
{
unsigned int g1 = *g1index;
@@ -214,8 +213,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+ cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
- /* Now try to close and quiesce G1. We have to consider the following kinds
- of waiters:
+ /* We have to consider the following kinds of waiters:
* Waiters from less recent groups than G1 are not affected because
nothing will change for them apart from __g1_start getting larger.
* New waiters arriving concurrently with the group switching will all go
@@ -223,12 +221,12 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which finishes closing this group. The value we add
- will never be negative because old_orig_size can only be zero when we
- switch groups the first time after a condvar was initialized, in which
- case G1 will be at index 1 and we will add a value of 1.
- Relaxed MO is fine because the change comes with no additional
- constraints that others would have to observe. */
+ /* Update __g1_start, which closes this group. The value we add will never
+ be negative because old_orig_size can only be zero when we switch groups
+ the first time after a condvar was initialized, in which case G1 will be
+ at index 1 and we will add a value of 1. Relaxed MO is fine because the
+ change comes with no additional constraints that others would have to
+ observe. */
__condvar_add_g1_start_relaxed (cond,
(old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index 14800ba00b..a9bc10dcca 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -69,18 +69,17 @@ ___pthread_cond_signal (pthread_cond_t *cond)
bool do_futex_wake = false;
/* If G1 is still receiving signals, we put the signal there. If not, we
- check if G2 has waiters, and if so, quiesce and switch G1 to the former
- G2; if this results in a new G1 with waiters (G2 might have cancellations
- already, see __condvar_quiesce_and_switch_g1), we put the signal in the
- new G1. */
+ check if G2 has waiters, and if so, switch G1 to the former G2; if this
+ results in a new G1 with waiters (G2 might have cancellations already,
+ see __condvar_switch_g1), we put the signal in the new G1. */
if ((cond->__data.__g_size[g1] != 0)
- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ || __condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Add a signal. Relaxed MO is fine because signaling does not need to
- establish a happens-before relation (see above). We do not mask the
- release-MO store when initializing a group in
- __condvar_quiesce_and_switch_g1 because we use an atomic
- read-modify-write and thus extend that store's release sequence. */
+ establish a happens-before relation (see above). We do not mask the
+ release-MO store when initializing a group in __condvar_switch_g1
+ because we use an atomic read-modify-write and thus extend that
+ store's release sequence. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 104ebd48ca..bb46f3605d 100644
index c8c99bbf..adf26a80 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -382,8 +382,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
because we do not need to establish any happens-before relation with
signalers (see __pthread_cond_signal); modification order alone
establishes a total order of waiters/signals. We do need acquire MO
- to synchronize with group reinitialization in
- __condvar_quiesce_and_switch_g1. */
+ to synchronize with group reinitialization in __condvar_switch_g1. */
uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2);
/* Find our group's index. We always go into what was G2 when we acquired
our position. */
@@ -414,9 +413,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
{
/* Now wait until a signal is available in our group or it is closed.
Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
+ switching in __condvar_switch_g1, we synchronize with that store and
+ will see the prior update of __g1_start done while switching groups
+ too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
@@ -383,65 +383,65 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
}
- while (1)
- {
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
-
- if (seq < (g1_start >> 1))
- {
- /* If the group is closed already,
- then this waiter originally had enough extra signals to
- consume, up until the time its group was closed. */
- break;
- }
-
- /* If there is an available signal, don't block.
- If __g1_start has advanced at all, then we must be in G1
- by now, perhaps in the process of switching back to an older
- G2, but in either case we're allowed to consume the available
- signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
- {
- /* Try to grab a signal. See above for MO. (if we do another loop
- iteration we need to see the correct value of g1_start) */
- if (atomic_compare_exchange_weak_acquire (
- cond->__data.__g_signals + g,
+ while (1)
+ {
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_quiesce_and_switch_g1, we synchronize with that
+ store and will see the prior update of __g1_start done while switching
+ groups too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
+ unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
+
+ if (seq < (g1_start >> 1))
+ {
+ /* If the group is closed already,
+ then this waiter originally had enough extra signals to
+ consume, up until the time its group was closed. */
+ break;
+ }
+
+ /* If there is an available signal, don't block.
+ If __g1_start has advanced at all, then we must be in G1
+ by now, perhaps in the process of switching back to an older
+ G2, but in either case we're allowed to consume the available
+ signal and should not block anymore. */
+ if ((int)(signals - lowseq) >= 2)
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
&signals, signals - 2))
- break;
- else
- continue;
- }
-
- // Now block.
- struct _pthread_cleanup_buffer buffer;
- struct _condvar_cleanup_buffer cbuffer;
- cbuffer.wseq = wseq;
- cbuffer.cond = cond;
- cbuffer.mutex = mutex;
- cbuffer.private = private;
- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
-
- err = __futex_abstimed_wait_cancelable64 (
- cond->__data.__g_signals + g, signals, clockid, abstime, private);
-
- __pthread_cleanup_pop (&buffer, 0);
-
- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
- {
- /* If we timed out, we effectively cancel waiting. */
- __condvar_cancel_waiting (cond, seq, g, private);
- result = err;
break;
- }
+ else
+ continue;
}
+ // Now block.
+ struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ cbuffer.wseq = wseq;
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+ cbuffer.private = private;
+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
+
+ err = __futex_abstimed_wait_cancelable64 (
+ cond->__data.__g_signals + g, signals, clockid, abstime, private);
+
+ __pthread_cleanup_pop (&buffer, 0);
+
+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
+ {
+ /* If we timed out, we effectively cancel waiting. */
+ __condvar_cancel_waiting (cond, seq, g, private);
+ result = err;
+ break;
+ }
+ }
+
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the
mutex. */
--
2.49.0

View File

@@ -1,192 +1,161 @@
From fc074de88796eb2036fbe9bade638e00adfd5cb2 Mon Sep 17 00:00:00 2001
From 20d84dfa0b9a32f88259269bbeaae588744ae4ae Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 17 Jun 2025 02:08:36 -0700
Subject: [PATCH] nptl: Use all of g1_start and g_signals
Date: Tue, 14 Oct 2025 06:33:50 -0700
Subject: [PATCH] nptl: rename __condvar_quiesce_and_switch_g1
The LSB of g_signals was unused. The LSB of g1_start was used to indicate
which group is G2. This was used to always go to sleep in pthread_cond_wait
if a waiter is in G2. A comment earlier in the file says that this is not
correct to do:
"Waiters cannot determine whether they are currently in G2 or G1 -- but they
do not have to because all they are interested in is whether there are
available signals"
I either would have had to update the comment, or get rid of the check. I
chose to get rid of the check. In fact I don't quite know why it was there.
There will never be available signals for group G2, so we didn't need the
special case. Even if there were, this would just be a spurious wake. This
might have caught some cases where the count has wrapped around, but it
wouldn't reliably do that, (and even if it did, why would you want to force a
sleep in that case?) and we don't support that many concurrent waiters
anyway. Getting rid of it allows us to use one more bit, making us more
robust to wraparound.
This function no longer waits for threads to leave g1, so rename it to
__condvar_switch_g1
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 4b79e27a5073c02f6bff9aa8f4791230a0ab1867
Upstream-Status: Backport
[https://sourceware.org/git/?p=glibc.git;a=commit;h=91bb902f58264a2fd50fbce8f39a9a290dd23706]
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002281.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++----------------
nptl/pthread_cond_signal.c | 2 +-
nptl/pthread_cond_wait.c | 14 +++++---------
4 files changed, 18 insertions(+), 28 deletions(-)
nptl/pthread_cond_common.c | 26 ++++++++++++--------------
nptl/pthread_cond_signal.c | 17 ++++++++---------
nptl/pthread_cond_wait.c | 9 ++++-----
4 files changed, 26 insertions(+), 30 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index a07435589a..ef0943cdc5 100644
index 5ae141ac..a0743558 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -57,7 +57,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Add as many signals as the remaining size of the group. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
@@ -60,7 +60,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
cond->__data.__g_size[g1] << 1);
cond->__data.__g_size[g1] = 0;
/* We need to wake G1 waiters before we switch G1 below. */
@@ -73,7 +73,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
- /* We need to wake G1 waiters before we quiesce G1 below. */
+ /* We need to wake G1 waiters before we switch G1 below. */
/* TODO Only set it if there are indeed futex waiters. We could
also try to move this out of the critical section in cases when
G2 is empty (and we don't need to quiesce). */
@@ -69,7 +69,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
/* G1 is complete. Step (2) is next unless there are no waiters in G2, in
which case we can stop. */
- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ if (__condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 3baac4dabc..e48f914321 100644
index f976a533..3baac4da 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -208,9 +208,9 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
behavior.
Note that this works correctly for a zero-initialized condvar too. */
unsigned int old_orig_size = __condvar_get_orig_size (cond);
- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
- if (((unsigned) (wseq - old_g1_start - old_orig_size)
- + cond->__data.__g_size[g1 ^ 1]) == 0)
+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond);
+ uint64_t new_g1_start = old_g1_start + old_orig_size;
+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0)
@@ -189,16 +189,15 @@ __condvar_get_private (int flags)
return FUTEX_SHARED;
}
-/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to
- leave G1, converts G1 into a fresh G2, and then switches group roles so that
- the former G2 becomes the new G1 ending at the current __wseq value when we
- eventually make the switch (WSEQ is just an observation of __wseq by the
- signaler).
+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2,
+ and then switches group roles so that the former G2 becomes the new G1
+ ending at the current __wseq value when we eventually make the switch
+ (WSEQ is just an observation of __wseq by the signaler).
If G2 is empty, it will not switch groups because then it would create an
empty G1 which would require switching groups again on the next signal.
Returns false iff groups were not switched because G2 was empty. */
static bool __attribute__ ((unused))
-__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int *g1index, int private)
{
unsigned int g1 = *g1index;
@@ -214,8 +213,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+ cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
/* We have to consider the following kinds of waiters:
@@ -221,16 +221,10 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
- /* Now try to close and quiesce G1. We have to consider the following kinds
- of waiters:
+ /* We have to consider the following kinds of waiters:
* Waiters from less recent groups than G1 are not affected because
nothing will change for them apart from __g1_start getting larger.
* New waiters arriving concurrently with the group switching will all go
@@ -223,12 +221,12 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which closes this group. The value we add will never
- be negative because old_orig_size can only be zero when we switch groups
- the first time after a condvar was initialized, in which case G1 will be
- at index 1 and we will add a value of 1. Relaxed MO is fine because the
- change comes with no additional constraints that others would have to
- observe. */
- __condvar_add_g1_start_relaxed (cond,
- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
-
- unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+ /* Update __g1_start, which closes this group. Relaxed MO is fine because
+ the change comes with no additional constraints that others would have
+ to observe. */
+ __condvar_add_g1_start_relaxed (cond, old_orig_size);
- /* Update __g1_start, which finishes closing this group. The value we add
- will never be negative because old_orig_size can only be zero when we
- switch groups the first time after a condvar was initialized, in which
- case G1 will be at index 1 and we will add a value of 1.
- Relaxed MO is fine because the change comes with no additional
- constraints that others would have to observe. */
+ /* Update __g1_start, which closes this group. The value we add will never
+ be negative because old_orig_size can only be zero when we switch groups
+ the first time after a condvar was initialized, in which case G1 will be
+ at index 1 and we will add a value of 1. Relaxed MO is fine because the
+ change comes with no additional constraints that others would have to
+ observe. */
__condvar_add_g1_start_relaxed (cond,
(old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
@@ -242,13 +236,13 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
- /* Now advance the new G1 g_signals to the new lowseq, giving it
+ /* Now advance the new G1 g_signals to the new g1_start, giving it
an effective signal count of 0 to start. */
- atomic_store_release (cond->__data.__g_signals + g1, lowseq);
+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start);
/* These values are just observed by signalers, and thus protected by the
lock. */
- unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
+ unsigned int orig_size = wseq - new_g1_start;
__condvar_set_orig_size (cond, orig_size);
/* Use and addition to not loose track of cancellations in what was
previously G2. */
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index a9bc10dcca..07427369aa 100644
index 14800ba0..a9bc10dc 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -80,7 +80,7 @@ ___pthread_cond_signal (pthread_cond_t *cond)
release-MO store when initializing a group in __condvar_switch_g1
because we use an atomic read-modify-write and thus extend that
store's release sequence. */
- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1);
@@ -69,18 +69,17 @@ ___pthread_cond_signal (pthread_cond_t *cond)
bool do_futex_wake = false;
/* If G1 is still receiving signals, we put the signal there. If not, we
- check if G2 has waiters, and if so, quiesce and switch G1 to the former
- G2; if this results in a new G1 with waiters (G2 might have cancellations
- already, see __condvar_quiesce_and_switch_g1), we put the signal in the
- new G1. */
+ check if G2 has waiters, and if so, switch G1 to the former G2; if this
+ results in a new G1 with waiters (G2 might have cancellations already,
+ see __condvar_switch_g1), we put the signal in the new G1. */
if ((cond->__data.__g_size[g1] != 0)
- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ || __condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Add a signal. Relaxed MO is fine because signaling does not need to
- establish a happens-before relation (see above). We do not mask the
- release-MO store when initializing a group in
- __condvar_quiesce_and_switch_g1 because we use an atomic
- read-modify-write and thus extend that store's release sequence. */
+ establish a happens-before relation (see above). We do not mask the
+ release-MO store when initializing a group in __condvar_switch_g1
+ because we use an atomic read-modify-write and thus extend that
+ store's release sequence. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index bb46f3605d..430cbe8a35 100644
index adf26a80..40a74342 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
not hold a reference on the group. */
__condvar_acquire_lock (cond, private);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
if (g1_start > seq)
@@ -354,8 +354,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
because we do not need to establish any happens-before relation with
signalers (see __pthread_cond_signal); modification order alone
establishes a total order of waiters/signals. We do need acquire MO
- to synchronize with group reinitialization in
- __condvar_quiesce_and_switch_g1. */
+ to synchronize with group reinitialization in __condvar_switch_g1. */
uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2);
/* Find our group's index. We always go into what was G2 when we acquired
our position. */
@@ -387,9 +386,9 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
{
/* Our group is closed, so someone provided enough signals for it.
@@ -278,7 +278,6 @@ __condvar_cleanup_waiting (void *arg)
* Waiters fetch-add while having acquire the mutex associated with the
condvar. Signalers load it and fetch-xor it concurrently.
__g1_start: Starting position of G1 (inclusive)
- * LSB is index of current G2.
* Modified by signalers while having acquired the condvar-internal lock
and observed concurrently by waiters.
__g1_orig_size: Initial size of G1
@@ -299,11 +298,9 @@ __condvar_cleanup_waiting (void *arg)
* Reference count used by waiters concurrently with signalers that have
acquired the condvar-internal lock.
__g_signals: The number of signals that can still be consumed, relative to
- the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits
- 31 to 1 of g1_start with the signal count added)
+ the current g1_start. (i.e. g1_start with the signal count added)
* Used as a futex word by waiters. Used concurrently by waiters and
signalers.
- * LSB is currently reserved and 0.
__g_size: Waiters remaining in this group (i.e., which have not been
signaled yet.
* Accessed by signalers and waiters that cancel waiting (both do so only
@@ -418,9 +415,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
too. */
/* Now wait until a signal is available in our group or it is closed.
Acquire MO so that if we observe (signals == lowseq) after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
+ switching in __condvar_switch_g1, we synchronize with that store and
+ will see the prior update of __g1_start done while switching groups
+ too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- if (seq < (g1_start >> 1))
+ if (seq < g1_start)
{
/* If the group is closed already,
then this waiter originally had enough extra signals to
@@ -433,13 +429,13 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
by now, perhaps in the process of switching back to an older
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
+ if ((int)(signals - (unsigned int)g1_start) > 0)
{
/* Try to grab a signal. See above for MO. (if we do another loop
iteration we need to see the correct value of g1_start) */
if (atomic_compare_exchange_weak_acquire (
cond->__data.__g_signals + g,
- &signals, signals - 2))
+ &signals, signals - 1))
break;
else
continue;
unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
--
2.49.0

View File

@@ -0,0 +1,193 @@
From c2677e68956bb9677d8de4ee6c5341b1a744d490 Mon Sep 17 00:00:00 2001
From: Malte Skarupke <malteskarupke@fastmail.fm>
Date: Tue, 14 Oct 2025 06:40:57 -0700
Subject: [PATCH] nptl: Use all of g1_start and g_signals
The LSB of g_signals was unused. The LSB of g1_start was used to indicate
which group is G2. This was used to always go to sleep in pthread_cond_wait
if a waiter is in G2. A comment earlier in the file says that this is not
correct to do:
"Waiters cannot determine whether they are currently in G2 or G1 -- but they
do not have to because all they are interested in is whether there are
available signals"
I either would have had to update the comment, or get rid of the check. I
chose to get rid of the check. In fact I don't quite know why it was there.
There will never be available signals for group G2, so we didn't need the
special case. Even if there were, this would just be a spurious wake. This
might have caught some cases where the count has wrapped around, but it
wouldn't reliably do that, (and even if it did, why would you want to force a
sleep in that case?) and we don't support that many concurrent waiters
anyway. Getting rid of it allows us to use one more bit, making us more
robust to wraparound.
The following commits have been cherry-picked from Glibc master branch:
Bug : https://sourceware.org/bugzilla/show_bug.cgi?id=25847
commit: 91bb902f58264a2fd50fbce8f39a9a290dd23706
Upstream-Status: Submitted
[https://sourceware.org/pipermail/libc-stable/2025-July/002283.html]
Signed-off-by: Sunil Dora <sunilkumar.dora@windriver.com>
---
nptl/pthread_cond_broadcast.c | 4 ++--
nptl/pthread_cond_common.c | 26 ++++++++++----------------
nptl/pthread_cond_signal.c | 2 +-
nptl/pthread_cond_wait.c | 14 +++++---------
4 files changed, 18 insertions(+), 28 deletions(-)
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index a0743558..ef0943cd 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -57,7 +57,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Add as many signals as the remaining size of the group. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* We need to wake G1 waiters before we switch G1 below. */
@@ -73,7 +73,7 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 3baac4da..e48f9143 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -208,9 +208,9 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
behavior.
Note that this works correctly for a zero-initialized condvar too. */
unsigned int old_orig_size = __condvar_get_orig_size (cond);
- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
- if (((unsigned) (wseq - old_g1_start - old_orig_size)
- + cond->__data.__g_size[g1 ^ 1]) == 0)
+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond);
+ uint64_t new_g1_start = old_g1_start + old_orig_size;
+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
/* We have to consider the following kinds of waiters:
@@ -221,16 +221,10 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
are not affected.
* Waiters in G1 have already received a signal and been woken. */
- /* Update __g1_start, which closes this group. The value we add will never
- be negative because old_orig_size can only be zero when we switch groups
- the first time after a condvar was initialized, in which case G1 will be
- at index 1 and we will add a value of 1. Relaxed MO is fine because the
- change comes with no additional constraints that others would have to
- observe. */
- __condvar_add_g1_start_relaxed (cond,
- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
-
- unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U;
+ /* Update __g1_start, which closes this group. Relaxed MO is fine because
+ the change comes with no additional constraints that others would have
+ to observe. */
+ __condvar_add_g1_start_relaxed (cond, old_orig_size);
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
@@ -242,13 +236,13 @@ __condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
- /* Now advance the new G1 g_signals to the new lowseq, giving it
+ /* Now advance the new G1 g_signals to the new g1_start, giving it
an effective signal count of 0 to start. */
- atomic_store_release (cond->__data.__g_signals + g1, lowseq);
+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start);
/* These values are just observed by signalers, and thus protected by the
lock. */
- unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
+ unsigned int orig_size = wseq - new_g1_start;
__condvar_set_orig_size (cond, orig_size);
/* Use and addition to not loose track of cancellations in what was
previously G2. */
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index a9bc10dc..07427369 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -80,7 +80,7 @@ ___pthread_cond_signal (pthread_cond_t *cond)
release-MO store when initializing a group in __condvar_switch_g1
because we use an atomic read-modify-write and thus extend that
store's release sequence. */
- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 40a74342..d7e073ab 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
not hold a reference on the group. */
__condvar_acquire_lock (cond, private);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
if (g1_start > seq)
{
/* Our group is closed, so someone provided enough signals for it.
@@ -259,7 +259,6 @@ __condvar_cleanup_waiting (void *arg)
* Waiters fetch-add while having acquire the mutex associated with the
condvar. Signalers load it and fetch-xor it concurrently.
__g1_start: Starting position of G1 (inclusive)
- * LSB is index of current G2.
* Modified by signalers while having acquired the condvar-internal lock
and observed concurrently by waiters.
__g1_orig_size: Initial size of G1
@@ -280,11 +279,9 @@ __condvar_cleanup_waiting (void *arg)
* Reference count used by waiters concurrently with signalers that have
acquired the condvar-internal lock.
__g_signals: The number of signals that can still be consumed, relative to
- the current g1_start. (i.e. bits 31 to 1 of __g_signals are bits
- 31 to 1 of g1_start with the signal count added)
+ the current g1_start. (i.e. g1_start with the signal count added)
* Used as a futex word by waiters. Used concurrently by waiters and
signalers.
- * LSB is currently reserved and 0.
__g_size: Waiters remaining in this group (i.e., which have not been
signaled yet.
* Accessed by signalers and waiters that cancel waiting (both do so only
@@ -391,9 +388,8 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
too. */
unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U;
- if (seq < (g1_start >> 1))
+ if (seq < g1_start)
{
/* If the group is closed already,
then this waiter originally had enough extra signals to
@@ -406,13 +402,13 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
by now, perhaps in the process of switching back to an older
G2, but in either case we're allowed to consume the available
signal and should not block anymore. */
- if ((int)(signals - lowseq) >= 2)
+ if ((int)(signals - (unsigned int)g1_start) > 0)
{
/* Try to grab a signal. See above for MO. (if we do another loop
iteration we need to see the correct value of g1_start) */
if (atomic_compare_exchange_weak_acquire (
cond->__data.__g_signals + g,
- &signals, signals - 2))
+ &signals, signals - 1))
break;
else
continue;
--
2.49.0

View File

@@ -70,6 +70,8 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://0026-PR25847-6.patch \
file://0026-PR25847-7.patch \
file://0026-PR25847-8.patch \
file://0026-PR25847-9.patch \
file://0026-PR25847-10.patch \
\
file://0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch \
file://0002-get_nscd_addresses-Fix-subscript-typos-BZ-29605.patch \

View File

@@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
inherit core-image setuptools3
SRCREV ?= "49e837cefaa0d1844b32ff788c6e9de246a3a739"
SRCREV ?= "8d5cd4a310e1807e841b25aaa46261dc24cea1eb"
SRC_URI = "git://git.yoctoproject.org/poky;branch=kirkstone \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \

View File

@@ -0,0 +1,117 @@
From 6ef8b9f05cc21d3fc28156fe5d1251834c29c7d7 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Thu, 28 Jul 2022 20:21:24 +0200
Subject: [PATCH] Make XPath depth check work with recursive invocations
EXSLT functions like dyn:map or dyn:evaluate invoke xmlXPathRunEval
recursively. Don't set depth to zero but keep and restore the original
value to avoid stack overflows when abusing these functions.
Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/677a42645ef22b5a50741bad5facf9d8a8bc6d21]
CVE: CVE-2025-9714
Signed-off-by: Theo GAIGE <tgaige.opensource@witekio.com>
---
xpath.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/xpath.c b/xpath.c
index c2d845888..028471d53 100644
--- a/xpath.c
+++ b/xpath.c
@@ -13883,12 +13883,11 @@ static int
xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool)
{
xmlXPathCompExprPtr comp;
+ int oldDepth;
if ((ctxt == NULL) || (ctxt->comp == NULL))
return(-1);
- ctxt->context->depth = 0;
-
if (ctxt->valueTab == NULL) {
/* Allocate the value stack */
ctxt->valueTab = (xmlXPathObjectPtr *)
@@ -13942,11 +13941,13 @@ xmlXPathRunEval(xmlXPathParserContextPtr ctxt, int toBool)
"xmlXPathRunEval: last is less than zero\n");
return(-1);
}
+ oldDepth = ctxt->context->depth;
if (toBool)
return(xmlXPathCompOpEvalToBoolean(ctxt,
&comp->steps[comp->last], 0));
else
xmlXPathCompOpEval(ctxt, &comp->steps[comp->last]);
+ ctxt->context->depth = oldDepth;
return(0);
}
@@ -14217,6 +14218,7 @@ xmlXPathCompExprPtr
xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
xmlXPathParserContextPtr pctxt;
xmlXPathCompExprPtr comp;
+ int oldDepth = 0;
#ifdef XPATH_STREAMING
comp = xmlXPathTryStreamCompile(ctxt, str);
@@ -14230,8 +14232,10 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
if (pctxt == NULL)
return NULL;
if (ctxt != NULL)
- ctxt->depth = 0;
+ oldDepth = ctxt->depth;
xmlXPathCompileExpr(pctxt, 1);
+ if (ctxt != NULL)
+ ctxt->depth = oldDepth;
if( pctxt->error != XPATH_EXPRESSION_OK )
{
@@ -14252,8 +14256,10 @@ xmlXPathCtxtCompile(xmlXPathContextPtr ctxt, const xmlChar *str) {
comp = pctxt->comp;
if ((comp->nbStep > 1) && (comp->last >= 0)) {
if (ctxt != NULL)
- ctxt->depth = 0;
+ oldDepth = ctxt->depth;
xmlXPathOptimizeExpression(pctxt, &comp->steps[comp->last]);
+ if (ctxt != NULL)
+ ctxt->depth = oldDepth;
}
pctxt->comp = NULL;
}
@@ -14409,6 +14415,7 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
#ifdef XPATH_STREAMING
xmlXPathCompExprPtr comp;
#endif
+ int oldDepth = 0;
if (ctxt == NULL) return;
@@ -14422,8 +14429,10 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
#endif
{
if (ctxt->context != NULL)
- ctxt->context->depth = 0;
+ oldDepth = ctxt->context->depth;
xmlXPathCompileExpr(ctxt, 1);
+ if (ctxt->context != NULL)
+ ctxt->context->depth = oldDepth;
CHECK_ERROR;
/* Check for trailing characters. */
@@ -14432,9 +14441,11 @@ xmlXPathEvalExpr(xmlXPathParserContextPtr ctxt) {
if ((ctxt->comp->nbStep > 1) && (ctxt->comp->last >= 0)) {
if (ctxt->context != NULL)
- ctxt->context->depth = 0;
+ oldDepth = ctxt->context->depth;
xmlXPathOptimizeExpression(ctxt,
&ctxt->comp->steps[ctxt->comp->last]);
+ if (ctxt->context != NULL)
+ ctxt->context->depth = oldDepth;
}
}
--
2.43.0

View File

@@ -42,6 +42,7 @@ SRC_URI += "http://www.w3.org/XML/Test/xmlts20080827.tar;subdir=${BP};name=testt
file://CVE-2025-6021.patch \
file://CVE-2025-49794-CVE-2025-49796.patch \
file://CVE-2025-6170.patch \
file://CVE-2025-9714.patch \
"
SRC_URI[archive.sha256sum] = "60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee"

View File

@@ -235,6 +235,7 @@ EXTRA_OEMESON += "-Dnobody-user=nobody \
-Dmode=release \
-Dsystem-alloc-uid-min=101 \
-Dsystem-uid-max=999 \
-Dtranslations=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'} \
-Dsystem-alloc-gid-min=101 \
-Dsystem-gid-max=999 \
"

View File

@@ -80,5 +80,9 @@ SRC_URI = "\
file://0042-CVE-2025-5245.patch \
file://0043-CVE-2025-7546.patch \
file://0043-CVE-2025-7545.patch \
file://0044-CVE-2025-11082.patch \
file://0045-CVE-2025-11083.patch \
file://0046-CVE-2025-11081.patch \
file://0047-CVE-2025-8225.patch \
"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,46 @@
From ea1a0737c7692737a644af0486b71e4a392cbca8 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 22 Sep 2025 15:20:34 +0800
Subject: [PATCH] elf: Don't read beyond .eh_frame section size
PR ld/33464
* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Don't read beyond
.eh_frame section size.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
CVE: CVE-2025-11082
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ea1a0737c7692737a644af0486b71e4a392cbca8]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elf-eh-frame.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c
index dc0d2e097f5..30bb313489c 100644
--- a/bfd/elf-eh-frame.c
+++ b/bfd/elf-eh-frame.c
@@ -733,6 +733,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
if (hdr_id == 0)
{
unsigned int initial_insn_length;
+ char *null_byte;
/* CIE */
this_inf->cie = 1;
@@ -749,10 +750,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
REQUIRE (cie->version == 1
|| cie->version == 3
|| cie->version == 4);
- REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation));
+ null_byte = memchr ((char *) buf, 0, end - buf);
+ REQUIRE (null_byte != NULL);
+ REQUIRE ((size_t) (null_byte - (char *) buf)
+ < sizeof (cie->augmentation));
strcpy (cie->augmentation, (char *) buf);
- buf = (bfd_byte *) strchr ((char *) buf, '\0') + 1;
+ buf = (bfd_byte *) null_byte + 1;
this_inf->u.cie.aug_str_len = buf - start - 1;
ENSURE_NO_RELOCS (buf);
if (buf[0] == 'e' && buf[1] == 'h')

View File

@@ -0,0 +1,77 @@
From 9ca499644a21ceb3f946d1c179c38a83be084490 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Thu, 18 Sep 2025 16:59:25 -0700
Subject: [PATCH] elf: Don't match corrupt section header in linker input
Don't swap in nor match corrupt section header in linker input to avoid
linker crash later.
PR ld/33457
* elfcode.h (elf_swap_shdr_in): Changed to return bool. Return
false for corrupt section header in linker input.
(elf_object_p): Reject if elf_swap_shdr_in returns false.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
CVE: CVE-2025-11083
Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9ca499644a21ceb3f946d1c179c38a83be084490]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
bfd/elfcode.h | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/bfd/elfcode.h b/bfd/elfcode.h
index 9c65852e103..5224a1abee6 100644
--- a/bfd/elfcode.h
+++ b/bfd/elfcode.h
@@ -298,7 +298,7 @@ elf_swap_ehdr_out (bfd *abfd,
/* Translate an ELF section header table entry in external format into an
ELF section header table entry in internal format. */
-static void
+static bool
elf_swap_shdr_in (bfd *abfd,
const Elf_External_Shdr *src,
Elf_Internal_Shdr *dst)
@@ -328,6 +328,9 @@ elf_swap_shdr_in (bfd *abfd,
if (!abfd->read_only)
_bfd_error_handler (_("warning: %pB has a section "
"extending past end of file"), abfd);
+ /* PR ld/33457: Don't match corrupt section header. */
+ if (abfd->is_linker_input)
+ return false;
abfd->read_only = 1;
}
}
@@ -337,6 +340,7 @@ elf_swap_shdr_in (bfd *abfd,
dst->sh_entsize = H_GET_WORD (abfd, src->sh_entsize);
dst->bfd_section = NULL;
dst->contents = NULL;
+ return true;
}
/* Translate an ELF section header table entry in internal format into an
@@ -629,9 +633,9 @@ elf_object_p (bfd *abfd)
/* Read the first section header at index 0, and convert to internal
form. */
- if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+ if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr)
+ || !elf_swap_shdr_in (abfd, &x_shdr, &i_shdr))
goto got_no_match;
- elf_swap_shdr_in (abfd, &x_shdr, &i_shdr);
/* If the section count is zero, the actual count is in the first
section header. */
@@ -717,9 +721,9 @@ elf_object_p (bfd *abfd)
to internal form. */
for (shindex = 1; shindex < i_ehdrp->e_shnum; shindex++)
{
- if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+ if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr)
+ || !elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex))
goto got_no_match;
- elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex);
/* Sanity check sh_link and sh_info. */
if (i_shdrp[shindex].sh_link >= num_sec)

View File

@@ -0,0 +1,84 @@
From f87a66db645caf8cc0e6fc87b0c28c78a38af59b Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Tue, 9 Sep 2025 18:32:09 +0930
Subject: [PATCH] PR 33406 SEGV in dump_dwarf_section
Trying to dump .sframe in a PE file results in a segfault accessing
elf_section_data.
* objdump (dump_sframe_section, dump_dwarf_section): Don't access
elf_section_type without first checking the file is ELF.
---
binutils/objdump.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f87a66db645caf8cc0e6fc87b0c28c78a38af59b]
CVE: CVE-2025-11081
Signed-off-by: Alan Modra <amodra@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 290f7e51f66..ee8823da05a 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -4418,6 +4418,10 @@
else
match = name;
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && elf_section_type (section) == SHT_GNU_SFRAME)
+ match = ".sframe";
+
for (i = 0; i < max; i++)
if ((strcmp (debug_displays [i].section.uncompressed_name, match) == 0
|| strcmp (debug_displays [i].section.compressed_name, match) == 0
@@ -4923,6 +4927,36 @@
}
+static void
+dump_sframe_section (bfd *abfd, const char *sect_name, bool is_mainfile)
+
+{
+ /* Error checking for user provided SFrame section name, if any. */
+ if (sect_name)
+ {
+ asection *sec = bfd_get_section_by_name (abfd, sect_name);
+ if (sec == NULL)
+ {
+ printf (_("No %s section present\n\n"), sanitize_string (sect_name));
+ return;
+ }
+ /* Starting with Binutils 2.45, SFrame sections have section type
+ SHT_GNU_SFRAME. For SFrame sections from Binutils 2.44 or earlier,
+ check explcitly for SFrame sections of type SHT_PROGBITS and name
+ ".sframe" to allow them. */
+ else if (bfd_get_flavour (abfd) != bfd_target_elf_flavour
+ || (elf_section_type (sec) != SHT_GNU_SFRAME
+ && !(elf_section_type (sec) == SHT_PROGBITS
+ && strcmp (sect_name, ".sframe") == 0)))
+ {
+ printf (_("Section %s does not contain SFrame data\n\n"),
+ sanitize_string (sect_name));
+ return;
+ }
+ }
+ dump_dwarf (abfd, is_mainfile);
+}
+
static void
dump_target_specific (bfd *abfd)
{
const struct objdump_private_desc * const *desc;
diff --git a/include/elf/common.h b/include/elf/common.h
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -528,6 +528,8 @@
#define SHT_LOOS 0x60000000 /* First of OS specific semantics */
#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */
+#define SHT_GNU_SFRAME 0x6ffffff4 /* SFrame stack trace information. */
+
#define SHT_GNU_INCREMENTAL_INPUTS 0x6fff4700 /* incremental build data */
#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes */
#define SHT_GNU_HASH 0x6ffffff6 /* GNU style symbol hash table */

View File

@@ -0,0 +1,47 @@
From e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Wed, 19 Feb 2025 22:45:29 +1030
Subject: [PATCH] binutils/dwarf.c debug_information leak
It is possible with fuzzed files to have num_debug_info_entries zero
after allocating space for debug_information, leading to multiple
allocations.
* dwarf.c (process_debug_info): Don't test num_debug_info_entries
to determine whether debug_information has been allocated,
test alloc_num_debug_info_entries.
---
Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=e51fdff7d2e538c0e5accdd65649ac68e6e0ddd4]
CVE: CVE-2025-8225
binutils/dwarf.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
Signed-off-by: Alan Modra <amodra@gmail.com>
Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 8e004cea839..bfbf83ec9f4 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -3807,13 +3807,11 @@ process_debug_info (struct dwarf_section * section,
}
if ((do_loc || do_debug_loc || do_debug_ranges || do_debug_info)
- && num_debug_info_entries == 0
- && ! do_types)
+ && alloc_num_debug_info_entries == 0
+ && !do_types)
{
-
/* Then allocate an array to hold the information. */
- debug_information = (debug_info *) cmalloc (num_units,
- sizeof (* debug_information));
+ debug_information = cmalloc (num_units, sizeof (*debug_information));
if (debug_information == NULL)
{
error (_("Not enough memory for a debug info array of %u entries\n"),
--
2.43.7

View File

@@ -0,0 +1,71 @@
From 37e27f71bc356d880c908040cd0cb68fa2c371b8 Mon Sep 17 00:00:00 2001
From: Tyler Yankee <tyler.yankee@kitware.com>
Date: Wed, 13 Aug 2025 15:22:28 -0400
Subject: [PATCH] foreach: Explicitly skip replay without iterations
As written, foreach loops with a trailing `IN` (i.e., no loop
variable(s) given) lead to an assertion error. Handle this case by
exiting early when we know the loop won't execute anything.
Fixes: #27135
CVE: CVE-2025-9301
Upstream-Status: Backport
https://gitlab.kitware.com/cmake/cmake/-/commit/37e27f71bc356d880c908040cd0cb68fa2c371b8
Signed-off-by: Tyler Yankee <tyler.yankee@kitware.com>
Signed-off-by: Saravanan <saravanan.kadambathursubramaniyam@windriver.com>
---
Source/cmForEachCommand.cxx | 3 +++
Tests/RunCMake/foreach/RunCMakeTest.cmake | 1 +
Tests/RunCMake/foreach/TrailingIn-result.txt | 1 +
Tests/RunCMake/foreach/TrailingIn.cmake | 5 +++++
4 files changed, 10 insertions(+)
create mode 100644 Tests/RunCMake/foreach/TrailingIn-result.txt
create mode 100644 Tests/RunCMake/foreach/TrailingIn.cmake
diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx
index dcb36265..35b59960 100644
--- a/Source/cmForEachCommand.cxx
+++ b/Source/cmForEachCommand.cxx
@@ -100,6 +100,9 @@ bool cmForEachFunctionBlocker::ArgumentsMatch(cmListFileFunction const& lff,
bool cmForEachFunctionBlocker::Replay(
std::vector<cmListFileFunction> functions, cmExecutionStatus& inStatus)
{
+ if (this->Args.size() == this->IterationVarsCount) {
+ return true;
+ }
return this->ZipLists ? this->ReplayZipLists(functions, inStatus)
: this->ReplayItems(functions, inStatus);
}
diff --git a/Tests/RunCMake/foreach/RunCMakeTest.cmake b/Tests/RunCMake/foreach/RunCMakeTest.cmake
index 15ca4770..acfc742e 100644
--- a/Tests/RunCMake/foreach/RunCMakeTest.cmake
+++ b/Tests/RunCMake/foreach/RunCMakeTest.cmake
@@ -22,3 +22,4 @@ run_cmake(foreach-RANGE-invalid-test)
run_cmake(foreach-RANGE-out-of-range-test)
run_cmake(foreach-var-scope-CMP0124-OLD)
run_cmake(foreach-var-scope-CMP0124-NEW)
+run_cmake(TrailingIn)
diff --git a/Tests/RunCMake/foreach/TrailingIn-result.txt b/Tests/RunCMake/foreach/TrailingIn-result.txt
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/Tests/RunCMake/foreach/TrailingIn-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/foreach/TrailingIn.cmake b/Tests/RunCMake/foreach/TrailingIn.cmake
new file mode 100644
index 00000000..e2b5b2f2
--- /dev/null
+++ b/Tests/RunCMake/foreach/TrailingIn.cmake
@@ -0,0 +1,5 @@
+foreach(v IN)
+endforeach()
+
+foreach(v1 v2 IN)
+endforeach()
--
2.35.5

View File

@@ -12,6 +12,7 @@ SRC_URI:append:class-nativesdk = " \
file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
file://0001-ctest-Allow-arbitrary-characters-in-test-names-of-CT.patch \
"
SRC_URI += "file://CVE-2025-9301.patch"
LICENSE:append = " & BSD-1-Clause & MIT"
LIC_FILES_CHKSUM:append = " \

View File

@@ -0,0 +1,97 @@
From 9de345cb273cc7faaeda279c7e07149d8a15a319 Mon Sep 17 00:00:00 2001
From: Taylor Blau <me@ttaylorr.com>
Date: Mon, 19 May 2025 18:30:29 -0400
Subject: [PATCH] wincred: avoid buffer overflow in wcsncat()
The wincred credential helper uses a static buffer ("target") as a
unique key for storing and comparing against internal storage. It does
this by building up a string is supposed to look like:
git:$PROTOCOL://$USERNAME@$HOST/@path
However, the static "target" buffer is declared as a wide string with no
more than 1,024 wide characters. The first call to wcsncat() is almost
correct (it copies no more than ARRAY_SIZE(target) wchar_t's), but does
not account for the trailing NUL, introducing an off-by-one error.
But subsequent calls to wcsncat() have an additional problem on top of
the off-by-one. They do not account for the length of the existing
wide string being built up in 'target'. So the following:
$ perl -e '
my $x = "x" x 1_000;
print "protocol=$x\nhost=$x\nusername=$x\npath=$x\n"
' |
C\:/Program\ Files/Git/mingw64/libexec/git-core/git-credential-wincred.exe get
will result in a segmentation fault from over-filling buffer.
This bug is as old as the wincred helper itself, dating back to
a6253da (contrib: add win32 credential-helper, 2012-07-27). Commit
8b2d219 (wincred: improve compatibility with windows versions,
2013-01-10) replaced the use of strncat() with wcsncat(), but retained
the buggy behavior.
Fix this by using a "target_append()" helper which accounts for both the
length of the existing string within the buffer, as well as the trailing
NUL character.
Reported-by: David Leadbeater <dgl@dgl.cx>
Helped-by: David Leadbeater <dgl@dgl.cx>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
CVE: CVE-2025-48386
Upstream-Status: Backport [https://github.com/git/git/commit/9de345cb273cc7faaeda279c7e07149d8a15a319]
Signed-off-by: Hitendra Prajapati <hprajapati@mvista.com>
---
.../wincred/git-credential-wincred.c | 22 +++++++++++++------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 5091048..00ecd87 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -93,6 +93,14 @@ static void load_cred_funcs(void)
static WCHAR *wusername, *password, *protocol, *host, *path, target[1024];
+static void target_append(const WCHAR *src)
+{
+ size_t avail = ARRAY_SIZE(target) - wcslen(target) - 1; /* -1 for NUL */
+ if (avail < wcslen(src))
+ die("target buffer overflow");
+ wcsncat(target, src, avail);
+}
+
static void write_item(const char *what, LPCWSTR wbuf, int wlen)
{
char *buf;
@@ -304,17 +312,17 @@ int main(int argc, char *argv[])
/* prepare 'target', the unique key for the credential */
wcscpy(target, L"git:");
- wcsncat(target, protocol, ARRAY_SIZE(target));
- wcsncat(target, L"://", ARRAY_SIZE(target));
+ target_append(protocol);
+ target_append(L"://");
if (wusername) {
- wcsncat(target, wusername, ARRAY_SIZE(target));
- wcsncat(target, L"@", ARRAY_SIZE(target));
+ target_append(wusername);
+ target_append(L"@");
}
if (host)
- wcsncat(target, host, ARRAY_SIZE(target));
+ target_append(host);
if (path) {
- wcsncat(target, L"/", ARRAY_SIZE(target));
- wcsncat(target, path, ARRAY_SIZE(target));
+ target_append(L"/");
+ target_append(path);
}
if (!strcmp(argv[1], "get"))
--
2.50.1

View File

@@ -28,6 +28,7 @@ SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
file://CVE-2024-52006.patch \
file://CVE-2025-27614-CVE-2025-27613-CVE-2025-46334-CVE-2025-46835.patch \
file://CVE-2025-48384.patch \
file://CVE-2025-48386.patch \
"
S = "${WORKDIR}/git-${PV}"

View File

@@ -4,67 +4,71 @@ FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-1.21:${FILE_DIRNAME}/go-1.20:${FI
LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
SRC_URI += "\
file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
file://0004-ld-add-soname-to-shareable-objects.patch \
file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
file://0006-cmd-dist-separate-host-and-target-builds.patch \
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \
file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
file://0010-net-Fix-issue-with-DNS-not-being-updated.patch \
file://CVE-2022-27664.patch \
file://0001-net-http-httputil-avoid-query-parameter-smuggling.patch \
file://CVE-2022-41715.patch \
file://CVE-2022-41717.patch \
file://CVE-2022-2879.patch \
file://CVE-2022-41720.patch \
file://CVE-2022-41723.patch \
file://cve-2022-41724.patch \
file://add_godebug.patch \
file://cve-2022-41725.patch \
file://CVE-2022-41722.patch \
file://CVE-2023-24537.patch \
file://CVE-2023-24534.patch \
file://CVE-2023-24538_1.patch \
file://CVE-2023-24538_2.patch \
file://CVE-2023-24540.patch \
file://CVE-2023-24539.patch \
file://CVE-2023-29404.patch \
file://CVE-2023-29405.patch \
file://CVE-2023-29402.patch \
file://CVE-2023-29400.patch \
file://CVE-2023-29406-1.patch \
file://CVE-2023-29406-2.patch \
file://CVE-2023-24536_1.patch \
file://CVE-2023-24536_2.patch \
file://CVE-2023-24536_3.patch \
file://CVE-2023-24531_1.patch \
file://CVE-2023-24531_2.patch \
file://CVE-2023-29409.patch \
file://CVE-2023-39319.patch \
file://CVE-2023-39318.patch \
file://CVE-2023-39326.patch \
file://CVE-2023-45285.patch \
file://CVE-2023-45287.patch \
file://CVE-2023-45289.patch \
file://CVE-2023-45290.patch \
file://CVE-2024-24784.patch \
file://CVE-2024-24785.patch \
file://CVE-2023-45288.patch \
file://CVE-2024-24789.patch \
file://CVE-2024-24791.patch \
file://CVE-2024-34155.patch \
file://CVE-2024-34156.patch \
file://CVE-2024-34158.patch \
file://CVE-2024-45336.patch \
file://CVE-2025-22871.patch \
file://CVE-2025-4673.patch \
"
SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main \
file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
file://0004-ld-add-soname-to-shareable-objects.patch \
file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
file://0006-cmd-dist-separate-host-and-target-builds.patch \
file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
file://0001-exec.go-do-not-write-linker-flags-into-buildids.patch \
file://0001-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
file://0010-net-Fix-issue-with-DNS-not-being-updated.patch \
file://CVE-2022-27664.patch \
file://0001-net-http-httputil-avoid-query-parameter-smuggling.patch \
file://CVE-2022-41715.patch \
file://CVE-2022-41717.patch \
file://CVE-2022-2879.patch \
file://CVE-2022-41720.patch \
file://CVE-2022-41723.patch \
file://cve-2022-41724.patch \
file://add_godebug.patch \
file://cve-2022-41725.patch \
file://CVE-2022-41722.patch \
file://CVE-2023-24537.patch \
file://CVE-2023-24534.patch \
file://CVE-2023-24538_1.patch \
file://CVE-2023-24538_2.patch \
file://CVE-2023-24540.patch \
file://CVE-2023-24539.patch \
file://CVE-2023-29404.patch \
file://CVE-2023-29405.patch \
file://CVE-2023-29402.patch \
file://CVE-2023-29400.patch \
file://CVE-2023-29406-1.patch \
file://CVE-2023-29406-2.patch \
file://CVE-2023-24536_1.patch \
file://CVE-2023-24536_2.patch \
file://CVE-2023-24536_3.patch \
file://CVE-2023-24531_1.patch \
file://CVE-2023-24531_2.patch \
file://CVE-2023-29409.patch \
file://CVE-2023-39319.patch \
file://CVE-2023-39318.patch \
file://CVE-2023-39326.patch \
file://CVE-2023-45285.patch \
file://CVE-2023-45287.patch \
file://CVE-2023-45289.patch \
file://CVE-2023-45290.patch \
file://CVE-2024-24784.patch \
file://CVE-2024-24785.patch \
file://CVE-2023-45288.patch \
file://CVE-2024-24789.patch \
file://CVE-2024-24791.patch \
file://CVE-2024-34155.patch \
file://CVE-2024-34156.patch \
file://CVE-2024-34158.patch \
file://CVE-2024-45336.patch \
file://CVE-2025-22871.patch \
file://CVE-2025-4673.patch \
file://CVE-2025-47907-pre-0001.patch \
file://CVE-2025-47907-pre-0002.patch \
file://CVE-2025-47907.patch \
file://CVE-2025-47906.patch \
"
SRC_URI[main.sha256sum] = "a1a48b23afb206f95e7bbaa9b898d965f90826f6f1d1fc0c1d784ada0cd300fd"
# Upstream don't believe it is a signifiant real world issue and will only

View File

@@ -0,0 +1,171 @@
From 8fa31a2d7d9e60c50a3a94080c097b6e65773f4b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Olivier=20Mengu=C3=A9?= <olivier.mengue@gmail.com>
Date: Mon, 30 Jun 2025 16:58:59 +0200
Subject: [PATCH] [release-branch.go1.23] os/exec: fix incorrect expansion of
"", "." and ".." in LookPath Fix incorrect expansion of "" and "." when $PATH
contains an executable file or, on Windows, a parent directory of a %PATH%
element contains an file with the same name as the %PATH% element but with
one of the %PATHEXT% extension (ex: C:\utils\bin is in PATH, and
C:\utils\bin.exe exists).
Fix incorrect expansion of ".." when $PATH contains an element which is
an the concatenation of the path to an executable file (or on Windows
a path that can be expanded to an executable by appending a %PATHEXT%
extension), a path separator and a name.
"", "." and ".." are now rejected early with ErrNotFound.
Fixes CVE-2025-47906
Fixes #74803
Change-Id: Ie50cc0a660fce8fbdc952a7f2e05c36062dcb50e
Reviewed-on: https://go-review.googlesource.com/c/go/+/685755
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
(cherry picked from commit e0b07dc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/691855
Reviewed-by: Michael Knyszek <mknyszek@google.com>
CVE: CVE-2025-47906
Upstream-Status: Backport [https://github.com/golang/go/commit/8fa31a2d7d9e60c50a3a94080c097b6e65773f4b]
Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
---
src/internal/execabs/execabs_test.go | 55 ++++++++++++++++++++++++++++
src/os/exec/exec.go | 9 +++++
src/os/exec/lp_plan9.go | 4 ++
src/os/exec/lp_unix.go | 4 ++
src/os/exec/lp_windows.go | 4 ++
5 files changed, 76 insertions(+)
diff --git a/src/internal/execabs/execabs_test.go b/src/internal/execabs/execabs_test.go
index 97a3f39..99fd64b 100644
--- a/src/internal/execabs/execabs_test.go
+++ b/src/internal/execabs/execabs_test.go
@@ -100,4 +100,59 @@ func TestLookPath(t *testing.T) {
} else if err.Error() != expectedErr {
t.Errorf("LookPath returned unexpected error: want %q, got %q", expectedErr, err.Error())
}
+ checker := func(test string) func(t *testing.T) {
+ return func(t *testing.T) {
+ t.Helper()
+ t.Logf("PATH=%s", os.Getenv("PATH"))
+ p, err := LookPath(test)
+ if err == nil {
+ t.Errorf("%q: error expected, got nil", test)
+ }
+ if p != "" {
+ t.Errorf("%q: path returned should be \"\". Got %q", test, p)
+ }
+ }
+ }
+
+ // Reference behavior for the next test
+ t.Run(pathVar+"=$OTHER2", func(t *testing.T) {
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
+
+ // Test the behavior when PATH contains an executable file which is not a directory
+ t.Run(pathVar+"=exe", func(t *testing.T) {
+ // Inject an executable file (not a directory) in PATH.
+ // Use our own binary os.Args[0].
+ testenv.MustHaveExec(t)
+ exe, err := os.Executable()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Setenv(pathVar, exe)
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
+
+ // Test the behavior when PATH contains an executable file which is not a directory
+ t.Run(pathVar+"=exe/xx", func(t *testing.T) {
+ // Inject an executable file (not a directory) in PATH.
+ // Use our own binary os.Args[0].
+ testenv.MustHaveExec(t)
+ exe, err := os.Executable()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ t.Setenv(pathVar, filepath.Join(exe, "xx"))
+ t.Run("empty", checker(""))
+ t.Run("dot", checker("."))
+ t.Run("dotdot1", checker("abc/.."))
+ t.Run("dotdot2", checker(".."))
+ })
}
diff --git a/src/os/exec/exec.go b/src/os/exec/exec.go
index 505de58..84fd82f 100644
--- a/src/os/exec/exec.go
+++ b/src/os/exec/exec.go
@@ -790,3 +790,12 @@ func addCriticalEnv(env []string) []string {
}
return append(env, "SYSTEMROOT="+os.Getenv("SYSTEMROOT"))
}
+// validateLookPath excludes paths that can't be valid
+// executable names. See issue #74466 and CVE-2025-47906.
+func validateLookPath(s string) error {
+ switch s {
+ case "", ".", "..":
+ return ErrNotFound
+ }
+ return nil
+}
diff --git a/src/os/exec/lp_plan9.go b/src/os/exec/lp_plan9.go
index e8826a5..ed9f6e3 100644
--- a/src/os/exec/lp_plan9.go
+++ b/src/os/exec/lp_plan9.go
@@ -33,6 +33,10 @@ func findExecutable(file string) error {
// The result may be an absolute path or a path relative to the current directory.
func LookPath(file string) (string, error) {
// skip the path lookup for these prefixes
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
skip := []string{"/", "#", "./", "../"}
for _, p := range skip {
diff --git a/src/os/exec/lp_unix.go b/src/os/exec/lp_unix.go
index d1d246a..1b27f2b 100644
--- a/src/os/exec/lp_unix.go
+++ b/src/os/exec/lp_unix.go
@@ -38,6 +38,10 @@ func LookPath(file string) (string, error) {
// (only bypass the path if file begins with / or ./ or ../)
// but that would not match all the Unix shells.
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
if strings.Contains(file, "/") {
err := findExecutable(file)
if err == nil {
diff --git a/src/os/exec/lp_windows.go b/src/os/exec/lp_windows.go
index e7a2cdf..7a1d6fb 100644
--- a/src/os/exec/lp_windows.go
+++ b/src/os/exec/lp_windows.go
@@ -58,6 +58,10 @@ func findExecutable(file string, exts []string) (string, error) {
// a suitable candidate.
// The result may be an absolute path or a path relative to the current directory.
func LookPath(file string) (string, error) {
+ if err := validateLookPath(file); err != nil {
+ return "", &Error{file, err}
+ }
+
var exts []string
x := os.Getenv(`PATHEXT`)
if x != "" {
--
2.40.0

View File

@@ -0,0 +1,354 @@
From 298fe517a9333c05143a8a8e1f9d5499f0c6e59b Mon Sep 17 00:00:00 2001
From: Brad Fitzpatrick <bradfitz@golang.org>
Date: Tue, 23 May 2023 15:12:47 -0700
Subject: [PATCH] database/sql: make RawBytes safely usable with contexts
sql.RawBytes was added the very first Go release, Go 1. Its docs
say:
> RawBytes is a byte slice that holds a reference to memory owned by
> the database itself. After a Scan into a RawBytes, the slice is only
> valid until the next call to Next, Scan, or Close.
That "only valid until the next call" bit was true at the time,
until contexts were added to database/sql in Go 1.8.
In the past ~dozen releases it's been unsafe to use QueryContext with
a context that might become Done to get an *sql.Rows that's scanning
into a RawBytes. The Scan can succeed, but then while the caller's
reading the memory, a database/sql-managed goroutine can see the
context becoming done and call Close on the database/sql/driver and
make the caller's view of the RawBytes memory no longer valid,
introducing races, crashes, or database corruption. See #60304
and #53970 for details.
This change does the minimal surgery on database/sql to make it safe
again: Rows.Scan was already acquiring a mutex to check whether the
rows had been closed, so this change make Rows.Scan notice whether
*RawBytes was used and, if so, doesn't release the mutex on exit
before returning. That mean it's still locked while the user code
operates on the RawBytes memory and the concurrent context-watching
goroutine to close the database still runs, but if it fires, it then
gets blocked on the mutex until the next call to a Rows method (Next,
NextResultSet, Err, Close).
Updates #60304
Updates #53970 (earlier one I'd missed)
Change-Id: Ie41c0c6f32c24887b2f53ec3686c2aab73a1bfff
Reviewed-on: https://go-review.googlesource.com/c/go/+/497675
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/298fe517a9333c05143a8a8e1f9d5499f0c6e59b]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/fakedb_test.go | 13 +++++-
src/database/sql/sql.go | 72 ++++++++++++++++++++++++++++++++-
src/database/sql/sql_test.go | 58 ++++++++++++++++++++++++++
3 files changed, 141 insertions(+), 2 deletions(-)
diff --git a/src/database/sql/fakedb_test.go b/src/database/sql/fakedb_test.go
index 4b68f1c..33c57b9 100644
--- a/src/database/sql/fakedb_test.go
+++ b/src/database/sql/fakedb_test.go
@@ -15,6 +15,7 @@ import (
"strconv"
"strings"
"sync"
+ "sync/atomic"
"testing"
"time"
)
@@ -90,6 +91,8 @@ func (cc *fakeDriverCtx) OpenConnector(name string) (driver.Connector, error) {
type fakeDB struct {
name string
+ useRawBytes atomic.Bool
+
mu sync.Mutex
tables map[string]*table
badConn bool
@@ -680,6 +683,8 @@ func (c *fakeConn) PrepareContext(ctx context.Context, query string) (driver.Stm
switch cmd {
case "WIPE":
// Nothing
+ case "USE_RAWBYTES":
+ c.db.useRawBytes.Store(true)
case "SELECT":
stmt, err = c.prepareSelect(stmt, parts)
case "CREATE":
@@ -783,6 +788,9 @@ func (s *fakeStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (d
case "WIPE":
db.wipe()
return driver.ResultNoRows, nil
+ case "USE_RAWBYTES":
+ s.c.db.useRawBytes.Store(true)
+ return driver.ResultNoRows, nil
case "CREATE":
if err := db.createTable(s.table, s.colName, s.colType); err != nil {
return nil, err
@@ -912,6 +920,7 @@ func (s *fakeStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (
txStatus = "transaction"
}
cursor := &rowsCursor{
+ db: s.c.db,
parentMem: s.c,
posRow: -1,
rows: [][]*row{
@@ -1008,6 +1017,7 @@ func (s *fakeStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (
}
cursor := &rowsCursor{
+ db: s.c.db,
parentMem: s.c,
posRow: -1,
rows: setMRows,
@@ -1050,6 +1060,7 @@ func (tx *fakeTx) Rollback() error {
}
type rowsCursor struct {
+ db *fakeDB
parentMem memToucher
cols [][]string
colType [][]string
@@ -1121,7 +1132,7 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
// messing up conversions or doing them differently.
dest[i] = v
- if bs, ok := v.([]byte); ok {
+ if bs, ok := v.([]byte); ok && !rc.db.useRawBytes.Load() {
if rc.bytesClone == nil {
rc.bytesClone = make(map[*byte][]byte)
}
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index 68fb392..ef49e70 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -2879,6 +2879,8 @@ type Rows struct {
cancel func() // called when Rows is closed, may be nil.
closeStmt *driverStmt // if non-nil, statement to Close on close
+ contextDone atomic.Value // error that awaitDone saw; set before close attempt
+
// closemu prevents Rows from closing while there
// is an active streaming result. It is held for read during non-close operations
// and exclusively during close.
@@ -2891,6 +2893,15 @@ type Rows struct {
// lastcols is only used in Scan, Next, and NextResultSet which are expected
// not to be called concurrently.
lastcols []driver.Value
+
+ // closemuScanHold is whether the previous call to Scan kept closemu RLock'ed
+ // without unlocking it. It does that when the user passes a *RawBytes scan
+ // target. In that case, we need to prevent awaitDone from closing the Rows
+ // while the user's still using the memory. See go.dev/issue/60304.
+ //
+ // It is only used by Scan, Next, and NextResultSet which are expected
+ // not to be called concurrently.
+ closemuScanHold bool
}
// lasterrOrErrLocked returns either lasterr or the provided err.
@@ -2928,7 +2939,11 @@ func (rs *Rows) awaitDone(ctx, txctx context.Context) {
}
select {
case <-ctx.Done():
+ err := ctx.Err()
+ rs.contextDone.Store(&err)
case <-txctxDone:
+ err := txctx.Err()
+ rs.contextDone.Store(&err)
}
rs.close(ctx.Err())
}
@@ -2940,6 +2955,15 @@ func (rs *Rows) awaitDone(ctx, txctx context.Context) {
//
// Every call to Scan, even the first one, must be preceded by a call to Next.
func (rs *Rows) Next() bool {
+ // If the user's calling Next, they're done with their previous row's Scan
+ // results (any RawBytes memory), so we can release the read lock that would
+ // be preventing awaitDone from calling close.
+ rs.closemuRUnlockIfHeldByScan()
+
+ if rs.contextDone.Load() != nil {
+ return false
+ }
+
var doClose, ok bool
withLock(rs.closemu.RLocker(), func() {
doClose, ok = rs.nextLocked()
@@ -2994,6 +3018,11 @@ func (rs *Rows) nextLocked() (doClose, ok bool) {
// scanning. If there are further result sets they may not have rows in the result
// set.
func (rs *Rows) NextResultSet() bool {
+ // If the user's calling NextResultSet, they're done with their previous
+ // row's Scan results (any RawBytes memory), so we can release the read lock
+ // that would be preventing awaitDone from calling close.
+ rs.closemuRUnlockIfHeldByScan()
+
var doClose bool
defer func() {
if doClose {
@@ -3030,6 +3059,10 @@ func (rs *Rows) NextResultSet() bool {
// Err returns the error, if any, that was encountered during iteration.
// Err may be called after an explicit or implicit Close.
func (rs *Rows) Err() error {
+ if errp := rs.contextDone.Load(); errp != nil {
+ return *(errp.(*error))
+ }
+
rs.closemu.RLock()
defer rs.closemu.RUnlock()
return rs.lasterrOrErrLocked(nil)
@@ -3223,6 +3256,11 @@ func rowsColumnInfoSetupConnLocked(rowsi driver.Rows) []*ColumnType {
// If any of the first arguments implementing Scanner returns an error,
// that error will be wrapped in the returned error
func (rs *Rows) Scan(dest ...interface{}) error {
+ if rs.closemuScanHold {
+ // This should only be possible if the user calls Scan twice in a row
+ // without calling Next.
+ return fmt.Errorf("sql: Scan called without calling Next (closemuScanHold)")
+ }
rs.closemu.RLock()
if rs.lasterr != nil && rs.lasterr != io.EOF {
@@ -3234,23 +3272,50 @@ func (rs *Rows) Scan(dest ...interface{}) error {
rs.closemu.RUnlock()
return err
}
- rs.closemu.RUnlock()
+
+ if scanArgsContainRawBytes(dest) {
+ rs.closemuScanHold = true
+ } else {
+ rs.closemu.RUnlock()
+ }
if rs.lastcols == nil {
+ rs.closemuRUnlockIfHeldByScan()
return errors.New("sql: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
+ rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf("sql: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
}
+
for i, sv := range rs.lastcols {
err := convertAssignRows(dest[i], sv, rs)
if err != nil {
+ rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf(`sql: Scan error on column index %d, name %q: %w`, i, rs.rowsi.Columns()[i], err)
}
}
return nil
}
+// closemuRUnlockIfHeldByScan releases any closemu.RLock held open by a previous
+// call to Scan with *RawBytes.
+func (rs *Rows) closemuRUnlockIfHeldByScan() {
+ if rs.closemuScanHold {
+ rs.closemuScanHold = false
+ rs.closemu.RUnlock()
+ }
+}
+
+func scanArgsContainRawBytes(args []interface{}) bool {
+ for _, a := range args {
+ if _, ok := a.(*RawBytes); ok {
+ return true
+ }
+ }
+ return false
+}
+
// rowsCloseHook returns a function so tests may install the
// hook through a test only mutex.
var rowsCloseHook = func() func(*Rows, *error) { return nil }
@@ -3260,6 +3325,11 @@ var rowsCloseHook = func() func(*Rows, *error) { return nil }
// the Rows are closed automatically and it will suffice to check the
// result of Err. Close is idempotent and does not affect the result of Err.
func (rs *Rows) Close() error {
+ // If the user's calling Close, they're done with their previous row's Scan
+ // results (any RawBytes memory), so we can release the read lock that would
+ // be preventing awaitDone from calling the unexported close before we do so.
+ rs.closemuRUnlockIfHeldByScan()
+
return rs.close(nil)
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index f771dee..53b38d1 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -4255,6 +4255,64 @@ func TestRowsScanProperlyWrapsErrors(t *testing.T) {
}
}
+// From go.dev/issue/60304
+func TestContextCancelDuringRawBytesScan(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ if _, err := db.Exec("USE_RAWBYTES"); err != nil {
+ t.Fatal(err)
+ }
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ r, err := db.QueryContext(ctx, "SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ numRows := 0
+ var sink byte
+ for r.Next() {
+ numRows++
+ var s RawBytes
+ err = r.Scan(&s)
+ if !r.closemuScanHold {
+ t.Errorf("expected closemu to be held")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Logf("read %q", s)
+ if numRows == 2 {
+ cancel() // invalidate the context, which used to call close asynchronously
+ }
+ for _, b := range s { // some operation reading from the raw memory
+ sink += b
+ }
+ }
+ if r.closemuScanHold {
+ t.Errorf("closemu held; should not be")
+ }
+
+ // There are 3 rows. We canceled after reading 2 so we expect either
+ // 2 or 3 depending on how the awaitDone goroutine schedules.
+ switch numRows {
+ case 0, 1:
+ t.Errorf("got %d rows; want 2+", numRows)
+ case 2:
+ if err := r.Err(); err != context.Canceled {
+ t.Errorf("unexpected error: %v (%T)", err, err)
+ }
+ default:
+ // Made it to the end. This is rare, but fine. Permit it.
+ }
+
+ if err := r.Close(); err != nil {
+ t.Fatal(err)
+ }
+}
+
// badConn implements a bad driver.Conn, for TestBadDriver.
// The Exec method panics.
type badConn struct{}

View File

@@ -0,0 +1,232 @@
From c23579f031ecd09bf37c644723b33736dffa8b92 Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Tue, 23 Jan 2024 15:59:47 -0800
Subject: [PATCH] database/sql: avoid clobbering driver-owned memory in
RawBytes
Depending on the query, a RawBytes can contain memory owned by the
driver or by database/sql:
If the driver provides the column as a []byte,
RawBytes aliases that []byte.
If the driver provides the column as any other type,
RawBytes contains memory allocated by database/sql.
Prior to this CL, Rows.Scan will reuse existing capacity in a
RawBytes to permit a single allocation to be reused across rows.
When a RawBytes is reused across queries, this can result
in database/sql writing to driver-owned memory.
Add a buffer to Rows to store RawBytes data, and reuse this
buffer across calls to Rows.Scan.
Fixes #65201
Change-Id: Iac640174c7afa97eeb39496f47dec202501b2483
Reviewed-on: https://go-review.googlesource.com/c/go/+/557917
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/c23579f031ecd09bf37c644723b33736dffa8b92]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/convert.go | 8 +++---
src/database/sql/convert_test.go | 14 +++++++---
src/database/sql/sql.go | 34 +++++++++++++++++++++++
src/database/sql/sql_test.go | 47 ++++++++++++++++++++++++++++++++
4 files changed, 95 insertions(+), 8 deletions(-)
diff --git a/src/database/sql/convert.go b/src/database/sql/convert.go
index b966ef9..3a581f6 100644
--- a/src/database/sql/convert.go
+++ b/src/database/sql/convert.go
@@ -237,7 +237,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if d == nil {
return errNilPtr
}
- *d = append((*d)[:0], s...)
+ *d = rows.setrawbuf(append(rows.rawbuf(), s...))
return nil
}
case []byte:
@@ -285,7 +285,7 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if d == nil {
return errNilPtr
}
- *d = s.AppendFormat((*d)[:0], time.RFC3339Nano)
+ *d = rows.setrawbuf(s.AppendFormat(rows.rawbuf(), time.RFC3339Nano))
return nil
}
case decimalDecompose:
@@ -366,8 +366,8 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
}
case *RawBytes:
sv = reflect.ValueOf(src)
- if b, ok := asBytes([]byte(*d)[:0], sv); ok {
- *d = RawBytes(b)
+ if b, ok := asBytes(rows.rawbuf(), sv); ok {
+ *d = rows.setrawbuf(b)
return nil
}
case *bool:
diff --git a/src/database/sql/convert_test.go b/src/database/sql/convert_test.go
index 2668a5e..23a70bf 100644
--- a/src/database/sql/convert_test.go
+++ b/src/database/sql/convert_test.go
@@ -357,9 +357,10 @@ func TestRawBytesAllocs(t *testing.T) {
{"time", time.Unix(2, 5).UTC(), "1970-01-01T00:00:02.000000005Z"},
}
- buf := make(RawBytes, 10)
- test := func(name string, in interface{}, want string) {
- if err := convertAssign(&buf, in); err != nil {
+ var buf RawBytes
+ rows := &Rows{}
+ test := func(name string, in interface{}, want string) {
+ if err := convertAssignRows(&buf, in, rows); err != nil {
t.Fatalf("%s: convertAssign = %v", name, err)
}
match := len(buf) == len(want)
@@ -378,6 +379,7 @@ func TestRawBytesAllocs(t *testing.T) {
n := testing.AllocsPerRun(100, func() {
for _, tt := range tests {
+ rows.raw = rows.raw[:0]
test(tt.name, tt.in, tt.want)
}
})
@@ -386,7 +388,11 @@ func TestRawBytesAllocs(t *testing.T) {
// and gc. With 32-bit words there are more convT2E allocs, and
// with gccgo, only pointers currently go in interface data.
// So only care on amd64 gc for now.
- measureAllocs := runtime.GOARCH == "amd64" && runtime.Compiler == "gc"
+ measureAllocs := false
+ switch runtime.GOARCH {
+ case "amd64", "arm64":
+ measureAllocs = runtime.Compiler == "gc"
+ }
if n > 0.5 && measureAllocs {
t.Fatalf("allocs = %v; want 0", n)
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index ef49e70..e25447c 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -2894,6 +2894,13 @@ type Rows struct {
// not to be called concurrently.
lastcols []driver.Value
+ // raw is a buffer for RawBytes that persists between Scan calls.
+ // This is used when the driver returns a mismatched type that requires
+ // a cloning allocation. For example, if the driver returns a *string and
+ // the user is scanning into a *RawBytes, we need to copy the string.
+ // The raw buffer here lets us reuse the memory for that copy across Scan calls.
+ raw []byte
+
// closemuScanHold is whether the previous call to Scan kept closemu RLock'ed
// without unlocking it. It does that when the user passes a *RawBytes scan
// target. In that case, we need to prevent awaitDone from closing the Rows
@@ -3068,6 +3075,32 @@ func (rs *Rows) Err() error {
return rs.lasterrOrErrLocked(nil)
}
+// rawbuf returns the buffer to append RawBytes values to.
+// This buffer is reused across calls to Rows.Scan.
+//
+// Usage:
+//
+// rawBytes = rows.setrawbuf(append(rows.rawbuf(), value...))
+func (rs *Rows) rawbuf() []byte {
+ if rs == nil {
+ // convertAssignRows can take a nil *Rows; for simplicity handle it here
+ return nil
+ }
+ return rs.raw
+}
+
+// setrawbuf updates the RawBytes buffer with the result of appending a new value to it.
+// It returns the new value.
+func (rs *Rows) setrawbuf(b []byte) RawBytes {
+ if rs == nil {
+ // convertAssignRows can take a nil *Rows; for simplicity handle it here
+ return RawBytes(b)
+ }
+ off := len(rs.raw)
+ rs.raw = b
+ return RawBytes(rs.raw[off:])
+}
+
var errRowsClosed = errors.New("sql: Rows are closed")
var errNoRows = errors.New("sql: no Rows available")
@@ -3275,6 +3308,7 @@ func (rs *Rows) Scan(dest ...interface{}) error {
if scanArgsContainRawBytes(dest) {
rs.closemuScanHold = true
+ rs.raw = rs.raw[:0]
} else {
rs.closemu.RUnlock()
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 53b38d1..6aa9bf0 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -4313,6 +4313,53 @@ func TestContextCancelDuringRawBytesScan(t *testing.T) {
}
}
+// Issue #65201.
+//
+// If a RawBytes is reused across multiple queries,
+// subsequent queries shouldn't overwrite driver-owned memory from previous queries.
+func TestRawBytesReuse(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ if _, err := db.Exec("USE_RAWBYTES"); err != nil {
+ t.Fatal(err)
+ }
+
+ var raw RawBytes
+
+ // The RawBytes in this query aliases driver-owned memory.
+ rows, err := db.Query("SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // now raw is pointing to driver-owned memory
+ name1 := string(raw)
+ rows.Close()
+
+ // The RawBytes in this query does not alias driver-owned memory.
+ rows, err = db.Query("SELECT|people|age|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // this must not write to the driver-owned memory in raw
+ rows.Close()
+
+ // Repeat the first query. Nothing should have changed.
+ rows, err = db.Query("SELECT|people|name|")
+ if err != nil {
+ t.Fatal(err)
+ }
+ rows.Next()
+ rows.Scan(&raw) // raw points to driver-owned memory again
+ name2 := string(raw)
+ rows.Close()
+ if name1 != name2 {
+ t.Fatalf("Scan read name %q, want %q", name2, name1)
+ }
+}
+
// badConn implements a bad driver.Conn, for TestBadDriver.
// The Exec method panics.
type badConn struct{}

View File

@@ -0,0 +1,327 @@
From 8a924caaf348fdc366bab906424616b2974ad4e9 Mon Sep 17 00:00:00 2001
From: Damien Neil <dneil@google.com>
Date: Wed, 23 Jul 2025 14:26:54 -0700
Subject: [PATCH] database/sql: avoid closing Rows while scan is in progress
A database/sql/driver.Rows can return database-owned data
from Rows.Next. The driver.Rows documentation doesn't explicitly
document the lifetime guarantees for this data, but a reasonable
expectation is that the caller of Next should only access it
until the next call to Rows.Close or Rows.Next.
Avoid violating that constraint when a query is cancelled while
a call to database/sql.Rows.Scan (note the difference between
the two different Rows types!) is in progress. We previously
took care to avoid closing a driver.Rows while the user has
access to driver-owned memory via a RawData, but we could still
close a driver.Rows while a Scan call was in the process of
reading previously-returned driver-owned data.
Update the fake DB used in database/sql tests to invalidate
returned data to help catch other places we might be
incorrectly retaining it.
Updates #74831
Fixes #74832
Change-Id: Ice45b5fad51b679c38e3e1d21ef39156b56d6037
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2540
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Neal Patel <nealpatel@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2601
Reviewed-on: https://go-review.googlesource.com/c/go/+/693558
TryBot-Bypass: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Mark Freeman <markfreeman@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
CVE: CVE-2025-47907
Upstream-Status: Backport [https://github.com/golang/go/commit/8a924caaf348fdc366bab906424616b2974ad4e9]
Signed-off-by: Praveen Kumar <praveen.kumar@windriver.com>
---
src/database/sql/convert.go | 2 --
src/database/sql/fakedb_test.go | 47 ++++++++++++--------------
src/database/sql/sql.go | 26 +++++++-------
src/database/sql/sql_test.go | 60 ++++++++++++++++++++++++++++++---
4 files changed, 90 insertions(+), 45 deletions(-)
diff --git a/src/database/sql/convert.go b/src/database/sql/convert.go
index 3a581f6..5b0c6f0 100644
--- a/src/database/sql/convert.go
+++ b/src/database/sql/convert.go
@@ -324,7 +324,6 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
if rows == nil {
return errors.New("invalid context to convert cursor rows, missing parent *Rows")
}
- rows.closemu.Lock()
*d = Rows{
dc: rows.dc,
releaseConn: func(error) {},
@@ -340,7 +339,6 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error {
parentCancel()
}
}
- rows.closemu.Unlock()
return nil
}
}
diff --git a/src/database/sql/fakedb_test.go b/src/database/sql/fakedb_test.go
index 33c57b9..9f3d517 100644
--- a/src/database/sql/fakedb_test.go
+++ b/src/database/sql/fakedb_test.go
@@ -5,6 +5,7 @@
package sql
import (
+ "bytes"
"context"
"database/sql/driver"
"errors"
@@ -15,7 +16,6 @@ import (
"strconv"
"strings"
"sync"
- "sync/atomic"
"testing"
"time"
)
@@ -91,8 +91,6 @@ func (cc *fakeDriverCtx) OpenConnector(name string) (driver.Connector, error) {
type fakeDB struct {
name string
- useRawBytes atomic.Bool
-
mu sync.Mutex
tables map[string]*table
badConn bool
@@ -683,8 +681,6 @@ func (c *fakeConn) PrepareContext(ctx context.Context, query string) (driver.Stm
switch cmd {
case "WIPE":
// Nothing
- case "USE_RAWBYTES":
- c.db.useRawBytes.Store(true)
case "SELECT":
stmt, err = c.prepareSelect(stmt, parts)
case "CREATE":
@@ -788,9 +784,6 @@ func (s *fakeStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (d
case "WIPE":
db.wipe()
return driver.ResultNoRows, nil
- case "USE_RAWBYTES":
- s.c.db.useRawBytes.Store(true)
- return driver.ResultNoRows, nil
case "CREATE":
if err := db.createTable(s.table, s.colName, s.colType); err != nil {
return nil, err
@@ -1073,10 +1066,9 @@ type rowsCursor struct {
errPos int
err error
- // a clone of slices to give out to clients, indexed by the
- // original slice's first byte address. we clone them
- // just so we're able to corrupt them on close.
- bytesClone map[*byte][]byte
+ // Data returned to clients.
+ // We clone and stash it here so it can be invalidated by Close and Next.
+ driverOwnedMemory [][]byte
// Every operation writes to line to enable the race detector
// check for data races.
@@ -1090,9 +1082,19 @@ func (rc *rowsCursor) touchMem() {
rc.line++
}
+func (rc *rowsCursor) invalidateDriverOwnedMemory() {
+ for _, buf := range rc.driverOwnedMemory {
+ for i := range buf {
+ buf[i] = 'x'
+ }
+ }
+ rc.driverOwnedMemory = nil
+}
+
func (rc *rowsCursor) Close() error {
rc.touchMem()
rc.parentMem.touchMem()
+ rc.invalidateDriverOwnedMemory()
rc.closed = true
return nil
}
@@ -1123,6 +1125,8 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
if rc.posRow >= len(rc.rows[rc.posSet]) {
return io.EOF // per interface spec
}
+ // Corrupt any previously returned bytes.
+ rc.invalidateDriverOwnedMemory()
for i, v := range rc.rows[rc.posSet][rc.posRow].cols {
// TODO(bradfitz): convert to subset types? naah, I
// think the subset types should only be input to
@@ -1130,20 +1134,13 @@ func (rc *rowsCursor) Next(dest []driver.Value) error {
// a wider range of types coming out of drivers. all
// for ease of drivers, and to prevent drivers from
// messing up conversions or doing them differently.
- dest[i] = v
-
- if bs, ok := v.([]byte); ok && !rc.db.useRawBytes.Load() {
- if rc.bytesClone == nil {
- rc.bytesClone = make(map[*byte][]byte)
- }
- clone, ok := rc.bytesClone[&bs[0]]
- if !ok {
- clone = make([]byte, len(bs))
- copy(clone, bs)
- rc.bytesClone[&bs[0]] = clone
- }
- dest[i] = clone
+ if bs, ok := v.([]byte); ok {
+ // Clone []bytes and stash for later invalidation.
+ bs = bytes.Clone(bs)
+ rc.driverOwnedMemory = append(rc.driverOwnedMemory, bs)
+ v = bs
}
+ dest[i] = v
}
return nil
}
diff --git a/src/database/sql/sql.go b/src/database/sql/sql.go
index e25447c..a428e29 100644
--- a/src/database/sql/sql.go
+++ b/src/database/sql/sql.go
@@ -3294,38 +3294,36 @@ func (rs *Rows) Scan(dest ...interface{}) error {
// without calling Next.
return fmt.Errorf("sql: Scan called without calling Next (closemuScanHold)")
}
+
rs.closemu.RLock()
+ rs.raw = rs.raw[:0]
+ err := rs.scanLocked(dest...)
+ if err == nil && scanArgsContainRawBytes(dest) {
+ rs.closemuScanHold = true
+ } else {
+ rs.closemu.RUnlock()
+ }
+ return err
+}
+func (rs *Rows) scanLocked(dest ...interface{}) error {
if rs.lasterr != nil && rs.lasterr != io.EOF {
- rs.closemu.RUnlock()
return rs.lasterr
}
if rs.closed {
- err := rs.lasterrOrErrLocked(errRowsClosed)
- rs.closemu.RUnlock()
- return err
- }
-
- if scanArgsContainRawBytes(dest) {
- rs.closemuScanHold = true
- rs.raw = rs.raw[:0]
- } else {
- rs.closemu.RUnlock()
+ return rs.lasterrOrErrLocked(errRowsClosed)
}
if rs.lastcols == nil {
- rs.closemuRUnlockIfHeldByScan()
return errors.New("sql: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
- rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf("sql: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
}
for i, sv := range rs.lastcols {
err := convertAssignRows(dest[i], sv, rs)
if err != nil {
- rs.closemuRUnlockIfHeldByScan()
return fmt.Errorf(`sql: Scan error on column index %d, name %q: %w`, i, rs.rowsi.Columns()[i], err)
}
}
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go
index 6aa9bf0..6aec7ec 100644
--- a/src/database/sql/sql_test.go
+++ b/src/database/sql/sql_test.go
@@ -5,6 +5,7 @@
package sql
import (
+ "bytes"
"context"
"database/sql/driver"
"errors"
@@ -4321,10 +4322,6 @@ func TestRawBytesReuse(t *testing.T) {
db := newTestDB(t, "people")
defer closeDB(t, db)
- if _, err := db.Exec("USE_RAWBYTES"); err != nil {
- t.Fatal(err)
- }
-
var raw RawBytes
// The RawBytes in this query aliases driver-owned memory.
@@ -4469,6 +4466,61 @@ func TestTypedString(t *testing.T) {
}
}
+type testScanner struct {
+ scanf func(src any) error
+}
+
+func (ts testScanner) Scan(src any) error { return ts.scanf(src) }
+
+func TestContextCancelDuringScan(t *testing.T) {
+ db := newTestDB(t, "people")
+ defer closeDB(t, db)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ scanStart := make(chan any)
+ scanEnd := make(chan error)
+ scanner := &testScanner{
+ scanf: func(src any) error {
+ scanStart <- src
+ return <-scanEnd
+ },
+ }
+
+ // Start a query, and pause it mid-scan.
+ want := []byte("Alice")
+ r, err := db.QueryContext(ctx, "SELECT|people|name|name=?", string(want))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !r.Next() {
+ t.Fatalf("r.Next() = false, want true")
+ }
+ go func() {
+ r.Scan(scanner)
+ }()
+ got := <-scanStart
+ defer close(scanEnd)
+ gotBytes, ok := got.([]byte)
+ if !ok {
+ t.Fatalf("r.Scan returned %T, want []byte", got)
+ }
+ if !bytes.Equal(gotBytes, want) {
+ t.Fatalf("before cancel: r.Scan returned %q, want %q", gotBytes, want)
+ }
+
+ // Cancel the query.
+ // Sleep to give it a chance to finish canceling.
+ cancel()
+ time.Sleep(10 * time.Millisecond)
+
+ // Cancelling the query should not have changed the result.
+ if !bytes.Equal(gotBytes, want) {
+ t.Fatalf("after cancel: r.Scan result is now %q, want %q", gotBytes, want)
+ }
+}
+
func BenchmarkConcurrentDBExec(b *testing.B) {
b.ReportAllocs()
ct := new(concurrentDBExecTest)

View File

@@ -4,7 +4,7 @@ HOMEPAGE = "https://pypi.org/project/Jinja2/"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dc88300786f1c214c1e9827a5229462"
SRC_URI[sha256sum] = "4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"
SRC_URI[sha256sum] = "0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"
PYPI_PACKAGE = "jinja2"
@@ -22,6 +22,9 @@ SRC_URI += " \
do_install_ptest() {
install -d ${D}${PTEST_PATH}/tests
cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
# test_async items require trio module
rm -f ${D}${PTEST_PATH}/tests/test_async.py ${D}${PTEST_PATH}/tests/test_async_filters.py
}
RDEPENDS:${PN}-ptest += " \

View File

@@ -16,7 +16,7 @@ diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 3bbbcaa..473167d 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -2675,7 +2675,8 @@ class TarFile(object):
@@ -2678,7 +2678,8 @@ class TarFile(object):
os.lchown(targetpath, u, g)
else:
os.chown(targetpath, u, g)

View File

@@ -1,219 +0,0 @@
From c9d9f78feb1467e73fd29356c040bde1c104f29f Mon Sep 17 00:00:00 2001
From: "Miss Islington (bot)"
<31488909+miss-islington@users.noreply.github.com>
Date: Mon, 4 Aug 2025 13:45:06 +0200
Subject: [PATCH] [3.12] gh-130577: tarfile now validates archives to ensure
member offsets are non-negative (GH-137027) (#137171)
(cherry picked from commit 7040aa54f14676938970e10c5f74ea93cd56aa38)
Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
CVE: CVE-2025-8194
Upstream-Status: Backport [https://github.com/python/cpython/commit/c9d9f78feb1467e73fd29356c040bde1c104f29f]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
Lib/tarfile.py | 3 +
Lib/test/test_tarfile.py | 156 ++++++++++++++++++
...-07-23-00-35-29.gh-issue-130577.c7EITy.rst | 3 +
3 files changed, 162 insertions(+)
create mode 100644 Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 9999a99d54..59d3f6e5cc 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1613,6 +1613,9 @@ class TarInfo(object):
"""Round up a byte count by BLOCKSIZE and return it,
e.g. _block(834) => 1024.
"""
+ # Only non-negative offsets are allowed
+ if count < 0:
+ raise InvalidHeaderError("invalid offset")
blocks, remainder = divmod(count, BLOCKSIZE)
if remainder:
blocks += 1
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index a184ba75a8..759fa03ead 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -49,6 +49,7 @@ bz2name = os.path.join(TEMPDIR, "testtar.tar.bz2")
xzname = os.path.join(TEMPDIR, "testtar.tar.xz")
tmpname = os.path.join(TEMPDIR, "tmp.tar")
dotlessname = os.path.join(TEMPDIR, "testtar")
+SPACE = b" "
sha256_regtype = (
"e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce"
@@ -4273,6 +4274,161 @@ class TestExtractionFilters(unittest.TestCase):
self.expect_exception(TypeError) # errorlevel is not int
+class OffsetValidationTests(unittest.TestCase):
+ tarname = tmpname
+ invalid_posix_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011407" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 6 bytes, version: 2 bytes
+ + tarfile.POSIX_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # devminor, space, null terminator: 8 bytes
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
+ # prefix: 155 bytes
+ + tarfile.NUL * tarfile.LENGTH_PREFIX
+ # padding: 12 bytes
+ + tarfile.NUL * 12
+ )
+ invalid_gnu_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, null terminator: 8 bytes
+ + b"0000755" + tarfile.NUL
+ # uid, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"0000001" + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0011327" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # magic: 8 bytes
+ + tarfile.GNU_MAGIC
+ # uname: 32 bytes
+ + tarfile.NUL * 32
+ # gname: 32 bytes
+ + tarfile.NUL * 32
+ # devmajor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # devminor, null terminator: 8 bytes
+ + tarfile.NUL * 8
+ # padding: 167 bytes
+ + tarfile.NUL * 167
+ )
+ invalid_v7_header = (
+ # name: 100 bytes
+ tarfile.NUL * tarfile.LENGTH_NAME
+ # mode, space, null terminator: 8 bytes
+ + b"000755" + SPACE + tarfile.NUL
+ # uid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # gid, space, null terminator: 8 bytes
+ + b"000001" + SPACE + tarfile.NUL
+ # size, space: 12 bytes
+ + b"\xff" * 11 + SPACE
+ # mtime, space: 12 bytes
+ + tarfile.NUL * 11 + SPACE
+ # chksum: 8 bytes
+ + b"0010070" + tarfile.NUL
+ # type: 1 byte
+ + tarfile.REGTYPE
+ # linkname: 100 bytes
+ + tarfile.NUL * tarfile.LENGTH_LINK
+ # padding: 255 bytes
+ + tarfile.NUL * 255
+ )
+ valid_gnu_header = tarfile.TarInfo("filename").tobuf(tarfile.GNU_FORMAT)
+ data_block = b"\xff" * tarfile.BLOCKSIZE
+
+ def _write_buffer(self, buffer):
+ with open(self.tarname, "wb") as f:
+ f.write(buffer)
+
+ def _get_members(self, ignore_zeros=None):
+ with open(self.tarname, "rb") as f:
+ with tarfile.open(
+ mode="r", fileobj=f, ignore_zeros=ignore_zeros
+ ) as tar:
+ return tar.getmembers()
+
+ def _assert_raises_read_error_exception(self):
+ with self.assertRaisesRegex(
+ tarfile.ReadError, "file could not be opened successfully"
+ ):
+ self._get_members()
+
+ def test_invalid_offset_header_validations(self):
+ for tar_format, invalid_header in (
+ ("posix", self.invalid_posix_header),
+ ("gnu", self.invalid_gnu_header),
+ ("v7", self.invalid_v7_header),
+ ):
+ with self.subTest(format=tar_format):
+ self._write_buffer(invalid_header)
+ self._assert_raises_read_error_exception()
+
+ def test_early_stop_at_invalid_offset_header(self):
+ buffer = self.valid_gnu_header + self.invalid_gnu_header + self.valid_gnu_header
+ self._write_buffer(buffer)
+ members = self._get_members()
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, 0)
+
+ def test_ignore_invalid_archive(self):
+ # 3 invalid headers with their respective data
+ buffer = (self.invalid_gnu_header + self.data_block) * 3
+ self._write_buffer(buffer)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 0)
+
+ def test_ignore_invalid_offset_headers(self):
+ for first_block, second_block, expected_offset in (
+ (
+ (self.valid_gnu_header),
+ (self.invalid_gnu_header + self.data_block),
+ 0,
+ ),
+ (
+ (self.invalid_gnu_header + self.data_block),
+ (self.valid_gnu_header),
+ 1024,
+ ),
+ ):
+ self._write_buffer(first_block + second_block)
+ members = self._get_members(ignore_zeros=True)
+ self.assertEqual(len(members), 1)
+ self.assertEqual(members[0].name, "filename")
+ self.assertEqual(members[0].offset, expected_offset)
+
+
def setUpModule():
os_helper.unlink(TEMPDIR)
os.makedirs(TEMPDIR)
diff --git a/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst b/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
new file mode 100644
index 0000000000..342cabbc86
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
@@ -0,0 +1,3 @@
+:mod:`tarfile` now validates archives to ensure member offsets are
+non-negative. (Contributed by Alexander Enrique Urieles Nieto in
+:gh:`130577`.)

View File

@@ -37,7 +37,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
file://0001-test_storlines-skip-due-to-load-variability.patch \
file://0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch \
file://CVE-2025-8194.patch \
"
SRC_URI:append:class-native = " \
@@ -46,7 +45,7 @@ SRC_URI:append:class-native = " \
file://12-distutils-prefix-is-inside-staging-area.patch \
file://0001-Don-t-search-system-for-headers-libraries.patch \
"
SRC_URI[sha256sum] = "ae665bc678abd9ab6a6e1573d2481625a53719bc517e9a634ed2b9fefae3817f"
SRC_URI[sha256sum] = "c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076"
# exclude pre-releases for both python 2.x and 3.x
UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"

View File

@@ -128,6 +128,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
file://CVE-2024-3446-0005.patch \
file://CVE-2024-3446-0006.patch \
file://CVE-2024-3447.patch \
file://CVE-2024-8354.patch \
"
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"

View File

@@ -0,0 +1,75 @@
From 746269eaae16423572ae7c0dfeb66140fa882149 Mon Sep 17 00:00:00 2001
From: Peter Maydell <peter.maydell@linaro.org>
Date: Mon, 15 Sep 2025 14:29:10 +0100
Subject: [PATCH] hw/usb/hcd-uhci: don't assert for SETUP to non-0 endpoint
If the guest feeds invalid data to the UHCI controller, we
can assert:
qemu-system-x86_64: ../../hw/usb/core.c:744: usb_ep_get: Assertion `pid == USB_TOKEN_IN || pid == USB_TOKEN_OUT' failed.
(see issue 2548 for the repro case). This happens because the guest
attempts USB_TOKEN_SETUP to an endpoint other than 0, which is not
valid. The controller code doesn't catch this guest error, so
instead we hit the assertion in the USB core code.
Catch the case of SETUP to non-zero endpoint, and treat it as a fatal
error in the TD, in the same way we do for an invalid PID value in
the TD.
This is the UHCI equivalent of the same bug in OHCI that we fixed in
commit 3c3c233677 ("hw/usb/hcd-ohci: Fix #1510, #303: pid not IN or
OUT").
This bug has been tracked as CVE-2024-8354.
Cc: qemu-stable@nongnu.org
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/2548
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
(cherry picked from commit d0af3cd0274e265435170a583c72b9f0a4100dff)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
CVE: CVE-2024-8354
Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/746269eaae16423572ae7c0dfeb66140fa882149]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
hw/usb/hcd-uhci.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 0561a6d801..8f4d6a0f71 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -724,6 +724,7 @@ static int uhci_handle_td(UHCIState *s, UHCIQueue *q, uint32_t qh_addr,
bool spd;
bool queuing = (q != NULL);
uint8_t pid = td->token & 0xff;
+ uint8_t ep_id = (td->token >> 15) & 0xf;
UHCIAsync *async;
async = uhci_async_find_td(s, td_addr);
@@ -767,9 +768,14 @@ static int uhci_handle_td(UHCIState *s, UHCIQueue *q, uint32_t qh_addr,
switch (pid) {
case USB_TOKEN_OUT:
- case USB_TOKEN_SETUP:
case USB_TOKEN_IN:
break;
+ case USB_TOKEN_SETUP:
+ /* SETUP is only valid to endpoint 0 */
+ if (ep_id == 0) {
+ break;
+ }
+ /* fallthrough */
default:
/* invalid pid : frame interrupted */
s->status |= UHCI_STS_HCPERR;
@@ -816,7 +822,7 @@ static int uhci_handle_td(UHCIState *s, UHCIQueue *q, uint32_t qh_addr,
return uhci_handle_td_error(s, td, td_addr, USB_RET_NODEV,
int_mask);
}
- ep = usb_ep_get(dev, pid, (td->token >> 15) & 0xf);
+ ep = usb_ep_get(dev, pid, ep_id);
q = uhci_queue_new(s, qh_addr, td, ep);
}
async = uhci_async_alloc(q, td_addr);

View File

@@ -0,0 +1,134 @@
From 0cae41b23a9669e801211dd4cf97b6dadd6dbdd7 Mon Sep 17 00:00:00 2001
From: Ken Sharp <Ken.Sharp@artifex.com>
Date: Thu, 22 May 2025 12:25:41 +0100
Subject: [PATCH] pdfwrite - avoid buffer overrun
Bug #708539 "Buffer overflow in pdf_write_cmap"
The proposed fix in the report solves the buffer overrun, but does not
tackle a number of other problems.
This commit checks the result of stream_puts() in
pdf_write_cid_system_info_to_stream() and correctly signals an error to
the caller if that fails.
In pdf_write_cid_system_info we replace a (rather small!) fixed size
buffer with a dynamically allocated one using the lengths of the strings
which pdf_write_cid_system_info_to_stream() will write, and a small
fixed overhead to deal with the keys and initial byte '/'.
Because 'buf' is used in the stream 's', if it is too small to hold all
the CIDSystemInfo then we would get an error which was simply discarded
previously.
We now should avoid the potential error by ensuring the buffer is large
enough for all the information, and if we do get an error we no longer
silently ignore it, which would write an invalid PDF file.
CVE: CVE-2025-59798
Upstream-Status: Backport [https://github.com/ArtifexSoftware/ghostpdl/commit/0cae41b23a9669e801211dd4cf97b6dadd6dbdd7]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
devices/vector/gdevpdtw.c | 52 ++++++++++++++++++++++++++++++---------
1 file changed, 41 insertions(+), 11 deletions(-)
diff --git a/devices/vector/gdevpdtw.c b/devices/vector/gdevpdtw.c
index ced15c9b2..fe24dd73a 100644
--- a/devices/vector/gdevpdtw.c
+++ b/devices/vector/gdevpdtw.c
@@ -694,7 +694,8 @@ static int
pdf_write_cid_system_info_to_stream(gx_device_pdf *pdev, stream *s,
const gs_cid_system_info_t *pcidsi, gs_id object_id)
{
- byte *Registry, *Ordering;
+ byte *Registry = NULL, *Ordering = NULL;
+ int code = 0;
Registry = gs_alloc_bytes(pdev->pdf_memory, pcidsi->Registry.size, "temporary buffer for Registry");
if (!Registry)
@@ -725,14 +726,19 @@ pdf_write_cid_system_info_to_stream(gx_device_pdf *pdev, stream *s,
}
s_arcfour_process_buffer(&sarc4, Ordering, pcidsi->Ordering.size);
}
- stream_puts(s, "<<\n/Registry");
+ code = stream_puts(s, "<<\n/Registry");
+ if (code < 0)
+ goto error;
s_write_ps_string(s, Registry, pcidsi->Registry.size, PRINT_HEX_NOT_OK);
- stream_puts(s, "\n/Ordering");
+ code = stream_puts(s, "\n/Ordering");
+ if(code < 0)
+ goto error;
s_write_ps_string(s, Ordering, pcidsi->Ordering.size, PRINT_HEX_NOT_OK);
+error:
pprintd1(s, "\n/Supplement %d\n>>\n", pcidsi->Supplement);
gs_free_object(pdev->pdf_memory, Registry, "free temporary Registry buffer");
gs_free_object(pdev->pdf_memory, Ordering, "free temporary Ordering buffer");
- return 0;
+ return code;
}
int
@@ -777,31 +783,55 @@ pdf_write_cmap(gx_device_pdf *pdev, const gs_cmap_t *pcmap,
*ppres = writer.pres;
writer.pres->where_used = 0; /* CMap isn't a PDF resource. */
if (!pcmap->ToUnicode) {
- byte buf[200];
+ byte *buf = NULL;
+ uint64_t buflen = 0;
cos_dict_t *pcd = (cos_dict_t *)writer.pres->object;
stream s;
+ /* We use 'buf' for the stream 's' below and that needs to have some extra
+ * space for the CIDSystemInfo. We also need an extra byte for the leading '/'
+ * 100 bytes is ample for the overhead.
+ */
+ buflen = pcmap->CIDSystemInfo->Registry.size + pcmap->CIDSystemInfo->Ordering.size + pcmap->CMapName.size + 100;
+ if (buflen > max_uint)
+ return_error(gs_error_limitcheck);
+
+ buf = gs_alloc_bytes(pdev->memory, buflen, "pdf_write_cmap");
+ if (buf == NULL)
+ return_error(gs_error_VMerror);
+
code = cos_dict_put_c_key_int(pcd, "/WMode", pcmap->WMode);
- if (code < 0)
+ if (code < 0) {
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
return code;
+ }
buf[0] = '/';
memcpy(buf + 1, pcmap->CMapName.data, pcmap->CMapName.size);
code = cos_dict_put_c_key_string(pcd, "/CMapName",
buf, pcmap->CMapName.size + 1);
- if (code < 0)
+ if (code < 0) {
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
return code;
+ }
s_init(&s, pdev->memory);
- swrite_string(&s, buf, sizeof(buf));
+ swrite_string(&s, buf, buflen);
code = pdf_write_cid_system_info_to_stream(pdev, &s, pcmap->CIDSystemInfo, 0);
- if (code < 0)
+ if (code < 0) {
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
return code;
+ }
code = cos_dict_put_c_key_string(pcd, "/CIDSystemInfo",
buf, stell(&s));
- if (code < 0)
+ if (code < 0) {
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
return code;
+ }
code = cos_dict_put_string_copy(pcd, "/Type", "/CMap");
- if (code < 0)
+ if (code < 0) {
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
return code;
+ }
+ gs_free_object(pdev->memory, buf, "pdf_write_cmap");
}
if (pcmap->CMapName.size == 0) {
/* Create an arbitrary name (for ToUnicode CMap). */

View File

@@ -0,0 +1,41 @@
From 6dab38fb211f15226c242ab7a83fa53e4b0ff781 Mon Sep 17 00:00:00 2001
From: Piotr Kajda <petermasterperfect@gmail.com>
Date: Thu, 8 May 2025 11:37:09 +0100
Subject: [PATCH] pdfwrite - bounds check some strings
Bug #708517
This differs very slightly from the proposed patch in the bug report, I
had a quick scout through the C file and found another similar case.
Both fixed here.
CVE: CVE-2025-59799
Upstream-Status: Backport [https://github.com/ArtifexSoftware/ghostpdl/commit/6dab38fb211f15226c242ab7a83fa53e4b0ff781]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
devices/vector/gdevpdfm.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/devices/vector/gdevpdfm.c b/devices/vector/gdevpdfm.c
index 5aa3644e2..4b1d7d89c 100644
--- a/devices/vector/gdevpdfm.c
+++ b/devices/vector/gdevpdfm.c
@@ -199,6 +199,8 @@ pdfmark_coerce_dest(gs_param_string *dstr, char dest[MAX_DEST_STRING])
{
const byte *data = dstr->data;
uint size = dstr->size;
+ if (size > MAX_DEST_STRING)
+ return_error(gs_error_limitcheck);
if (size == 0 || data[0] != '(')
return 0;
/****** HANDLE ESCAPES ******/
@@ -848,6 +850,8 @@ pdfmark_put_ao_pairs(gx_device_pdf * pdev, cos_dict_t *pcd,
char buf[30];
int d0, d1;
+ if (Action[1].size > 29)
+ return_error(gs_error_rangecheck);
memcpy(buf, Action[1].data, Action[1].size);
buf[Action[1].size] = 0;
if (sscanf(buf, "%d %d R", &d0, &d1) == 2)

View File

@@ -0,0 +1,36 @@
From 176cf0188a2294bc307b8caec876f39412e58350 Mon Sep 17 00:00:00 2001
From: Ken Sharp <Ken.Sharp@artifex.com>
Date: Tue, 1 Jul 2025 10:31:17 +0100
Subject: [PATCH] PDF OCR 8 bit device - avoid overflow
Bug 708602 "Heap overflow in ocr_line8"
Make sure the calculation of the required raster size does not overflow
an int.
CVE: CVE-2025-59800
Upstream-Status: Backport [https://github.com/ArtifexSoftware/ghostpdl/commit/176cf0188a2294bc307b8caec876f39412e58350]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
devices/gdevpdfocr.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/devices/gdevpdfocr.c b/devices/gdevpdfocr.c
index f27dc11db..6362f4104 100644
--- a/devices/gdevpdfocr.c
+++ b/devices/gdevpdfocr.c
@@ -521,9 +521,12 @@ ocr_line32(gx_device_pdf_image *dev, void *row)
static int
ocr_begin_page(gx_device_pdf_image *dev, int w, int h, int bpp)
{
- int raster = (w+3)&~3;
+ int64_t raster = (w + 3) & ~3;
- dev->ocr.data = gs_alloc_bytes(dev->memory, raster * h, "ocr_begin_page");
+ raster = raster * (int64_t)h;
+ if (raster < 0 || raster > max_size_t)
+ return gs_note_error(gs_error_VMerror);
+ dev->ocr.data = gs_alloc_bytes(dev->memory, raster, "ocr_begin_page");
if (dev->ocr.data == NULL)
return_error(gs_error_VMerror);
dev->ocr.w = w;

View File

@@ -76,6 +76,9 @@ SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/d
file://CVE-2025-27836-1.patch \
file://CVE-2025-27836-2.patch \
file://CVE-2025-48708.patch \
file://CVE-2025-59798.patch \
file://CVE-2025-59799.patch \
file://CVE-2025-59800.patch \
"
SRC_URI = "${SRC_URI_BASE} \

View File

@@ -9,7 +9,7 @@ BUGTRACKER = "https://gitlab.gnome.org/GNOME/libhandy/-/issues"
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https;branch=master \
SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https;branch=main \
file://0001-Add-private-headers.patch \
"
SRCREV = "8fa8306a79215fc6ebf2483145da98bf9b2495ab"

View File

@@ -11,13 +11,13 @@ python () {
raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
}
SRCREV_machine ?= "76da2cf32fe004e10f581744496e71547d0a4361"
SRCREV_meta ?= "5932fcfa6982f5b86a13849b84ef3d80a557a030"
SRCREV_machine ?= "259f7f9d0bd0df2c3e497395568a655c5745b5ac"
SRCREV_meta ?= "578937826ffad97749eba3a5d1b21b37b5cd7bdc"
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
LINUX_VERSION ?= "5.15.186"
LINUX_VERSION ?= "5.15.194"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"

View File

@@ -5,7 +5,7 @@ KCONFIG_MODE = "--allnoconfig"
require recipes-kernel/linux/linux-yocto.inc
LINUX_VERSION ?= "5.15.186"
LINUX_VERSION ?= "5.15.194"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -14,8 +14,8 @@ DEPENDS += "openssl-native util-linux-native"
KMETA = "kernel-meta"
KCONF_BSP_AUDIT_LEVEL = "2"
SRCREV_machine ?= "4175c60a7b8e282d802be846bae75eeba398969e"
SRCREV_meta ?= "5932fcfa6982f5b86a13849b84ef3d80a557a030"
SRCREV_machine ?= "57960f78280a75ea48270a3984ac01bd06078b88"
SRCREV_meta ?= "578937826ffad97749eba3a5d1b21b37b5cd7bdc"
PV = "${LINUX_VERSION}+git${SRCPV}"

View File

@@ -14,24 +14,24 @@ KBRANCH:qemux86 ?= "v5.15/standard/base"
KBRANCH:qemux86-64 ?= "v5.15/standard/base"
KBRANCH:qemumips64 ?= "v5.15/standard/mti-malta64"
SRCREV_machine:qemuarm ?= "d93c7fcf604b572bf93497e00017f9cf34fa34c7"
SRCREV_machine:qemuarm64 ?= "9e9701d7239420165b342f3c363961ee3040a91e"
SRCREV_machine:qemumips ?= "be5800a6d9002fd12668c0f8ada68ad7cab4398c"
SRCREV_machine:qemuppc ?= "6fa52ff2eb31c6855f51a0d4f96339c50437d139"
SRCREV_machine:qemuriscv64 ?= "48702d462c58d69b4b382bb34984f2f0881d0bb1"
SRCREV_machine:qemuriscv32 ?= "48702d462c58d69b4b382bb34984f2f0881d0bb1"
SRCREV_machine:qemux86 ?= "48702d462c58d69b4b382bb34984f2f0881d0bb1"
SRCREV_machine:qemux86-64 ?= "48702d462c58d69b4b382bb34984f2f0881d0bb1"
SRCREV_machine:qemumips64 ?= "bb909213f7e13fd17e39d95e5d1b646a7b0bacf2"
SRCREV_machine ?= "48702d462c58d69b4b382bb34984f2f0881d0bb1"
SRCREV_meta ?= "5932fcfa6982f5b86a13849b84ef3d80a557a030"
SRCREV_machine:qemuarm ?= "7b19f872b07703f73c494baa81cd7e984db01336"
SRCREV_machine:qemuarm64 ?= "431a37a229ce5be7b6ba116dc7bd282be4a745fa"
SRCREV_machine:qemumips ?= "9404d4015b457e7324d5675d3e14f46d84cd8c40"
SRCREV_machine:qemuppc ?= "bfd132d4b358cdb5260fccc71eb1e5a09daae033"
SRCREV_machine:qemuriscv64 ?= "5df8e23ccadd62ab9945320b6b4327b082870c61"
SRCREV_machine:qemuriscv32 ?= "5df8e23ccadd62ab9945320b6b4327b082870c61"
SRCREV_machine:qemux86 ?= "5df8e23ccadd62ab9945320b6b4327b082870c61"
SRCREV_machine:qemux86-64 ?= "5df8e23ccadd62ab9945320b6b4327b082870c61"
SRCREV_machine:qemumips64 ?= "ed52c5eccf0cc2b0da2dd7d13d012c50db78a62a"
SRCREV_machine ?= "5df8e23ccadd62ab9945320b6b4327b082870c61"
SRCREV_meta ?= "578937826ffad97749eba3a5d1b21b37b5cd7bdc"
# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
# get the <version>/base branch, which is pure upstream -stable, and the same
# meta SRCREV as the linux-yocto-standard builds. Select your version using the
# normal PREFERRED_VERSION settings.
BBCLASSEXTEND = "devupstream:target"
SRCREV_machine:class-devupstream ?= "1c700860e8bc079c5c71d73c55e51865d273943c"
SRCREV_machine:class-devupstream ?= "29e53a5b1c4f144301ee36a907e8b03d7733f0b0"
PN:class-devupstream = "linux-yocto-upstream"
KBRANCH:class-devupstream = "v5.15/base"
@@ -39,7 +39,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRA
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
LINUX_VERSION ?= "5.15.186"
LINUX_VERSION ?= "5.15.194"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"

View File

@@ -21,7 +21,7 @@ Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 91d96dc8ddaebe0b6cb393f672085e6bfaf15a31)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
CVE: CVE-2023-6602 CVE-2023-6604 CVE-2023-6605
CVE: CVE-2023-6601 CVE-2023-6602 CVE-2023-6604 CVE-2023-6605
Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/9803800e0e8cd8e1e7695f77cfbf4e0db0abfe57]

View File

@@ -101,6 +101,10 @@ CVE_CHECK_IGNORE += "CVE-2022-3109"
# bugfix: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/481e81be1271ac9a0124ee615700390c2371bd89
CVE_CHECK_IGNORE += "CVE-2022-3341"
# This vulnerability was fixed in 5.0
# bugfix: https://github.com/FFmpeg/FFmpeg/commit/28c83584e8f3cd747c1476a74cc2841d3d1fa7f3
CVE_CHECK_IGNORE += "CVE-2023-6603"
# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
ARM_INSTRUCTION_SET:armv4 = "arm"
ARM_INSTRUCTION_SET:armv5 = "arm"

View File

@@ -0,0 +1,50 @@
From 5463f0e09768ca90aa8c58357c1f4c645db580db Mon Sep 17 00:00:00 2001
From: Seungha Yang <seungha@centricular.com>
Date: Sat, 15 Mar 2025 22:39:44 +0900
Subject: [PATCH 1/2] h265parser: Fix max_dec_pic_buffering_minus1 bound check
Allowed max value is MaxDpbSize - 1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8885>
Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/5463f0e09768ca90aa8c58357c1f4c645db580db]
CVE: CVE-2025-3887
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
gst-libs/gst/codecparsers/gsth265parser.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gst-libs/gst/codecparsers/gsth265parser.c b/gst-libs/gst/codecparsers/gsth265parser.c
index 3db1c38..d02e32d 100644
--- a/gst-libs/gst/codecparsers/gsth265parser.c
+++ b/gst-libs/gst/codecparsers/gsth265parser.c
@@ -72,6 +72,8 @@
#include <string.h>
#include <math.h>
+#define MAX_DPB_SIZE 16
+
#ifndef GST_DISABLE_GST_DEBUG
#define GST_CAT_DEFAULT gst_h265_debug_category_get()
static GstDebugCategory *
@@ -1686,7 +1688,7 @@ gst_h265_parse_vps (GstH265NalUnit * nalu, GstH265VPS * vps)
for (i =
(vps->sub_layer_ordering_info_present_flag ? 0 :
vps->max_sub_layers_minus1); i <= vps->max_sub_layers_minus1; i++) {
- READ_UE_MAX (&nr, vps->max_dec_pic_buffering_minus1[i], G_MAXUINT32 - 1);
+ READ_UE_MAX (&nr, vps->max_dec_pic_buffering_minus1[i], MAX_DPB_SIZE - 1);
READ_UE_MAX (&nr, vps->max_num_reorder_pics[i],
vps->max_dec_pic_buffering_minus1[i]);
READ_UE_MAX (&nr, vps->max_latency_increase_plus1[i], G_MAXUINT32 - 1);
@@ -1882,7 +1884,7 @@ gst_h265_parse_sps (GstH265Parser * parser, GstH265NalUnit * nalu,
for (i =
(sps->sub_layer_ordering_info_present_flag ? 0 :
sps->max_sub_layers_minus1); i <= sps->max_sub_layers_minus1; i++) {
- READ_UE_MAX (&nr, sps->max_dec_pic_buffering_minus1[i], 16);
+ READ_UE_MAX (&nr, sps->max_dec_pic_buffering_minus1[i], MAX_DPB_SIZE - 1);
READ_UE_MAX (&nr, sps->max_num_reorder_pics[i],
sps->max_dec_pic_buffering_minus1[i]);
READ_UE_MAX (&nr, sps->max_latency_increase_plus1[i], G_MAXUINT32 - 1);
--
2.25.1

View File

@@ -0,0 +1,93 @@
From bcaab3609805ea10fb3d9ac0c9d947b4c3563948 Mon Sep 17 00:00:00 2001
From: Seungha Yang <seungha@centricular.com>
Date: Sat, 15 Mar 2025 23:48:52 +0900
Subject: [PATCH 2/2] h265parser: Fix num_long_term_pics bound check
As defined in the spec 7.4.7.1, calculates allowed maximum
value of num_long_term_pics
Fixes ZDI-CAN-26596
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4285
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8885>
Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/bcaab3609805ea10fb3d9ac0c9d947b4c3563948]
CVE: CVE-2025-3887
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
gst-libs/gst/codecparsers/gsth265parser.c | 40 +++++++++++++++++++++--
1 file changed, 37 insertions(+), 3 deletions(-)
diff --git a/gst-libs/gst/codecparsers/gsth265parser.c b/gst-libs/gst/codecparsers/gsth265parser.c
index d02e32d..ad9751f 100644
--- a/gst-libs/gst/codecparsers/gsth265parser.c
+++ b/gst-libs/gst/codecparsers/gsth265parser.c
@@ -2513,6 +2513,8 @@ gst_h265_parser_parse_slice_hdr (GstH265Parser * parser,
READ_UINT8 (&nr, slice->colour_plane_id, 2);
if (!GST_H265_IS_NAL_TYPE_IDR (nalu->type)) {
+ const GstH265ShortTermRefPicSet *ref_pic_sets = NULL;
+
READ_UINT16 (&nr, slice->pic_order_cnt_lsb,
(sps->log2_max_pic_order_cnt_lsb_minus4 + 4));
@@ -2525,21 +2527,53 @@ gst_h265_parser_parse_slice_hdr (GstH265Parser * parser,
goto error;
slice->short_term_ref_pic_set_size = nal_reader_get_pos (&nr) - pos;
+
+ ref_pic_sets = &slice->short_term_ref_pic_sets;
} else if (sps->num_short_term_ref_pic_sets > 1) {
const guint n = ceil_log2 (sps->num_short_term_ref_pic_sets);
READ_UINT8 (&nr, slice->short_term_ref_pic_set_idx, n);
CHECK_ALLOWED_MAX (slice->short_term_ref_pic_set_idx,
sps->num_short_term_ref_pic_sets - 1);
+ ref_pic_sets =
+ &sps->short_term_ref_pic_set[slice->short_term_ref_pic_set_idx];
+ } else {
+ ref_pic_sets = &sps->short_term_ref_pic_set[0];
}
if (sps->long_term_ref_pics_present_flag) {
guint32 limit;
+ gint max_num_long_term_pics = 0;
+ gint TwoVersionsOfCurrDecPicFlag = 0;
- if (sps->num_long_term_ref_pics_sps > 0)
+ if (sps->num_long_term_ref_pics_sps > 0) {
READ_UE_MAX (&nr, slice->num_long_term_sps,
sps->num_long_term_ref_pics_sps);
-
- READ_UE_MAX (&nr, slice->num_long_term_pics, 16);
+ }
+
+ /* 7.4.3.3.3 */
+ if (pps->pps_scc_extension_flag &&
+ pps->pps_scc_extension_params.pps_curr_pic_ref_enabled_flag &&
+ (sps->sample_adaptive_offset_enabled_flag ||
+ !pps->deblocking_filter_disabled_flag ||
+ pps->deblocking_filter_override_enabled_flag)) {
+ TwoVersionsOfCurrDecPicFlag = 1;
+ }
+
+ /* Calculated upper bound num_long_term_pics can have. 7.4.7.1 */
+ max_num_long_term_pics =
+ /* sps_max_dec_pic_buffering_minus1[TemporalId], allowed max is
+ * MaxDpbSize - 1 */
+ MAX_DPB_SIZE - 1
+ - (gint) slice->num_long_term_sps
+ - (gint) ref_pic_sets->NumNegativePics
+ - (gint) ref_pic_sets->NumPositivePics -
+ TwoVersionsOfCurrDecPicFlag;
+ if (max_num_long_term_pics < 0) {
+ GST_WARNING ("Invalid stream, too many reference pictures");
+ goto error;
+ }
+
+ READ_UE_MAX (&nr, slice->num_long_term_pics, max_num_long_term_pics);
limit = slice->num_long_term_sps + slice->num_long_term_pics;
for (i = 0; i < limit; i++) {
if (i < slice->num_long_term_sps) {
--
2.25.1

View File

@@ -17,6 +17,8 @@ SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad
file://CVE-2024-0444.patch \
file://CVE-2023-44446.patch \
file://CVE-2023-50186.patch \
file://CVE-2025-3887-1.patch \
file://CVE-2025-3887-2.patch \
"
SRC_URI[sha256sum] = "87251beebfd1325e5118cc67774061f6e8971761ca65a9e5957919610080d195"

View File

@@ -71,15 +71,24 @@ FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
CVE_PRODUCT = "gstreamer"
# these CVEs are patched in gstreamer1.0-plugins-bad
CVE_CHECK_IGNORE += "CVE-2023-40474 CVE-2023-40475 CVE-2023-40476 CVE-2023-44429 CVE-2023-44446 CVE-2023-50186 CVE-2024-0444"
CVE_CHECK_IGNORE += "\
CVE-2023-40474 CVE-2023-40475 CVE-2023-40476 CVE-2023-44429 CVE-2023-44446 CVE-2023-50186 CVE-2024-0444 \
CVE-2025-3887 \
"
# these CVEs are patched in gstreamer1.0-plugins-base
CVE_CHECK_IGNORE += "CVE-2024-47538 CVE-2024-47541 CVE-2024-47542 CVE-2024-47600 CVE-2024-47607 CVE-2024-47615 CVE-2024-47835"
CVE_CHECK_IGNORE += " \
CVE-2024-47538 CVE-2024-47541 CVE-2024-47542 CVE-2024-47600 CVE-2024-47607 CVE-2024-47615 CVE-2024-47835 \
CVE-2025-47806 CVE-2025-47807 CVE-2025-47808 \
"
# these CVEs are patched in gstreamer1.0-plugins-good
CVE_CHECK_IGNORE += " \
CVE-2024-47537 CVE-2024-47539 CVE-2024-47540 CVE-2024-47543 CVE-2024-47544 CVE-2024-47545 \
CVE-2024-47546 CVE-2024-47596 CVE-2024-47597 CVE-2024-47598 CVE-2024-47599 CVE-2024-47601 \
CVE-2024-47602 CVE-2024-47603 CVE-2024-47613 CVE-2024-47774 CVE-2024-47775 CVE-2024-47776 \
CVE-2024-47777 CVE-2024-47778 CVE-2024-47834 \
CVE-2024-47777 CVE-2024-47778 CVE-2024-47834 CVE-2025-47183 CVE-2025-47219 \
"
# not-applicable-platform: affects installation packages for non Linux OSes
CVE_CHECK_IGNORE += "CVE-2025-2759"
PTEST_BUILD_HOST_FILES = ""

View File

@@ -0,0 +1,74 @@
From 0ac97aa7a5bffddd88f7cdbe517264e9db3f5bd5 Mon Sep 17 00:00:00 2001
From: Lee Howard <faxguy@howardsilvan.com>
Date: Fri, 5 Sep 2025 21:42:35 +0000
Subject: [PATCH] tiffcrop: fix double-free and memory leak exposed by issue
#721
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/0ac97aa7a5bffddd88f7cdbe517264e9db3f5bd5]
CVE: CVE-2025-8961
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
tools/tiffcrop.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
index e16bc2d..c7d2553 100644
--- a/tools/tiffcrop.c
+++ b/tools/tiffcrop.c
@@ -929,6 +929,7 @@ static int readContigTilesIntoBuffer (TIFF* in, uint8_t* buf,
TIFFError("readContigTilesIntoBuffer",
"Unable to extract row %"PRIu32" from tile %"PRIu32,
row, TIFFCurrentTile(in));
+ _TIFFfree(tilebuf);
return 1;
}
break;
@@ -943,6 +944,7 @@ static int readContigTilesIntoBuffer (TIFF* in, uint8_t* buf,
TIFFError("readContigTilesIntoBuffer",
"Unable to extract row %"PRIu32" from tile %"PRIu32,
row, TIFFCurrentTile(in));
+ _TIFFfree(tilebuf);
return 1;
}
break;
@@ -957,6 +959,7 @@ static int readContigTilesIntoBuffer (TIFF* in, uint8_t* buf,
TIFFError("readContigTilesIntoBuffer",
"Unable to extract row %"PRIu32" from tile %"PRIu32,
row, TIFFCurrentTile(in));
+ _TIFFfree(tilebuf);
return 1;
}
break;
@@ -969,6 +972,7 @@ static int readContigTilesIntoBuffer (TIFF* in, uint8_t* buf,
TIFFError("readContigTilesIntoBuffer",
"Unable to extract row %"PRIu32" from tile %"PRIu32,
row, TIFFCurrentTile(in));
+ _TIFFfree(tilebuf);
return 1;
}
break;
@@ -983,10 +987,12 @@ static int readContigTilesIntoBuffer (TIFF* in, uint8_t* buf,
TIFFError("readContigTilesIntoBuffer",
"Unable to extract row %"PRIu32" from tile %"PRIu32,
row, TIFFCurrentTile(in));
+ _TIFFfree(tilebuf);
return 1;
}
break;
default: TIFFError("readContigTilesIntoBuffer", "Unsupported bit depth %"PRIu16, bps);
+ _TIFFfree(tilebuf);
return 1;
}
}
@@ -2535,7 +2541,7 @@ main(int argc, char* argv[])
}
/* If we did not use the read buffer as the crop buffer */
- if (read_buff)
+ if (read_buff && read_buff != crop_buff)
_TIFFfree(read_buff);
if (crop_buff)
--
2.25.1

View File

@@ -0,0 +1,32 @@
From ed141286a37f6e5ddafb5069347ff5d587e7a4e0 Mon Sep 17 00:00:00 2001
From: Su_Laus <sulau@freenet.de>
Date: Fri, 8 Aug 2025 21:35:30 +0200
Subject: [PATCH] tiffcmp: fix memory leak when second file cannot be opened.
Closes #728, #729
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/ed141286a37f6e5ddafb5069347ff5d587e7a4e0]
CVE: CVE-2025-9165
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
tools/tiffcmp.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/tiffcmp.c b/tools/tiffcmp.c
index 2a35fe6..f812c7d 100644
--- a/tools/tiffcmp.c
+++ b/tools/tiffcmp.c
@@ -103,7 +103,10 @@ main(int argc, char* argv[])
return (2);
tif2 = TIFFOpen(argv[optind+1], "r");
if (tif2 == NULL)
+ {
+ TIFFClose(tif1);
return (2);
+ }
dirnum = 0;
while (tiffcmp(tif1, tif2)) {
if (!TIFFReadDirectory(tif1)) {
--
2.25.1

View File

@@ -0,0 +1,57 @@
From 3e0dcf0ec651638b2bd849b2e6f3124b36890d99 Mon Sep 17 00:00:00 2001
From: Su Laus <sulau@freenet.de>
Date: Wed, 11 Jun 2025 19:45:19 +0000
Subject: [PATCH] tif_getimage.c: Fix buffer underflow crash for less raster
rows at TIFFReadRGBAImageOriented()
CVE: CVE-2025-9900
Upstream-Status: Backport [https://gitlab.com/libtiff/libtiff/-/commit/3e0dcf0ec651638b2bd849b2e6f3124b36890d99]
Changes-
- Use old API TIFFWarningExt instead of TIFFWarningExtR.
Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
---
libtiff/tif_getimage.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
index a9cd48f..4c807ad 100644
--- a/libtiff/tif_getimage.c
+++ b/libtiff/tif_getimage.c
@@ -509,6 +509,22 @@ TIFFRGBAImageGet(TIFFRGBAImage* img, uint32_t* raster, uint32_t w, uint32_t h)
"No \"put\" routine setupl; probably can not handle image format");
return (0);
}
+ /* Verify raster width and height against image width and height. */
+ if (h > img->height)
+ {
+ /* Adapt parameters to read only available lines and put image at
+ * the bottom of the raster. */
+ raster += (size_t)(h - img->height) * w;
+ h = img->height;
+ }
+ if (w > img->width)
+ {
+ TIFFWarningExt(img->tif, TIFFFileName(img->tif),
+ "Raster width of %d shall not be larger than image "
+ "width of %d -> raster width adapted for reading",
+ w, img->width);
+ w = img->width;
+ }
return (*img->get)(img, raster, w, h);
}
@@ -527,9 +543,7 @@ TIFFReadRGBAImageOriented(TIFF* tif,
if (TIFFRGBAImageOK(tif, emsg) && TIFFRGBAImageBegin(&img, tif, stop, emsg)) {
img.req_orientation = (uint16_t)orientation;
- /* XXX verify rwidth and rheight against width and height */
- ok = TIFFRGBAImageGet(&img, raster+(rheight-img.height)*rwidth,
- rwidth, img.height);
+ ok = TIFFRGBAImageGet(&img, raster, rwidth, rheight);
TIFFRGBAImageEnd(&img);
} else {
TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
--
2.40.0

View File

@@ -62,6 +62,9 @@ SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
file://CVE-2024-13978.patch \
file://CVE-2025-8534.patch \
file://CVE-2025-8851.patch \
file://CVE-2025-9900.patch \
file://CVE-2025-8961.patch \
file://CVE-2025-9165.patch \
"
SRC_URI[sha256sum] = "0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8"

View File

@@ -281,3 +281,6 @@ RDEPENDS:pulseaudio-server += "\
RDEPENDS:pulseaudio-server += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', \
bb.utils.contains('DISTRO_FEATURES', 'systemd', 'pulseaudio-module-systemd-login', 'pulseaudio-module-console-kit', d), \
'', d)}"
# not-applicable-platform: specific to Ubuntu 16.04
CVE_CHECK_IGNORE += "CVE-2024-11586"

View File

@@ -0,0 +1,55 @@
From c6ae07c6a541e0e96d0040afb62b45dd37711300 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Mon, 11 Aug 2025 20:23:05 +0200
Subject: [PATCH] cookie: don't treat the leading slash as trailing
If there is only a leading slash in the path, keep that. Also add an
assert to make sure the path is never blank.
Reported-by: Google Big Sleep
Closes #18266
CVE: CVE-2025-9086
Upstream-Status: Backport [https://github.com/curl/curl/commit/c6ae07c6a541e0e96d0040afb6]
Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
---
lib/cookie.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/lib/cookie.c b/lib/cookie.c
index e287458..ac7d3de 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -312,7 +312,7 @@ static char *sanitize_cookie_path(const char *cookie_path)
}
/* convert /hoge/ to /hoge */
- if(len && new_path[len - 1] == '/') {
+ if(len > 1 && new_path[len - 1] == '/') {
new_path[len - 1] = 0x0;
}
@@ -1078,7 +1078,7 @@ Curl_cookie_add(struct Curl_easy *data,
if(clist->spath && co->spath) {
if(clist->secure && !co->secure && !secure) {
size_t cllen;
- const char *sep;
+ const char *sep = NULL;
/*
* A non-secure cookie may not overlay an existing secure cookie.
@@ -1087,8 +1087,9 @@ Curl_cookie_add(struct Curl_easy *data,
* "/loginhelper" is ok.
*/
- sep = strchr(clist->spath + 1, '/');
-
+ DEBUGASSERT(clist->spath[0]);
+ if(clist->spath[0])
+ sep = strchr(clist->spath + 1, '/');
if(sep)
cllen = sep - clist->spath;
else
--
2.40.0

View File

@@ -66,6 +66,7 @@ SRC_URI = "https://curl.se/download/${BP}.tar.xz \
file://CVE-2024-11053-0001.patch \
file://CVE-2024-11053-0002.patch \
file://CVE-2025-0167.patch \
file://CVE-2025-9086.patch \
"
SRC_URI[sha256sum] = "0aaa12d7bd04b0966254f2703ce80dd5c38dbbd76af0297d3d690cdce58a583c"

View File

@@ -0,0 +1,105 @@
From 345d6826d0eae6f0a962456b8ed6f6a1bad0877d Mon Sep 17 00:00:00 2001
From: David Kilzer <ddkilzer@apple.com>
Date: Sat, 24 May 2025 15:06:42 -0700
Subject: [PATCH] libxslt: Type confusion in xmlNode.psvi between stylesheet
and source nodes
* libxslt/functions.c:
(xsltDocumentFunctionLoadDocument):
- Implement fix suggested by Ivan Fratric. This copies the xmlDoc,
calls xsltCleanupSourceDoc() to remove pvsi fields, then adds the
xmlDoc to tctxt->docList.
- Add error handling for functions that may return NULL.
* libxslt/transform.c:
- Remove static keyword so this can be called from
xsltDocumentFunctionLoadDocument().
* libxslt/transformInternals.h: Add.
(xsltCleanupSourceDoc): Add declaration.
Fixes #139.
Origin: https://gitlab.gnome.org/-/project/1762/uploads/627ae84cb0643d9adf6e5c86947f6be6/gnome-libxslt-bug-139-apple-fix.diff
Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libxslt/-/issues/139]
CVE: CVE-2025-7424
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
libxslt/functions.c | 16 +++++++++++++++-
libxslt/transform.c | 3 ++-
libxslt/transformInternals.h | 9 +++++++++
3 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 libxslt/transformInternals.h
diff --git a/libxslt/functions.c b/libxslt/functions.c
index da25c24..8a9bdc2 100644
--- a/libxslt/functions.c
+++ b/libxslt/functions.c
@@ -41,6 +41,7 @@
#include "numbersInternals.h"
#include "keys.h"
#include "documents.h"
+#include "transformInternals.h"
#ifdef WITH_XSLT_DEBUG
#define WITH_XSLT_DEBUG_FUNCTION
@@ -152,7 +153,20 @@ xsltDocumentFunctionLoadDocument(xmlXPathParserContextPtr ctxt, xmlChar* URI)
/*
* This selects the stylesheet's doc itself.
*/
- doc = tctxt->style->doc;
+ doc = xmlCopyDoc(tctxt->style->doc, 1);
+ if (doc == NULL) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "document() : failed to copy style doc\n");
+ goto out_fragment;
+ }
+ xsltCleanupSourceDoc(doc); /* Remove psvi fields. */
+ idoc = xsltNewDocument(tctxt, doc);
+ if (idoc == NULL) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "document() : failed to create xsltDocument\n");
+ xmlFreeDoc(doc);
+ goto out_fragment;
+ }
} else {
valuePush(ctxt, xmlXPathNewNodeSet(NULL));
diff --git a/libxslt/transform.c b/libxslt/transform.c
index 7299eb5..6976a04 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -42,6 +42,7 @@
#include "xsltutils.h"
#include "pattern.h"
#include "transform.h"
+#include "transformInternals.h"
#include "variables.h"
#include "numbersInternals.h"
#include "namespaces.h"
@@ -5753,7 +5754,7 @@ xsltCountKeys(xsltTransformContextPtr ctxt)
*
* Resets source node flags and ids stored in 'psvi' member.
*/
-static void
+void
xsltCleanupSourceDoc(xmlDocPtr doc) {
xmlNodePtr cur = (xmlNodePtr) doc;
void **psviPtr;
diff --git a/libxslt/transformInternals.h b/libxslt/transformInternals.h
new file mode 100644
index 0000000..d0f4282
--- /dev/null
+++ b/libxslt/transformInternals.h
@@ -0,0 +1,9 @@
+/*
+ * Summary: set of internal interfaces for the XSLT engine transformation part.
+ *
+ * Copy: See Copyright for the status of this software.
+ *
+ * Author: David Kilzer <ddkilzer@apple.com>
+ */
+
+void xsltCleanupSourceDoc(xmlDocPtr doc);
--
2.25.1

View File

@@ -21,6 +21,7 @@ SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz \
file://CVE-2023-40403-003.patch \
file://CVE-2023-40403-004.patch \
file://CVE-2023-40403-005.patch \
file://CVE-2025-7424.patch \
"
SRC_URI[sha256sum] = "8247f33e9a872c6ac859aa45018bc4c4d00b97e2feac9eebc10c93ce1f34dd79"

View File

@@ -0,0 +1,69 @@
From f64efec011c058bd70348576438abac222fe6c82 Mon Sep 17 00:00:00 2001
From: louislafosse <louis.lafosse@epitech.eu>
Date: Mon, 31 Mar 2025 20:48:52 +0200
Subject: [PATCH] fix(null) : improve error handlings when passing a null
pointer to some functions from lz4frame
CVE: CVE-2025-62813
Upstream-Status: Backport [https://github.com/lz4/lz4/commit/f64efec011c058bd70348576438abac222fe6c82]
Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
lib/lz4frame.c | 15 +++++++++++++--
tests/frametest.c | 9 ++++++---
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/lib/lz4frame.c b/lib/lz4frame.c
index 85daca7b..c9e4a3cf 100644
--- a/lib/lz4frame.c
+++ b/lib/lz4frame.c
@@ -530,9 +530,16 @@ LZ4F_CDict*
LZ4F_createCDict_advanced(LZ4F_CustomMem cmem, const void* dictBuffer, size_t dictSize)
{
const char* dictStart = (const char*)dictBuffer;
- LZ4F_CDict* const cdict = (LZ4F_CDict*)LZ4F_malloc(sizeof(*cdict), cmem);
+ LZ4F_CDict* cdict = NULL;
+
DEBUGLOG(4, "LZ4F_createCDict_advanced");
- if (!cdict) return NULL;
+
+ if (!dictStart)
+ return NULL;
+ cdict = (LZ4F_CDict*)LZ4F_malloc(sizeof(*cdict), cmem);
+ if (!cdict)
+ return NULL;
+
cdict->cmem = cmem;
if (dictSize > 64 KB) {
dictStart += dictSize - 64 KB;
@@ -1429,6 +1436,10 @@ LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_dctx* dctx,
LZ4F_frameInfo_t* frameInfoPtr,
const void* srcBuffer, size_t* srcSizePtr)
{
+ assert(dctx != NULL);
+ RETURN_ERROR_IF(frameInfoPtr == NULL, parameter_null);
+ RETURN_ERROR_IF(srcSizePtr == NULL, parameter_null);
+
LZ4F_STATIC_ASSERT(dstage_getFrameHeader < dstage_storeFrameHeader);
if (dctx->dStage > dstage_storeFrameHeader) {
/* frameInfo already decoded */
diff --git a/tests/frametest.c b/tests/frametest.c
index de0fe643..90247547 100644
--- a/tests/frametest.c
+++ b/tests/frametest.c
@@ -589,10 +589,13 @@ int basicTests(U32 seed, double compressibility)
size_t const srcSize = 65 KB; /* must be > 64 KB to avoid short-size optimizations */
size_t const dstCapacity = LZ4F_compressFrameBound(srcSize, NULL);
size_t cSizeNoDict, cSizeWithDict;
- LZ4F_CDict* const cdict = LZ4F_createCDict(CNBuffer, dictSize);
- if (cdict == NULL) goto _output_error;
- CHECK( LZ4F_createCompressionContext(&cctx, LZ4F_VERSION) );
+ LZ4F_CDict* cdict = NULL;
+ CHECK( LZ4F_createCompressionContext(&cctx, LZ4F_VERSION) );
+ cdict = LZ4F_createCDict(CNBuffer, dictSize);
+ if (cdict == NULL)
+ goto _output_error;
+
DISPLAYLEVEL(3, "Testing LZ4F_createCDict_advanced : ");
{ LZ4F_CDict* const cda = LZ4F_createCDict_advanced(lz4f_cmem_test, CNBuffer, dictSize);
if (cda == NULL) goto _output_error;

View File

@@ -12,7 +12,9 @@ PE = "1"
SRCREV = "5ff839680134437dbf4678f3d0c7b371d84f4964"
SRC_URI = "git://github.com/lz4/lz4.git;branch=release;protocol=https"
SRC_URI = "git://github.com/lz4/lz4.git;branch=release;protocol=https \
file://CVE-2025-62813.patch \
"
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
S = "${WORKDIR}/git"

View File

@@ -18,6 +18,7 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native"
PACKAGECONFIG[trust-paths] = "-Dtrust_paths=/etc/ssl/certs/ca-certificates.crt,,,ca-certificates"
EXTRA_OEMESON:append = " -Dnls=${@'false' if d.getVar('USE_NLS') == 'no' else 'true'}"
GTKDOC_MESON_OPTION = 'gtk_doc'
FILES:${PN} += " \

View File

@@ -18,8 +18,8 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://no-path-adjust.patch \
"
PV .= ".1652"
SRCREV = "3e152c76adb9542af86760786d42a0beffe5354b"
PV .= ".1683"
SRCREV = "b922b30cfe4c044c83bac3cc908084ed20a83598"
# Do not consider .z in x.y.z, as that is updated with every commit
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"

View File

@@ -57,8 +57,8 @@ logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
DEFAULT_INSTALL_DIR = os.path.join(os.path.split(scripts_path)[0],'buildtools')
DEFAULT_BASE_URL = 'https://downloads.yoctoproject.org/releases/yocto'
DEFAULT_RELEASE = 'yocto-4.0.28'
DEFAULT_INSTALLER_VERSION = '4.0.28'
DEFAULT_RELEASE = 'yocto-4.0.30'
DEFAULT_INSTALLER_VERSION = '4.0.30'
DEFAULT_BUILDDATE = '202110XX'
# Python version sanity check