Compare commits

..

58 Commits

Author SHA1 Message Date
Richard Purdie
bba3233897 build-appliance-image: Update to dunfell head revision
(From OE-Core rev: f3be01483b01c88f8c4ba24ca73ccf1bcc33665c)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-27 16:16:11 +00:00
Steve Sakoman
d752cbcbbe poky.conf: Bump version for 3.1.14 release
(From meta-yocto rev: 8124e73de7fd319d96cdb6f556d6b1943fbe41e3)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-27 16:16:04 +00:00
Jate Sujjavanich
2bfe7e096d bitbake: hashserv: specify loop for asyncio in python < 3.6
[YOCTO #14697]

Detect python version 3.5 restoring loop argument where
it is still required. In 3.6 auto loop detection is available.

Bitbake 1.46 is used in dunfell which lists a minimum python version
of 3.5. Omitting this argument leads to a regression and hang during
"Initialising tasks" at 44%.

(Bitbake rev: be6ecc160ac4a8d9715257b9b955363cecc081ea)

Signed-off-by: Jate Sujjavanich <jatedev@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:23:15 +00:00
Marek Vasut
e256885889 Revert "weston: Use systemd notify,"
Commit 4efdcc1090 ("weston: Use systemd notify,") has non-trivial to
backport dependencies without which it cannot work, revert backport.

In oe-core dunfell, weston is still started using /usr/bin/weston-start
script in meta/recipes-graphics/wayland/weston-init/weston@.service .
Since 76ed534267 ("weston-init: Use weston-launch when starting weston
as the first windowing system"), the weston-start script starts weston
using weston-launch executable in case $DISPLAY is not set, i.e. when
weston is started as the primary compositor.

When weston is started via weston-launch, the notification to systemd
is not delivered, and weston service fails to start with the following:
"
weston@root.service: start operation timed out. Terminating.
"

The weston systemd service has been reworked considerably since oe-core
dunfell in commit c21fa5a291 ("weston-init: Redefine weston service and
add socket activation option"), which replaced the use of weston-start
in weston@.service with plain weston, and has been further improved in
commit dd83fb40f7 ("weston-init: Stop running weston as root") . The
commit reverted here, oe-core/master commit c8aa0222ce ("weston: wrapper
for weston modules argument"), landed only with the two aforementioned
reworks already in place, therefore the commit could have never been
tested with weston started via weston-launch executable and the timeout
at delivering systemd notification could not have happened in master.

Both c21fa5a291 ("weston-init: Redefine weston service and add socket
activation option") and dd83fb40f7 ("weston-init: Stop running weston
as root") are large feature patches and thus unsuitable for stable
backports, hence this revert seems to be the least problematic way.

(From OE-Core rev: dabd41819563ec63fc5bd5fd0f4af64230e58130)

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Joshua Watt <JPEWhacker@gmail.com>
Cc: Pavel Zhukov <pavel.zhukov@huawei.com>
Cc: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Richard Purdie
c72a9d0a6d lttng-tools: Add missing DEPENDS on bison-native
This was being provided by other pieces of the dependency chain but is
specifically required by configure and could fail if those pieces come
from sstate. Fix such builds by adding the missing dependency.

(From OE-Core rev: 32dd9e93c8a49c07d28c8bf240145c9e48864de7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ba2587beb2a3fb0ef9139f846e161542d2c5c4ae)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Bruce Ashfield
744c593c3d kernel: introduce python3-dtschema-wrapper
The 5.16 kernel introduced mandatory schema checking on any dtb file
built through the kernel.

That funcionality is provided via python3-dt-schema.

The dependencies to enable that functionality is not small, and may
not always be desired (in particular on architectures that do not
support dtbs, or in development cycles). It may also be useful for
allowing a non-conformant dts to be compiled.

This commit introduces a set of wrapper scripts that when added
as a depenency to the kernel, can pass both the validation testing
and validation steps of a dts.

(From OE-Core rev: 010477bc44a90b1f0dea82fbb824c9c9038edc80)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Backported from oe-core commit 2566563ad4.
Signed-off-by: Paul Barker <paul.barker@sancloud.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Bruce Ashfield
243f90cb86 linux-yocto/5.4: update to v5.4.172
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

    b7f70762d158 Linux 5.4.172
    f415409551b0 staging: greybus: fix stack size warning with UBSAN
    65c2e7176f77 drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk()
    86ded7a6cf40 staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn()
    a459686f986c media: Revert "media: uvcvideo: Set unique vdev name based in type"
    7e07bedae159 random: fix crash on multiple early calls to add_bootloader_randomness()
    517ab153f503 random: fix data race on crng init time
    90ceecdaa062 random: fix data race on crng_node_pool
    a4fa4377c91b can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved}
    e90a7524b5c8 can: gs_usb: fix use of uninitialized variable, detach device on reception of invalid USB data
    9e9241d3345a drivers core: Use sysfs_emit and sysfs_emit_at for show(device *...) functions
    ada3805f1423 mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
    d08a0a88db88 veth: Do not record rx queue hint in veth_xmit
    a6722b497401 mmc: sdhci-pci: Add PCI ID for Intel ADL
    1199f0928488 USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status
    43aac50196f3 USB: core: Fix bug in resuming hub's handling of wakeup requests
    ed5c2683b67b Bluetooth: bfusb: fix division by zero in send path
    784e873af3dc Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb()
    ad07b60837b2 workqueue: Fix unbind_workers() VS wq_worker_running() race

(From OE-Core rev: 78d418fca20f997141d06d9c53194ec4e675860d)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Bruce Ashfield
ab23ceac12 linux-yocto/5.4: update to v5.4.171
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

    0a4ce4977bbe Linux 5.4.171
    0101f118529d mISDN: change function names to avoid conflicts
    34821931e18e atlantic: Fix buff_ring OOB in aq_ring_rx_clean
    44065cc11797 net: udp: fix alignment problem in udp4_seq_show()
    0ad45baead37 ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate
    8b36aa5af4da scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown()
    6a3ffcc9ffd0 usb: mtu3: fix interval value for intr and isoc
    f0e57098243c ipv6: Do cleanup if attribute validation fails in multipath route
    c94999cfbbbe ipv6: Continue processing multipath route even if gateway attribute is invalid
    2a6a811a45fd phonet: refcount leak in pep_sock_accep
    db0c834abbc1 rndis_host: support Hytera digital radios
    72eb522ae6f1 power: reset: ltc2952: Fix use of floating point literals
    159eaafee69b power: supply: core: Break capacity loop
    102af6edfd3a xfs: map unwritten blocks in XFS_IOC_{ALLOC,FREE}SP just like fallocate
    10f2c336929d net: phy: micrel: set soft_reset callback to genphy_soft_reset for KSZ8081
    c0db2e1e60c6 sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc
    bcbfc7780047 batman-adv: mcast: don't send link-local multicast to mcast routers
    76936ddb4913 lwtunnel: Validate RTA_ENCAP_TYPE attribute length
    2ebd777513d9 ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route
    a02d2be7eb48 ipv6: Check attribute length for RTA_GATEWAY in multipath route
    34224e936a9d ipv4: Check attribute length for RTA_FLOW in multipath route
    125d91f07233 ipv4: Check attribute length for RTA_GATEWAY in multipath route
    1f46721836ee i40e: Fix incorrect netdev's real number of RX/TX queues
    f98acd3b4dcf i40e: Fix for displaying message regarding NVM version
    c340d45148c4 i40e: fix use-after-free in i40e_sync_filters_subtask()
    38fbb1561d66 mac80211: initialize variable have_higher_than_11mbit
    7646a340b25b RDMA/uverbs: Check for null return of kmalloc_array
    5eb5d9c6591d RDMA/core: Don't infoleak GRH fields
    415fc3f59595 iavf: Fix limit of total number of queues to active queues of VF
    23ebe9cfda5e ieee802154: atusb: fix uninit value in atusb_set_extended_addr
    aa171d748a36 tracing: Tag trace_percpu_buffer as a percpu pointer
    db50ad6eec87 tracing: Fix check for trace_percpu_buffer validity in get_trace_buf()
    cbbed1338d76 selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv()
    6904679c8400 Input: touchscreen - Fix backport of a02dcde595f7cbd240ccd64de96034ad91cffc40
    6e80d2ee44c6 f2fs: quota: fix potential deadlock

(From OE-Core rev: 69453657a67e356f31e998ca539d24d2ad86ddb9)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Bruce Ashfield
dadebc61f4 linux-yocto/5.4: update to v5.4.170
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

047dedaa38ce Linux 5.4.170
2c3920c58e03 perf script: Fix CPU filtering of a script's switch events
fe5838c22b98 net: fix use-after-free in tw_timer_handler
46556c4ecd63 Input: spaceball - fix parsing of movement data packets
975774ea7528 Input: appletouch - initialize work before device registration
436f6d0005d6 scsi: vmw_pvscsi: Set residual data length conditionally
103b16a8c51f binder: fix async_free_space accounting for empty parcels
98cde4dd5ec8 usb: mtu3: set interval of FS intr and isoc endpoint
585e2b244dda usb: mtu3: fix list_head check warning
50434eb6098f usb: mtu3: add memory barrier before set GPD's HWO
240fc586e83d usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear.
20d80640fa61 xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set.
b364fcef9615 uapi: fix linux/nfc.h userspace compilation errors
245c5e43cd25 nfc: uapi: use kernel size_t to fix user-space builds
9e4a3f47eff4 i2c: validate user data in compat ioctl
a7d3a1c6d9d9 fsl/fman: Fix missing put_device() call in fman_port_probe
2dc95e936414 net/ncsi: check for error return from call to nla_put_u32
ef01d63140f5 selftests/net: udpgso_bench_tx: fix dst ip argument
20f6896787c5 net/mlx5e: Fix wrong features assignment in case of error
b85f87d30dba ionic: Initialize the 'lif->dbid_inuse' bitmap
1cd4063dbc91 NFC: st21nfca: Fix memory leak in device probe and remove
44cd64aa1c43 net: lantiq_xrx200: fix statistics of received bytes
3477f4b67ee4 net: usb: pegasus: Do not drop long Ethernet frames
831de271452b sctp: use call_rcu to free endpoint
3218d6bd6195 selftests: Calculate udpgso segment count without header adjustment
0a2e9f6a8f33 udp: using datalen to cap ipv6 udp max gso segments
db484d35a948 net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources
cc926b8f4d39 scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write()
44937652afdb selinux: initialize proto variable in selinux_ip_postroute_compat()
b536e357e73c recordmcount.pl: fix typo in s390 mcount regex
8d86b486e0de memblock: fix memblock_phys_alloc() section mismatch error
4606bfdaeb16 platform/x86: apple-gmux: use resource_size() with res
930d4986a432 tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok().
7978ddae240b Input: i8042 - enable deferred probe quirk for ASUS UM325UA
f93d5dca7d84 Input: i8042 - add deferred probe support
940e68e57ab6 tee: handle lookup of shm with reference count 0
4b38b12092b4 HID: asus: Add depends on USB_HID to HID_ASUS Kconfig option

(From OE-Core rev: 411adf3dbe122b42acc7810bc3034874fc36f473)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Bruce Ashfield
f439e82404 linux-yocto/5.4: update to v5.4.169
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

4ca2eaf1d477 Linux 5.4.169
48c76fc53582 phonet/pep: refuse to enable an unbound pipe
a5c6a13e9056 hamradio: improve the incomplete fix to avoid NPD
ef5f7bfa19e3 hamradio: defer ax25 kfree after unregister_netdev
df8f79bcc2e4 ax25: NPD bug when detaching AX25 device
0333eaf38500 hwmon: (lm90) Do not report 'busy' status bit as alarm
bf260ff4a42f hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681
f373298e1bf0 pinctrl: mediatek: fix global-out-of-bounds issue
bf04afb6137f mm: mempolicy: fix THP allocations escaping mempolicy restrictions
f5db6bc93494 KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state
06c13e039d92 usb: gadget: u_ether: fix race in setting MAC address in setup phase
b0406b5ef4e2 f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr()
806142c805ca tee: optee: Fix incorrect page free bug
5478b90270a3 ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
1c3d4122bec6 mmc: core: Disable card detect during shutdown
e9db8fc6c7af mmc: sdhci-tegra: Fix switch to HS400ES mode
d9031ce0b071 pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines
c7b2e5850ba6 x86/pkey: Fix undefined behaviour with PKRU_WD_BIT
ddc1d49e10a7 parisc: Correct completer in lws start
8467c8cb94a4 ipmi: fix initialization when workqueue allocation fails
8efd6a3391f7 ipmi: ssif: initialize ssif_info->client early
cd24bafefc17 ipmi: bail out if init_srcu_struct fails
5525d80dc9dd Input: atmel_mxt_ts - fix double free in mxt_read_info_block
737a98d91b07 ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6
8df036befbc3 ALSA: drivers: opl3: Fix incorrect use of vp->state
fdaf41977d77 ALSA: jack: Check the return value of kstrdup()
44c743f63dd3 hwmon: (lm90) Drop critical attribute support for MAX6654
4615c9740575 hwmon: (lm90) Introduce flag indicating extended temperature support
c2242478f28d hwmon: (lm90) Add basic support for TI TMP461
d939660eff62 hwmon: (lm90) Add max6654 support to lm90 driver
055ca98d48ba hwmon: (lm90) Fix usage of CONFIG2 register in detect function
a7f95328c6f0 Input: elantech - fix stack out of bound access in elantech_change_report_id()
e12dcd4aa7f4 sfc: falcon: Check null pointer of rx_queue->page_ring
c11a41e26985 drivers: net: smc911x: Check for error irq
5d556b1437e1 fjes: Check for error irq
d7024080db82 bonding: fix ad_actor_system option setting to default
992649b8b168 ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module
2460d96c19a8 net: skip virtio_net_hdr_set_proto if protocol already set
621d5536b452 net: accept UFOv6 packages in virtio_net_hdr_to_skb
0b01c51c4f47 qlcnic: potential dereference null pointer of rx_queue->page_ring
685fc8d22489 netfilter: fix regression in looped (broad|multi)cast's MAC handling
79dcbd817615 IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
78874bca4f27 spi: change clk_disable_unprepare to clk_unprepare
0c0ac2547c87 arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode
6fa4e2992717 HID: holtek: fix mouse probing
2712816c10b3 serial: 8250_fintek: Fix garbled text for console
51c925a9bccc net: usb: lan78xx: add Allied Telesis AT29M2-AF
8f843cf57202 Linux 5.4.168
0d99b3c6bd39 xen/netback: don't queue unlimited number of packages
8bfcd0385211 xen/netback: fix rx queue stall detection
560e64413b4a xen/console: harden hvc_xen against event channel storms
3e68d099f09c xen/netfront: harden netfront against event channel storms
4ed9f5c511ce xen/blkfront: harden blkfront against event channel storms
192fe5739571 Revert "xsk: Do not sleep in poll() when need_wakeup set"
e281b7199236 net: sched: Fix suspicious RCU usage while accessing tcf_tunnel_info
96a1550a2b43 mac80211: fix regression in SSN handling of addba tx
66aba15a144a rcu: Mark accesses to rcu_state.n_force_qs
b847ecff8507 scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select()
f9f300a92297 ovl: fix warning in ovl_create_real()
ba2a9d8f8ef1 fuse: annotate lock in fuse_reverse_inval_entry()
96f182c9f48b media: mxl111sf: change mutex_init() location
095ad3969b62 xsk: Do not sleep in poll() when need_wakeup set
29e9fdf7b681 ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name
f6e9e7be9b80 Input: touchscreen - avoid bitwise vs logical OR warning
3d45573dfb6e mwifiex: Remove unnecessary braces from HostCmd_SET_SEQ_NO_BSS_INFO
a19cf6844b50 mac80211: validate extended element ID is present
e070c0c990d7 drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE
c9ee8144e409 libata: if T_LENGTH is zero, dma direction should be DMA_NONE
62889094939c timekeeping: Really make sure wall_to_monotonic isn't positive
241d36219aaa USB: serial: option: add Telit FN990 compositions
d2bb4378e2bb USB: serial: cp210x: fix CP2105 GPIO registration
bae7f0808202 usb: xhci: Extend support for runtime power management for AMD's Yellow carp.
3dc6b5f2a4d5 PCI/MSI: Mask MSI-X vectors only on success
c520e7cf82ac PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error
ed31692a9758 USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04)
aae3448b78d9 USB: gadget: bRequestType is a bitfield, not a enum
ad0ed314d616 sit: do not call ipip6_dev_free() from sit_init_net()
c675256a7f13 net: systemport: Add global locking for descriptor lifecycle
2bf888fa4a5c net/smc: Prevent smc_release() from long blocking
56a6ffea18c2 net: Fix double 0x prefix print in SKB dump
027a13973dad net/packet: rx_owner_map depends on pg_vec
699e794c12a3 netdevsim: Zero-initialize memory for new map's value in function nsim_bpf_map_alloc
a97e7dd4b713 ixgbe: set X550 MDIO speed before talking to PHY
8addba6cab94 igbvf: fix double free in `igbvf_probe`
36844e250a2e igb: Fix removal of unicast MAC filters of VFs
bca4a53ea72c soc/tegra: fuse: Fix bitwise vs. logical OR warning
166f0adf7e75 rds: memory leak in __rds_conn_create()
9cb405ee5334 flow_offload: return EOPNOTSUPP for the unsupported mpls action type
066a637d1ce7 net: sched: lock action when translating it to flow_action infra
e7660f9535ad mac80211: fix lookup when adding AddBA extension element
f363af7c7045 mac80211: accept aggregation sessions on 6 GHz
1e6526148149 mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock
ceb30f48d817 mac80211: agg-tx: refactor sending addba
eeaf9c0609e0 selftest/net/forwarding: declare NETIFS p9 p10
2252220d9ebb dmaengine: st_fdma: fix MODULE_ALIAS
18203fe17643 selftests: Fix IPv6 address bind tests
b46f0afa74e7 selftests: Fix raw socket bind tests with VRF
7b5596e53125 inet_diag: fix kernel-infoleak for UDP sockets
2c589cf07bd5 inet_diag: use jiffies_delta_to_msecs()
0d80462fbdca sch_cake: do not call cake_destroy() from cake_init()
2fba53ccfb1b s390/kexec_file: fix error handling when applying relocations
b380bf012d2b selftests: net: Correct ping6 expected rc from 2 to 1
ec5c00be7836 clk: Don't parent clks until the parent is fully registered
f83ed203c822 ARM: socfpga: dts: fix qspi node compatible
46b9e29db201 mac80211: track only QoS data frames for admission control
a6f18191c6c1 arm64: dts: rockchip: fix audio-supply for Rock Pi 4
86f2789e3c15 arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply
4bb01424330d arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas-edge
e0759696de68 nfsd: fix use-after-free due to delegation race
7243aa71509a iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda
0d3277eabd54 audit: improve robustness of the audit queue handling
501ecd90efdc dm btree remove: fix use after free in rebalance_children()
b25e213522f6 recordmcount.pl: look for jgnop instruction as well as bcrl on s390
c0954f1010ad virtio_ring: Fix querying of maximum DMA mapping size for virtio device
802a1a850156 firmware: arm_scpi: Fix string overflow in SCPI genpd driver
33f0dfab3187 mac80211: send ADDBA requests using the tid/queue of the aggregation session
873e664a83ef mac80211: mark TX-during-stop for TX in in_reconfig
ff3e3fdc737a KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE

(From OE-Core rev: 6d0630b930113c9d778874b2d77a567275085218)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Kai Kang
ce2db1116c speex: fix CVE-2020-23903
Backport patch to fix CVE-2020-23903.

CVE: CVE-2020-23903

(From OE-Core rev: 6afe9d7d0381b593c0b1e434c48008c7fa62750c)

Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b8f56e5e9eef32c1e01742f913e205d93548de1f)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Steve Sakoman
8c58e222ea expat: fix CVE-2021-46143
In doProlog in xmlparse.c in Expat (aka libexpat) before 2.4.3, an
integer overflow exists for m_groupSize.

Backport patch from:
85ae9a2d7d

CVE: CVE-2021-46143
(From OE-Core rev: 41a65d27e4ecdc11977e2944d8af2f51c48f32ec)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Steve Sakoman
b618e57f79 expat: fix CVE-2021-45960
In Expat (aka libexpat) before 2.4.3, a left shift by 29 (or more)
places in the storeAtts function in xmlparse.c can lead to realloc
misbehavior (e.g., allocating too few bytes, or only freeing memory).

Backport patch from:
0adcb34c49

CVE: CVE-2021-45960
(From OE-Core rev: 22fe1dea3164a5cd4d5636376f3671641ada1da9)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Steve Sakoman
95491a12ea expat fix CVE-2022-22822 through CVE-2022-22827
xmlparse.c has multiple integer overflows. The involved functions are:

- addBinding (CVE-2022-22822)
- build_model (CVE-2022-22823)
- defineAttribute (CVE-2022-22824)
- lookup (CVE-2022-22825)
- nextScaffoldPart (CVE-2022-22826)
- storeAtts (CVE-2022-22827)

Backport patch from:
9f93e8036e

CVE: CVE-2022-22822 CVE-2022-22823 CVE-2022-22824 CVE-2022-22825 CVE-2022-22826 CVE-2022-22827
(From OE-Core rev: 3b6c47c0ebae9fdb7a13480daf8f46a8dbb2c9bd)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-25 12:06:55 +00:00
Akash Hadke
6348d2d8a0 glibc: Add fix for data races in pthread_create and TLS access
Inconsistency detected by ld.so: dl-tls.c: 493: _dl_allocate_tls_init: Assertion `listp->slotinfo[cnt].gen <= _rtld_local._dl_tls_generation' failed!
caused by dlopen (in _dl_add_to_slotinfo and in dl_open_worker) doing
  listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
  //...
  if (any_tls && __builtin_expect (++GL(dl_tls_generation) == 0, 0))
while pthread_create (in _dl_allocate_tls_init) concurrently doing
  assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation));

Backported below patch that can fix the following bugs with a lock
that prevents DTV setup running concurrently with dlopen or dlclose.

Bug 19329: https://sourceware.org/bugzilla/show_bug.cgi?id=19329
Bug 27111: https://sourceware.org/bugzilla/show_bug.cgi?id=27111

Patch: 0031-elf-Fix-data-races-in-pthread_create-and-TLS-access-BZ-19329.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=1387ad6225c2222f027790e3f460e31aa5dd2c54

It requires a supporting patch
0030-elf-Refactor_dl_update-slotinfo-to-avoid-use-after-free.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=c0669ae1a629e16b536bf11cdd0865e0dbcf4bee

After adding the above fix there is a number of racy read accesses
to globals that will be changed to relaxed MO atomics in follow-up
patch given below.

This fixes the regressions and avoids cluttering the main part
of the fix.

0032-elf-Use-relaxed-atomics-for-racy-accesses-BZ-19329.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=f4f8f4d4e0f92488431b268c8cd9555730b9afe9

Backported the below patch to add the test to check the added fix.
0033-elf-Add-test-case-for-BZ-19329.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=9d0e30329c23b5ad736fda3f174208c25970dbce

Previously modids were never resused for a
different module, but after dlopen failure all gaps are reused
not just the ones caused by the unfinished dlopened.

The code has to handle reused modids already which seems to
work, however the data races at thread creation and tls access
(see bug 19329 and bug 27111) may be more severe if slots are
reused. Fixing the races are not simpler if reuse is disallowed
and reuse has other benefits so upstream added fix
https://sourceware.org/git/?p=glibc.git;a=commit;h=572bd547d57a39b6cf0ea072545dc4048921f4c3
for the following bug.

Bug 27135: https://sourceware.org/bugzilla/show_bug.cgi?id=27135

But in glibc upstream the commit 572bd547d57a was reverted as the
issue with 572bd547d57a patch was the DTV entry only updated on
dl_open_worker() with the update_tls_slotinfo() call after all
dependencies are being processed by _dl_map_object_deps(). However
_dl_map_object_deps() itself might call _dl_next_tls_modid(),
and since the _dl_tls_dtv_slotinfo_list::map was not yet set the
entry can be wrongly reused.

So added below patch to fix Bug 27135.
0034-elf-Fix-DTV-gap-reuse-logic-BZ-27135.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=ba33937be210da5d07f7f01709323743f66011ce

Not all TLS access related data races got fixed by adding
0031-elf-Fix-data-races-in-pthread_create-and-TLS-access-BZ-19329.patch,
there are additional races at lazy tlsdesc relocations.
Bug 27137: https://sourceware.org/bugzilla/show_bug.cgi?id=27137

Backported below patches to fix this issue.

0035-x86_64-Avoid-lazy-relocation-of-tlsdesc-BZ-27137.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=8f7e09f4dbdb5c815a18b8285fbc5d5d7bc17d86

0036-i386-Avoid-lazy-relocation-of-tlsdesc-BZ-27137.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=ddcacd91cc10ff92d6201eda87047d029c14158d

The fix 0031-elf-Fix-data-races-in-pthread_create-and-TLS-access-BZ-19329.patch
for bug 19329 caused a regression such that pthread_create can
deadlock when concurrent ctors from dlopen are waiting for it
to finish.
Bug 28357: https://sourceware.org/bugzilla/show_bug.cgi?id=28357

Backported below patch to fix this issue.
0037-Avoid-deadlock-between-pthread_create-and-ctors.patch
Link: https://sourceware.org/git/?p=glibc.git;a=patch;h=024a7640ab9ecea80e527f4e4d7f7a1868e952c5

(From OE-Core rev: 01f256bc72fb45c80b6a6c77506bc4c375965a3a)

Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Alexander Kanavin
7a4fa28642 parselogs: add a couple systemd false positives
New systemd has changed the phrasing when skipping things,
with unfortunate use of 'failed':

[    1.623667] systemd[1]: Journal Audit Socket was skipped because of a failed condition check (ConditionSecurity=audit).
[    1.688258] systemd[1]: Load Kernel Modules was skipped because all trigger condition checks failed.

(From OE-Core rev: da0d96eefd5d7e784b24cad0e41b9df05443034d)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 743d09665a4ef743b1fa9ac382a713556dfce1a1)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Ross Burton
1e4665204b xserver-xorg: whitelist two CVEs
CVE-2011-4613 is specific to Debian/Ubuntu.

CVE-2020-25697 is a non-trivial attack that may not actually be feasible
considering the default behaviour for clients is to exit if the
connection is lost.

(From OE-Core rev: c477e35d01e7b8443b680f6456ac92a15fbfeaa2)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit afa2e6c31a79f75ff4113d53f618bbb349cd6c17)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Richard Purdie
07755db699 expat: Update HOMEPAGE to current url
Upstream pointed out we were using an old url for HOMEPAGE. Update it to the
current url.

(From OE-Core rev: 022750aaa128189f23063b741bf8396a527713d7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f3a7e2ba247efe72154c263d1d680aaf3da5b609)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Mingli Yu
e1f86e7761 wic: use shutil.which
Use shutil.which to find the executable instead to silence the below warning:
 $ cat tmp/work/intel_x86_64-poky-linux/core-image-base/1.0-r5/temp/log.do_image_wic
 [snip]
 DEBUG: Executing shell function do_image_wic
 /path/layers/oe-core/scripts/wic:27: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
  from distutils import spawn
 INFO: Creating image(s)...
 [snip]

[RP: Added conversion for missed function reference]
(From OE-Core rev: 488815681466d5e4c7640df5281fa6e1f9b4c75e)

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 3966cbf5c8a2dbc3a4f0f3eefdbeeb83f522bf87)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Ricardo Ribalda Delgado
2be5df9182 wic: misc: Do not find for executables in ASSUME_PROVIDED
Executables like tar won't be available on the native sysroot, as they
are part of the ASSUME_PROVIDED variable.

Cc: Paul Barker <pbarker@konsulko.com>
(From OE-Core rev: eab485069809c991433b9e1b8e4223a555e4d7f9)

Signed-off-by: Ricardo Ribalda Delgado <ricardo@ribalda.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 2f574d535f8665b26dab65c14668cf8fc7b751c0)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Anuj Mittal
192834adc0 xserver-xorg: update CVE_PRODUCT
Some of the CVEs have x_server as the product name.

(From OE-Core rev: 183a62e7de1ded1f271d8ba4d1b149a85159f4bd)

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 4d5d63cf8605515bb659b6b732683d7fe6540728)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:53 +00:00
Konrad Weihmann
6ec2230291 cve-check: add lockfile to task
this should prevent running into the very rare error
sqlite3.OperationalError: attempt to write a readonly database

As highlighted by https://www.sqlite.org/faq.html#q5
it is likely that the adapter won't allow use multiple exec calls
at the same time.

So it's best to prevent multiple accesses at a time, by reusing
the already in place CVE_CHECK_DB_FILE_LOCK

YOCTO #14110

(From OE-Core rev: 3c69e4eb08701516150c78cf8b48f3e90d197b2b)

Signed-off-by: Konrad Weihmann <kweihmann@outlook.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 677f5741bd265be49d4a5bb933b3e8d8c4eec653)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:52 +00:00
Ross Burton
ee62d4540e cve-update-db-native: use fetch task
Instead of inventing a new task to fetch the CVE data, use the existing
fetch task.

(From OE-Core rev: 1ed53d5cfc2be40b2d57b5392ec4d30313209934)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f5f97d33a1703d75b9fd9760f2c7767081538e00)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:52 +00:00
Steve Sakoman
ee9345f864 oeqa/selftest/cases/tinfoil.py: increase timeout 60->120s test_wait_event
The test is timing out on fedora autobuilder workers

(From OE-Core rev: f8e726479d5f4d89f9a7cf8babfe25fd5c73f66e)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:52 +00:00
Steve Sakoman
34ba446157 valgrind: skip flakey ptest (gdbserver_tests/hginfo)
This ptest was already disabled in master branch with: valgrind: skip
broken ptests for glibc 2.34

https://git.openembedded.org/openembedded-core/commit/?id=c177c7f9ef6f90ca49074f003accb8e9a1a645aa

(From OE-Core rev: ead8809ab3182cda04495915551cf3f9b4f5d1f6)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-22 17:56:52 +00:00
Richard Purdie
4a14c922d8 bitbake: tests/fetch: Drop gnu urls from wget connectivity test
These urls are no longer adding much to the test coverage but the intermittent
network issues connecting to them are painful. Drop the urls.

(Bitbake rev: e6d75e0beb95aa0cdf82bbc0a6b767c7f6cfcfc0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit bdf5739c5d831dc97a7d81568f94a0953c71017f)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-17 21:53:07 +00:00
Richard Purdie
cbc25057f1 bitbake: utils: Update to use exec_module() instead of load_module()
This is deprecated in python 3.12 and Fedora 35 is throwing warnings so
move to the new functions.

(Bitbake rev: e84c9aa77b61e48f1507edcba7bde65295f4d3ad)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 68a18fbcb5959e334cf307d7fa8dc63832edb942)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-17 21:53:07 +00:00
Teoh Jay Shen
3432003435 linux-yocto/5.4: update genericx86* machines to v5.4.158
(From meta-yocto rev: 44647201cfcdb4dd11eb1651ab62c64ca2aacb10)

Signed-off-by: Teoh Jay Shen <jay.shen.teoh@intel.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 23:02:39 +00:00
Steve Sakoman
e2aa712775 asciidoc: properly detect and compare Python versions >= 3.10
asciidoc.py cannot properly detect versions of Python >= 3.10

Backport patch from upstream to correct this:

44d2d60952

Fixed upstream in version 9.04, so this patch is not required in master.

(From OE-Core rev: da3bd5e0934b6462ae53225a58305235849b32d5)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Alexander Kanavin
d62ff88963 lib/oe/reproducible: correctly set .git location when recursively looking for git repos
(From OE-Core rev: a39e70489038256add6212b86e8728527f750556)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ffdaa1a0527691d66dd28e86bd015bfad7a020f6)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Richard Purdie
6a3354025c scripts: Update to use exec_module() instead of load_module()
This is deprecated in python 3.12 and Fedora 35 is throwing warnings so
move to the new functions.

(From OE-Core rev: c0710d4ffb6c11083daf77fe24129d879f270591)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 655cd3f614d736416eab0d708b7c49674bf5c977)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Steve Sakoman
c1599e44e1 selftest: skip virgl test on fedora 35
This test will fail any time the host has libdrm > 2.4.107

(From OE-Core rev: bb767e338ad25e27e6bf2c7dfdecc639e8105059)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Tim Orling
cfd64997c4 scripts/buildhistory-diff: drop use of distutils
The use of distutils.version.LooseVersion to check for GitPython > 0.3.1
is not really needed anymore since any supported distribution has at least
1.0.0 (centos-7 via epel7, debian-9, ubuntu-16.04)

If we want to reinstate this check, alternatives would be to require
python3-packaging on all hosts and use packaging.version.Version or
use an imported LooseVersion in bb.version.

[YOCTO #14610]

(From OE-Core rev: 15b1a82b4cdfadeaf89489929e10aaf9a0edd13d)

Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit bc90dcae9f53ddc246942f4d9b8ae8943e3b9754)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Marek Vasut
5457198984 weston: Backport patches to always activate the top-level surface
In case the device has only touchscreen input device and no keyboard or mouse,
the top level surface is never activated. The behavior differs from a device
which has a keyboard (or gpio-keys, or even uinput-emulated keyboard), where
callchain activate()->weston_view_activate()->weston_seat_set_keyboard_focus()->
weston_keyboard_set_focus()->wl_signal_emit(&keyboard->focus_signal, keyboard)->
handle_keyboard_focus()->weston_desktop_surface_set_activated(..., true); sets
the top level surface as activated. On device with touchscreen, the above is
never called, hence the top level surface is never activated. Add explicit
weston_desktop_surface_set_activated(shsurf->desktop_surface, true); into
activate() to always active the top level surface.

This fixes at least two known issues on such devices:
- Wayland terminal cursor is an empty bar (full bar with keyboard present)
- Chromium dropdown menus are randomly placed (they are placed correctly
  when keyboard is present, because then chromium can find the activated
  top level surface)

(From OE-Core rev: 0a2da895284f1687cf75297fb0f4b20cc9b53489)

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Richard Purdie
b72fe527c9 oeqa/selftest/tinfoil: Update to use test command
We've had IO load issues on the autobuilder with this test. Avoid
those by using a specilised test command instead.

(From OE-Core rev: 351b02feb9cb680aa3dbe4c8ea4162a6456a469f)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 106445b1eb74fc37e03c72a0c011541b50a16c19)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Richard Purdie
9e75884e0a oeqa/selftest/bbtests: Use YP sources mirror instead of GNU
The gnu sources server has been known to disappear. Use the YP sources
mirror instead. If that breaks, the autobuilder is broken anyway. This
should reduce test failures from upstream network issues.

(From OE-Core rev: cc786c759c1454340b72805227f2181d22bd7080)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a5459e42f1a6be9c08f303653cc1f73514eca9ef)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Richard Purdie
468588819e openssl: Add reproducibility fix
When the date rolled from one year to another, it highlighted a reproducibility
issue in openssl. Patch a workaround for this to avoid autobuilder failures.

(From OE-Core rev: b360fdca923bb3e4a4bf41d705e634eafc0e54c5)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit f8281e290737dba16a46d7ae937c66b3266e0fe8)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Steve Sakoman
2b65abb255 libpcre2: update SRC_URI
Version 10.34 tarball is no longer available at current URL,
use downloads.yoctoproject.org mirror instead

(From OE-Core rev: b24838b8173c6853cdcbff6512a12557e479df86)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
wangmy
e1fbe6c4a3 linux-firmware: upgrade 20211027 -> 20211216
License-Update: version of license file updated.

(From OE-Core rev: 904eb89c0ff22be32209eb0a8a569911f1969673)

Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 07dc668ddc50de14821aff1b6850d8b4999702bd)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Marta Rybczynska
c55481b806 grub: fix CVE-2020-14372 and CVE-2020-27779
Fix issues with grub in secure boot mode where an attacker could circumvent
secure boot by using acpi and cutmem commands. Also include patches fixing
similar issues.

Most patches are backported directly from grub. One patch
(no-insmod-on-sb.patch) comes from Debian, as the upstream implementation is
too complicated to backport.

CVE-2020-14372 description (from NVD [1]):
A flaw was found in grub2 in versions prior to 2.06, where it incorrectly
enables the usage of the ACPI command when Secure Boot is enabled.
This flaw allows an attacker with privileged access to craft a Secondary
System Description Table (SSDT) containing code to overwrite the Linux
kernel lockdown variable content directly into memory. The table is
further loaded and executed by the kernel, defeating its Secure Boot
lockdown and allowing the attacker to load unsigned code. The highest
threat from this vulnerability is to data confidentiality and integrity,
as well as system availability.

CVE-2020-27779 description (from NVD [2]):
A flaw was found in grub2 in versions prior to 2.06. The cutmem command
does not honor secure boot locking allowing an privileged attacker to
remove address ranges from memory creating an opportunity to circumvent
SecureBoot protections after proper triage about grub's memory layout.
The highest threat from this vulnerability is to data confidentiality
and integrity as well as system availability.

[1] https://nvd.nist.gov/vuln/detail/CVE-2020-14372
[2] https://nvd.nist.gov/vuln/detail/CVE-2020-27779

(From OE-Core rev: da6c0f3cfc920cea57cd409b17303bf735ccd68d)

Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-11 22:28:38 +00:00
Richard Purdie
6e6ede294c bitbake: cooker/command: Add a dummy event for tinfoil testing
We need a command genetating an event to test through the tinfoil API. The
current test has IO load issues so add a dummy version which won't have
the IO constraints.

(Bitbake rev: c5969eedd035648e3258bade386cc67ce3bb0e03)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a144178584394ea0700ffc2f2bfac94e8690effc)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-07 23:43:50 +00:00
Michael Opdenacker
0490ee5944 ref-manual: fix patch documentation
The do_patch implementation does not apply patches from an entry in
SRC_URI pointing to a directory.
Remove the claim that this is implemented.

(From yocto-docs rev: 9c5533b45bfd6a3d383e973a2c40e0f418afcbe9)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-07 11:12:46 +00:00
Michael Opdenacker
ee0220a2bb documentation: further updates for 3.1.13
(From yocto-docs rev: 89323c1df4f8026ed67fc9eccfee516f7735c267)

Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com>
Reported-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-03 22:17:13 +00:00
Michael Halstead
56e9d560b0 releases: update to include 3.1.13
Adding 3.1.13 to documentation switcher and release list.

(From yocto-docs rev: 8debc43c165b8732ed00ffe249b0ada6109e53d9)

Signed-off-by: Michael Halstead <mhalstead@linuxfoundation.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-03 22:17:13 +00:00
Steve Sakoman
98d21218fc selftest: skip virgl test on fedora 34 entirely
Fedora 34 recently updated libdrm to 2.4.109 and this test will fail any
time the host has libdrm > 2.4.107

(From OE-Core rev: 1ab7aee542589f6b6c76f8515b4230ce870a8678)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Anuj Mittal
846e457b35 gstreamer1.0: fix failing ptest
Backport a patch to increase the timeout that might help with the
intermittent seek test failure.

[YOCTO #14194]
[YOCTO #14669]

(From OE-Core rev: a7dc7a35334ad634926a1386f4a56b27aad3ce68)

(From OE-Core rev: a3fe157cfd965d46d7ba30df92a0e80b5ab24a1f)

Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7b90027aac)
Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Bruce Ashfield
8a1fc484cc linux-yocto/5.4: update to v5.4.167
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

e8ef940326ef Linux 5.4.167
c97579584fa8 arm: ioremap: don't abuse pfn_valid() to check if pfn is in RAM
6026d4032dbb arm: extend pfn_valid to take into account freed memory map alignment
492f4d3cde95 memblock: ensure there is no overflow in memblock_overlaps_region()
bdca964781a0 memblock: align freed memory map on pageblock boundaries with SPARSEMEM
60111b30be0b memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER
3e8e272805e7 hwmon: (dell-smm) Fix warning on /proc/i8k creation error
f6f1d1911492 bpf: Fix integer overflow in argument calculation for bpf_map_area_alloc
b06b1f46306a selinux: fix race condition when computing ocontext SIDs
2fb8e4267c47 KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
467359957ad2 tracing: Fix a kmemleak false positive in tracing_map
fb8cd2b336e4 drm/amd/display: add connector type check for CRC source set
8fc2f28e3348 drm/amd/display: Fix for the no Audio bug with Tiled Displays
c0315e93552e net: netlink: af_netlink: Prevent empty skb by adding a check on len.
7ff666e6fdc0 i2c: rk3x: Handle a spurious start completion interrupt flag
409ecd029ac5 parisc/agp: Annotate parisc agp init functions with __init
4233fbd459ac net/mlx4_en: Update reported link modes for 1/10G
b6158d968b3e drm/msm/dsi: set default num_data_lanes
d731ecc6f2ea nfc: fix segfault in nfc_genl_dump_devices_done
c32c40ff8092 Linux 5.4.166
eb1b5eaaddec netfilter: selftest: conntrack_vrf.sh: fix file permission

(From OE-Core rev: ebfe803e9545b862416e3a647c7a5e19e9c6acbd)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Bruce Ashfield
b2c0b6caf9 linux-yocto/5.4: update to v5.4.165
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

7f70428f0109 Linux 5.4.165
3a99b4baff3c bpf: Add selftests to cover packet access corner cases
b8a2c49aa956 misc: fastrpc: fix improper packet size calculation
8f9a25e452f8 irqchip: nvic: Fix offset for Interrupt Priority Offsets
61981e5fee6d irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL
fc20091b3f97 irqchip/armada-370-xp: Fix support for Multi-MSI interrupts
a3689e694b39 irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc()
8c163a142771 iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
20f0fb418b6c iio: ad7768-1: Call iio_trigger_notify_done() on error
b68f44829b73 iio: adc: axp20x_adc: fix charging current reporting on AXP22x
e79d86de1e96 iio: at91-sama5d2: Fix incorrect sign extension
5f3d932f91cb iio: dln2: Check return value of devm_iio_trigger_register()
7447f0450825 iio: dln2-adc: Fix lockdep complaint
4c0fa7ed5a3a iio: itg3200: Call iio_trigger_notify_done() on error
e67d60c5ebb0 iio: kxsd9: Don't return error code in trigger handler
f143cfdccfc9 iio: ltr501: Don't return error code in trigger handler
acf0088ac073 iio: mma8452: Fix trigger reference couting
02553e971255 iio: stk3310: Don't return error code in interrupt handler
1374297ccf61 iio: trigger: stm32-timer: fix MODULE_ALIAS
1dadba28a829 iio: trigger: Fix reference counting
ec0cddcc2454 xhci: avoid race between disable slot command and host runtime suspend
8d45969ca31a usb: core: config: using bit mask instead of individual bits
d1eee0a3936f xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime suspending
d2f242d7a9ce usb: core: config: fix validation of wMaxPacketValue entries
9978777c5409 USB: gadget: zero allocate endpoint 0 buffers
fd6de5a0cd42 USB: gadget: detect too-big endpoint 0 requests
46d3477cdef3 selftests/fib_tests: Rework fib_rp_filter_test()
caff29d1129c net/qla3xxx: fix an error code in ql_adapter_up()
4aa28ac9373c net, neigh: clear whole pneigh_entry at alloc time
f23f60e81af2 net: fec: only clear interrupt of handling queue in fec_enet_rx_queue()
05bc4d266eaf net: altera: set a couple error code in probe()
84a890d6959e net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero
e9ca63a07dd3 tools build: Remove needless libpython-version feature check that breaks test-all fast path
49e59d514408 dt-bindings: net: Reintroduce PHY no lane swap binding
b78a27fa58cc mtd: rawnand: fsmc: Fix timing computation
7596d0deec7f mtd: rawnand: fsmc: Take instruction delay into account
9f88ca269c41 i40e: Fix pre-set max number of queues for VF
171527da8414 i40e: Fix failed opcode appearing if handling messages from VF
ee8bfa62bf79 ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer
43dcb79c1d9b qede: validate non LSO skb length
727858a98ac9 block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
9ba5635cfad7 tracefs: Set all files to the same group ownership as the mount option
4105e6a128e8 aio: fix use-after-free due to missing POLLFREE handling
380185111fa8 aio: keep poll requests on waitqueue until completed
aac8151624b6 signalfd: use wake_up_pollfree()
1a478a0522e5 binder: use wake_up_pollfree()
e0c03d15cd03 wait: add wake_up_pollfree()
6db0db1657cb libata: add horkage for ASMedia 1092
050ac9da6768 x86/sme: Explicitly map new EFI memmap table as encrypted
9f5b334ee654 can: m_can: Disable and ignore ELO interrupt
abb4eff3dcd2 can: pch_can: pch_can_rx_normal: fix use after free
291a164ac1f3 drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence.
f53b73953ff8 clk: qcom: regmap-mux: fix parent clock lookup
e871f89ebfe2 tracefs: Have new files inherit the ownership of their parent
f5734b1714ca nfsd: Fix nsfd startup race (again)
412498e9e54b btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling
aa4740bc8595 btrfs: clear extent buffer uptodate when we fail to write it
434927e938ce ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*()
76f19e4cbb54 ALSA: pcm: oss: Limit the period size to 16MB
f12c8a7515f6 ALSA: pcm: oss: Fix negative period/buffer sizes
5b06fa0cd2be ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform
caaea6bd3e18 ALSA: ctl: Fix copy of updated id with element read/write
a7ea5c099ad4 mm: bdi: initialize bdi_min_ratio when bdi is unregistered
b8a79804056b IB/hfi1: Correct guard on eager buffer deallocation
ab1be91cf1ec iavf: Fix reporting when setting descriptor count
c21bb711d0fb iavf: restore MSI state on reset
c8ae8c812e16 udp: using datalen to cap max gso segments
ef8804e47c0a seg6: fix the iif in the IPv6 socket control block
2e0e072e62fd nfp: Fix memory leak in nfp_cpp_area_cache_add()
3db6482523ea bonding: make tx_rebalance_counter an atomic
143ceb9b6736 ice: ignore dropped packets during init
4174bd4221c2 bpf: Fix the off-by-two error in range markings
15f987473d33 vrf: don't run conntrack on vrf with !dflt qdisc
8d3563ecbca3 selftests: netfilter: add a vrf+conntrack testcase
48fcd08fdbe0 nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done
1a295fea90e1 can: sja1000: fix use after free in ems_pcmcia_add_card()
fbcb12bc9dbf can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct stats->{rx,tx}_errors counter
68daa476f499 can: kvaser_usb: get CAN clock frequency from device
a7944962ee1f HID: check for valid USB device for many HID drivers
e9114b9dc8ea HID: wacom: fix problems when device is not a valid USB device
8e0ceff632f4 HID: bigbenff: prevent null pointer dereference
31520ec149d2 HID: add USB_HID dependancy on some USB HID drivers
f8a6538587b4 HID: add USB_HID dependancy to hid-chicony
ee8477d1dbce HID: add USB_HID dependancy to hid-prodikeys
6e1e0a014258 HID: add hid_is_usb() function to make it simpler for USB detection
1e8db541c2be HID: google: add eel USB id
cb7b13c98218 HID: quirks: Add quirk for the Microsoft Surface 3 type-cover
f99b2013793f ntfs: fix ntfs_test_inode and ntfs_init_locked_inode function type
eb246f58e1fc serial: tegra: Change lower tolerance baud rate limit for tegra20 and tegra30
e3c95128def1 Linux 5.4.164
5df7d6a012fc ipmi: msghandler: Make symbol 'remove_work_wq' static
5d1e83fffbc9 net/tls: Fix authentication failure in CCM mode
cffd7583c92e parisc: Mark cr16 CPU clocksource unstable on all SMP machines
23b40edec832 iwlwifi: mvm: retry init flow if failed
8d6e4b422d0c serial: 8250_pci: rewrite pericom_do_set_divisor()
181cf7622ce2 serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array
c5da8aa44105 serial: core: fix transmit-buffer reset and memleak
7ed4a98a174c serial: pl011: Add ACPI SBSA UART match id
9e16682c94ec tty: serial: msm_serial: Deactivate RX DMA for polling support
b5dd5a467ec6 x86/64/mm: Map all kernel memory into trampoline_pgd
72736a3b90ef x86/tsc: Disable clocksource watchdog for TSC on qualified platorms
fe3cd48420cd x86/tsc: Add a timer to make sure TSC_adjust is always checked
957a203fe1b7 usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect
7fbde744374e USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub
095a39a2cc27 xhci: Fix commad ring abort, write all 64 bits to CRCR register.
caedb12c7737 vgacon: Propagate console boot parameters before calling `vc_resize'
a42944686249 parisc: Fix "make install" on newer debian releases
fbe7eacab7eb parisc: Fix KBUILD_IMAGE for self-extracting kernel
c6a9060be53f sched/uclamp: Fix rq->uclamp_max not set on first enqueue
8ae8ccd2402f KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register
ee38eb8cf9a7 ipv6: fix memory leak in fib6_rule_suppress
9d1596282644 drm/msm: Do hw_init() before capturing GPU state
10bad5a1977f net/smc: Keep smc_close_final rc during active close
3f2a23fd13ff net/rds: correct socket tunable error in rds_tcp_tune()
01c60b3f477b ipv4: convert fib_num_tclassid_users to atomic_t
efb073981756 net: annotate data-races on txq->xmit_lock_owner
bfec04c689af net: marvell: mvpp2: Fix the computation of shared CPUs
d4034bb9b532 net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ is available
3e70e3a72d80 rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer()
ae8a253f3fe6 selftests: net: Correct case name
e461a9816a1a net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources()
af120fcffd64 siphash: use _unaligned version by default
f70c6281eafb net: mpls: Fix notifications when deleting a device
bbeb0325a746 net: qlogic: qlcnic: Fix a NULL pointer dereference in qlcnic_83xx_add_rings()
49ab33623107 natsemi: xtensa: fix section mismatch warnings
063d2233623a i2c: cbus-gpio: set atomic transfer callback
f5d7bd03f888 i2c: stm32f7: stop dma transfer in case of NACK
9fce2ead76f4 i2c: stm32f7: recover the bus on access timeout
bc0215cbd162 i2c: stm32f7: flush TX FIFO upon transfer errors
742a5ae18c5f sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl
77393806c76b sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
03d4462ba3bc fget: check that the fd still exists after getting a ref to it
a78b607e1b43 s390/pci: move pseudo-MMIO to prevent MIO overlap
006edd736dc8 cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink()
648813c26d64 ipmi: Move remove_work to dedicated workqueue
3f8f7eef8c32 rt2x00: do not mark device gone on EPROTO errors during start
c2e2ccaac3d9 kprobes: Limit max data_size of the kretprobe instances
03ee5e8c63c3 vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit
f82013d1d68f net/smc: Avoid warning of possible recursive locking
df5990db088d perf report: Fix memory leaks around perf_tip()
b380d09e44e8 perf hist: Fix memory leak of a perf_hpp_fmt
57247f703539 net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
77ff16690945 net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
99bb25cb6753 ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
0f89c59e75ac ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile
36c8f686956d scsi: iscsi: Unblock session then wake up error handler
dbbc8aeaf7a1 thermal: core: Reset previous low and high trip during thermal zone init
ebc8aed3b9eb btrfs: check-integrity: fix a warning on write caching disabled disk
5db28ea9f1a4 s390/setup: avoid using memblock_enforce_memory_limit
5d93fc221c5d platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep
96274948989c net: return correct error code
89d15a2e40d7 atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait
d6e981ec9491 net/smc: Transfer remaining wait queue entries during fallback
a1671b224bc0 mac80211: do not access the IV when it was stripped
3200cf7b9b7e drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY
7ef990365059 gfs2: Fix length of holes reported at end-of-file
fe915dbd0f83 can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM
fb158a26544c arm64: dts: mcbin: support 2W SFP modules
39b3b131d10d of: clk: Make <linux/of_clk.h> self-contained
aad716bd144a NFSv42: Fix pagecache invalidation after COPY/CLONE

(From OE-Core rev: 2784863606e27715ee5e7f582bb6c4df67879c95)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Bruce Ashfield
d19c2eba98 linux-yocto/5.4: update to v5.4.163
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

57899c4e26bf Linux 5.4.163
6c728efe164f tty: hvc: replace BUG_ON() with negative return value
c3024e1945fe xen/netfront: don't trust the backend response data blindly
828b1d3861a1 xen/netfront: disentangle tx_skb_freelist
5b757077dacd xen/netfront: don't read data from request on the ring page
5c374d830e1b xen/netfront: read response from backend only once
3456a07614b1 xen/blkfront: don't trust the backend response data blindly
6392f51a9d2e xen/blkfront: don't take local copy of a request from the ring page
ce011335cb42 xen/blkfront: read response from backend only once
61826a7884cb xen: sync include/xen/interface/io/ring.h with Xen's newest version
54f682cd4849 fuse: release pipe buf after last use
eff32973ecc3 NFC: add NCI_UNREG flag to eliminate the race
43788453983e shm: extend forced shm destroy to support objects from several IPC nses
b23c0c4c9e0a s390/mm: validate VMA in PGSTE manipulation functions
3c9a213e0edb tracing: Check pid filtering when creating events
dda227cccf14 vhost/vsock: fix incorrect used length reported to the guest
2eacc0acf6ea smb3: do not error on fsync when readonly
51be334da375 f2fs: set SBI_NEED_FSCK flag when inconsistent node block found
3ceecea047c2 net: mscc: ocelot: correctly report the timestamping RX filters in ethtool
ee4e3f9d3dd7 net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP
0ea2e5497b8c net: hns3: fix VF RSS failed problem after PF enable multi-TCs
3b961640399b net/smc: Don't call clcsock shutdown twice when smc shutdown
5e44178864b3 net: vlan: fix underflow for the real_dev refcnt
296139e1de16 MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48
9f5838471aed igb: fix netpoll exit with traffic
25980820c4f0 nvmet: use IOCB_NOWAIT only if the filesystem supports it
d54662a91faa tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited flows
562fe6a6d2c5 PM: hibernate: use correct mode for swsusp_close()
2654e6cfc483 net/ncsi : Add payload to be 32-bit aligned to fix dropped packets
080f6b694ef1 nvmet-tcp: fix incomplete data digest send
6c0ab2caa8d1 net/smc: Ensure the active closing peer first closes clcsock
7854de57be29 scsi: core: sysfs: Fix setting device state to SDEV_RUNNING
67a6f64a0c84 net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group
cca61bb17042 net: ipv6: add fib6_nh_release_dsts stub
ddd0518c1e09 nfp: checking parameter process for rx-usecs/tx-usecs is invalid
b638eb32c64d ipv6: fix typos in __ip6_finish_output()
8029ced6d775 iavf: Prevent changing static ITR values if adaptive moderation is on
4374e414fcbf drm/vc4: fix error code in vc4_create_object()
7e324f734a91 scsi: mpt3sas: Fix kernel panic during drive powercycle test
dc9eb93d5a0a ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE
a078967dd34b NFSv42: Don't fail clone() unless the OP_CLONE operation failed
ce50e97a06bd firmware: arm_scmi: pm: Propagate return value to caller
7360abf31ce0 net: ieee802154: handle iftypes as u32
4421a196fdaf ASoC: topology: Add missing rwsem around snd_ctl_remove() calls
76867d0cb83f ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer
a848a22e9434 ARM: dts: BCM5301X: Add interrupt properties to GPIO node
03f7379e2c69 ARM: dts: BCM5301X: Fix I2C controller interrupt
17a763eab714 netfilter: ipvs: Fix reuse connection if RS weight is 0
fd7974c547ab proc/vmcore: fix clearing user buffer by properly using clear_user()
66d6eacba7a6 arm64: dts: marvell: armada-37xx: Set pcie_reset_pin to gpio function
3a4baf070c6a pinctrl: armada-37xx: Correct PWM pins definitions
086226048bcd PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge
7c517d7b8898 PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge
44b2776a9307 PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated bridge
bbc6201152fb PCI: aardvark: Fix link training
3d770a20950b PCI: aardvark: Simplify initialization of rootcap on virtual bridge
a06ace0d317d PCI: aardvark: Implement re-issuing config requests on CRS response
75faadcc3a0e PCI: aardvark: Fix PCIe Max Payload Size setting
c697885a1281 PCI: aardvark: Configure PCIe resources from 'ranges' DT property
e3c51ac70aae PCI: pci-bridge-emul: Fix array overruns, improve safety
ea6eef03dafb PCI: aardvark: Update comment about disabling link training
fe8a8c3a408e PCI: aardvark: Move PCIe reset card code to advk_pcie_train_link()
14311e77c93e PCI: aardvark: Fix compilation on s390
93491c5d26f7 PCI: aardvark: Don't touch PCIe registers if no card connected
8b0f7b8b7839 PCI: aardvark: Replace custom macros by standard linux/pci_regs.h macros
e090b2e2708e PCI: aardvark: Issue PERST via GPIO
0ad291db2d01 PCI: aardvark: Improve link training
063a98c00528 PCI: aardvark: Train link immediately after enabling training
bbe213fd12fb PCI: aardvark: Fix big endian support
5551081d845e PCI: aardvark: Wait for endpoint to be ready before training link
65d962199b7f PCI: aardvark: Deduplicate code in advk_pcie_rd_conf()
57c7d46e8b1d mdio: aspeed: Fix "Link is Down" issue
e466278662be mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB
e09e868c6341 tracing: Fix pid filtering when triggers are attached
f5bbebfd7ca1 tracing/uprobe: Fix uprobe_perf_open probes iteration
5c895828f421 KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB
4f1adc3f572a xen: detect uninitialized xenbus in xenbus_init
173fe1aedf67 xen: don't continue xenstore initialization in case of errors
2e1ec01af2c7 staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect()
e72e981d16fc staging/fbtft: Fix backlight
9b406e39e539 HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts
c03ad97293d2 Revert "parisc: Fix backtrace to always include init funtion names"
4a6f918a92b0 media: cec: copy sequence field for the reply
8d0b9ea19174 ALSA: ctxfi: Fix out-of-range access
aaa83768ba39 binder: fix test regression due to sender_euid change
d797fde8644a usb: hub: Fix locking issues with address0_mutex
4b354aeea431 usb: hub: Fix usb enumeration issue due to address0 race
d00bf013aed2 usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts
7b6f44856da5 net: nexthop: fix null pointer dereference when IPv6 is not enabled
9ad421aedc55 usb: dwc2: hcd_queue: Fix use of floating point literal
e44a934f9e04 usb: dwc2: gadget: Fix ISOC flow for elapsed frames
c2e05c4ed8a3 USB: serial: option: add Fibocom FM101-GL variants
ee034eae9d9b USB: serial: option: add Telit LE910S1 0x9200 composition

(From OE-Core rev: 94264cb2b1355a9b91bbbe701da858866cccb370)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Bruce Ashfield
f06e7a026d linux-yocto/5.4: update to v5.4.162
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

9334f48f5673 Linux 5.4.162
46a8e16fcf2c ALSA: hda: hdac_stream: fix potential locking issue in snd_hdac_stream_assign()
293385739d68 ALSA: hda: hdac_ext_stream: fix potential locking issues
201340ca4eb7 hugetlbfs: flush TLBs correctly after huge_pmd_unshare
e7891b22b251 tlb: mmu_gather: add tlb_flush_*_range APIs
10e34766d8ac ice: Delete always true check of PF pointer
101485e566ce usb: max-3421: Use driver data instead of maintaining a list of bound devices
4e1b3e718f24 ASoC: DAPM: Cover regression by kctl change notification fix
56a32c82761a batman-adv: Don't always reallocate the fragmentation skb head
08bceb1e30c2 batman-adv: Reserve needed_*room for fragments
374c55d416ab batman-adv: Consider fragmentation for needed_headroom
9eff9854f82d perf/core: Avoid put_page() when GUP fails
e0122ea133cd Revert "net: mvpp2: disable force link UP during port init procedure"
4efa2509d3aa drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
c0276de0be48 drm/i915/dp: Ensure sink rate values are always valid
1c4af56ffbfb drm/nouveau: use drm_dev_unplug() during device removal
9e98622aa508 drm/udl: fix control-message timeout
52affc201fc2 cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
ca9834a1148b parisc/sticon: fix reverse colors
670f6b3867c8 btrfs: fix memory ordering between normal and ordered work functions
1c3882215946 udf: Fix crash after seekdir
f79957d274b0 s390/kexec: fix memory leak of ipl report buffer
b0e44dfb4e4c x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails
f2e0cd42f198 mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
95de3703a1d0 ipc: WARN if trying to remove ipc object which is absent
8997bb6d1ecc hexagon: export raw I/O routines for modules
01a7ecd36d1e tun: fix bonding active backup with arp monitoring
7c8f778f0a3a arm64: vdso32: suppress error message for 'make mrproper'
e636f65b3d8f s390/kexec: fix return code handling
cc093e5a966d perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server
cc63a789d80d perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server
47a810817823 KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr()
307d2e6cebfc NFC: reorder the logic in nfc_{un,}register_device
da3a87eeb990 drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame
e418bb556ff8 NFC: reorganize the functions in nci_request
bbb8376d58ac i40e: Fix display error code in dmesg
69e5d27af579 i40e: Fix creation of first queue by omitting it if is not power of two
5564e9129f1f i40e: Fix ping is lost after configuring ADq on VF
8509178dc001 i40e: Fix changing previously set num_queue_pairs for PFs
c30162da9132 i40e: Fix NULL ptr dereference on VSI filter sync
0a0308af22a5 i40e: Fix correct max_pkt_size on VF RX queue
fb2dbc124a7f net: virtio_net_hdr_to_skb: count transport header in UFO
d74ff10ed2d9 net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove
8b2c66b0f2a0 net: sched: act_mirred: drop dst for the direction from egress to ingress
edd783162bf2 scsi: core: sysfs: Fix hang when device state is set via sysfs
446882f216ac platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
453b5b614b93 mips: lantiq: add support for clk_get_parent()
477653f3e4e4 mips: bcm63xx: add support for clk_get_parent()
426fed211b49 MIPS: generic/yamon-dt: fix uninitialized variable error
67334abd4fb7 iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset
98f3badc414f iavf: validate pointers
92cecf349121 iavf: prevent accidental free of filter structure
63f032a956ed iavf: Fix failure to exit out from last all-multicast mode
926e8c83d4c1 iavf: free q_vectors before queues in iavf_disable_vf
f0222e7eee0c iavf: check for null in iavf_fix_features
b5638bc64a69 net: bnx2x: fix variable dereferenced before check
fbba0692ec4b perf tests: Remove bash construct from record+zstd_comp_decomp.sh
9e0df711f8db perf bench futex: Fix memory leak of perf_cpu_map__new()
642fc22210a5 perf bpf: Avoid memory leak from perf_env__insert_btf()
6bf5523090a7 RDMA/netlink: Add __maybe_unused to static inline in C file
ef82c3716a5a tracing/histogram: Do not copy the fixed-size char array field over the field size
80b777606925 tracing: Save normal string variables
8928e31a776a sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
a93a58bae950 mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
05311b9192be clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk
ee1317e1f4b0 clk/ast2600: Fix soc revision for AHB
d6c32b4c83f6 clk: ingenic: Fix bugs with divided dividers
982d31ba5533 sh: define __BIG_ENDIAN for math-emu
214cd15d3675 sh: math-emu: drop unused functions
3d774e776f68 sh: fix kconfig unmet dependency warning for FRAME_POINTER
7727659e45f8 f2fs: fix up f2fs_lookup tracepoints
d7c612f6b1f3 maple: fix wrong return value of maple_bus_init().
9823ba8f17f8 sh: check return code of request_irq
94292e4577a2 powerpc/dcr: Use cmplwi instead of 3-argument cmpli
c6d2cefdd05c ALSA: gus: fix null pointer dereference on pointer block
513543f1eda1 powerpc/5200: dts: fix memory node unit name
3a9eae47a550 iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr()
a3ecee8a8fd7 scsi: target: Fix alua_tg_pt_gps_count tracking
14934afd4f5d scsi: target: Fix ordered tag handling
1ab3b4f4f46f MIPS: sni: Fix the build
d491c84df5c4 tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
80709beddb8d ALSA: ISA: not for M68K
2f8cda43c415 ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash
723c1af01c35 ARM: dts: ls1021a: move thermal-zones node out of soc/
f98986b7acb4 usb: host: ohci-tmio: check return value after calling platform_get_resource()
e187c2f3f25e ARM: dts: omap: fix gpmc,mux-add-data type
3b9d8d3e4af2 firmware_loader: fix pre-allocated buf built-in firmware use
cc248790bfdc scsi: advansys: Fix kernel pointer leak
bcc1eac0bd49 ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect
c9428e13417d clk: imx: imx6ul: Move csi_sel mux to correct base register
e5f8c43c8546 ASoC: SOF: Intel: hda-dai: fix potential locking issue
cb074c00b71a arm64: dts: freescale: fix arm,sp805 compatible string
a14d7038ea20 arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency
30dcfcda8992 usb: typec: tipd: Remove WARN_ON in tps6598x_block_read
3ee15f1af174 usb: musb: tusb6010: check return value after calling platform_get_resource()
ba9579f832bd RDMA/bnxt_re: Check if the vlan is valid before reporting
bf6a633b0736 arm64: dts: hisilicon: fix arm,sp805 compatible string
16bcbfb56d75 scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
51c94d6aee59 ARM: dts: NSP: Fix mpcore, mmc node names
1390f32ea964 arm64: zynqmp: Fix serial compatible string
31df0f0f1882 arm64: zynqmp: Do not duplicate flash partition label property
5c088fba39af Linux 5.4.161
b786cb3236e1 erofs: fix unsafe pagevec reuse of hooked pclusters
83de35ae27a1 erofs: remove the occupied parameter from z_erofs_pagevec_enqueue()
b37f6da8c3fc PCI: Add MSI masking quirk for Nvidia ION AHCI
db1390b60e89 PCI/MSI: Deal with devices lying about their MSI mask capability
49b55a7792ec PCI/MSI: Destroy sysfs before freeing entries
7186be970c11 parisc/entry: fix trace test in syscall exit path
258c42a8fb31 fortify: Explicitly disable Clang support
4f9a3cda1660 scsi: ufs: Fix tm request when non-fatal error happens
c468f9249d84 ext4: fix lazy initialization next schedule time computation in more granular unit
307c6f728728 MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL
7be773a0288e scsi: ufs: Fix interrupt error message for shared interrupts
e3c97ba4a69e soc/tegra: pmc: Fix imbalanced clock disabling in error code path
17efa1a44c7f Linux 5.4.160
66bd28d6be90 selftests/bpf: Fix also no-alu32 strobemeta selftest
e7ea088cd030 ath10k: fix invalid dma_addr_t token assignment
20a951afb7d5 SUNRPC: Partial revert of commit 6f9f17287e78
5b7a0a4f7cbe PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
256a1e009b9b powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload
fe02d37870c9 s390/cio: make ccw_device_dma_* more robust
8a8d007bae0e s390/tape: fix timer initialization in tape_std_assign()
5ef14af16629 s390/cio: check the subchannel validity for dev_busid
b0989ae51d01 video: backlight: Drop maximum brightness override for brightness zero
66938ba12857 mm, oom: do not trigger out_of_memory from the #PF
d6648b55ed39 mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks
c6f9a5c11a91 powerpc/bpf: Emit stf barrier instruction sequences for BPF_NOSPEC
453b779d2b8f powerpc/security: Add a helper to query stf_barrier type
84b3fbfd8ed8 powerpc/bpf: Fix BPF_SUB when imm == 0x80000000
7edda4bd9eb9 powerpc/bpf: Validate branch ranges
0347c001c909 powerpc/lib: Add helper to check if offset is within conditional branch range
c4461ca7a835 ovl: fix deadlock in splice write
8d750efc8dd6 9p/net: fix missing error check in p9_check_errors
aba12bb38b10 net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE
223985fa1b5f f2fs: should use GFP_NOFS for directory inodes
af73b240e09e irqchip/sifive-plic: Fixup EOI failed when masked
53014c1c4162 parisc: Fix set_fixmap() on PA1.x CPUs
645d6dfdcb0b parisc: Fix backtrace to always include init funtion names
62c4e0a3d81a ARM: 9156/1: drop cc-option fallbacks for architecture selection
61a5e446bbff ARM: 9155/1: fix early early_iounmap()
dc3357424610 selftests/net: udpgso_bench_rx: fix port argument
dd3a418ba5e6 cxgb4: fix eeprom len when diagnostics not implemented
1800c9eecd5e net/smc: fix sk_refcnt underflow on linkdown and fallback
b2d1b6624bde vsock: prevent unnecessary refcnt inc for nonblocking connect
72aca95f958e net: hns3: allow configure ETS bandwidth of all TCs
07b218db54a4 net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any
18f2809441ef bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding
180a9b539cf6 arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions
572599cbf17a nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails
c1d5f943bbc3 llc: fix out-of-bound array index in llc_sk_dev_hash()
bdf94057aae6 perf bpf: Add missing free to bpf_event__print_bpf_prog_info()
23def86bbf71 zram: off by one in read_block_state()
d26835de40db mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and zs_unregister_migration()
46d695e870c4 bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed
dce69e0a065d ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses
700602b662d7 net: vlan: fix a UAF in vlan_dev_real_dev()
98e0ab88f435 net: davinci_emac: Fix interrupt pacing disable
70ecaadb49c2 xen-pciback: Fix return in pm_ctrl_init()
7f57b9bc8ee6 i2c: xlr: Fix a resource leak in the error handling path of 'xlr_i2c_probe()'
53ad06ff3b4e NFSv4: Fix a regression in nfs_set_open_stateid_locked()
c9dcb51ae473 scsi: qla2xxx: Turn off target reset during issue_lip
211f08d1ffc8 scsi: qla2xxx: Fix gnl list corruption
9b180f3c2d92 ar7: fix kernel builds for compiler test
59e97c74d159 watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT
162a1cfcd5ca m68k: set a default value for MEMORY_RESERVE
9770f8c29f81 signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL)
9e6985190f04 dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result`
fd1de3590123 netfilter: nfnetlink_queue: fix OOB when mac header was cleared
15351d5e8bb4 soc: fsl: dpaa2-console: free buffer before returning from dpaa2_console_read
be832f781dc4 auxdisplay: ht16k33: Fix frame buffer device blanking
c441943075fd auxdisplay: ht16k33: Connect backlight to fbdev
1fa9803de9e3 auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string
e63507ea4369 dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro
04317e74745a mtd: core: don't remove debugfs directory if device is in use
59929f9a573a mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()
a83aaf15077e fs: orangefs: fix error return code of orangefs_revalidate_lookup()
c79c37c77550 NFS: Fix deadlocks in nfs_scan_commit_list()
5a893e0eab16 opp: Fix return in _opp_add_static_v2()
98ac69821650 PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge
819925eff0c5 PCI: aardvark: Don't spam about PIO Response Status
bab1cfec7ae2 drm/plane-helper: fix uninitialized variable reference
4b48c6ede329 pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds
2b2fdb6f4892 rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined
bd48bdbfd9c4 apparmor: fix error check
a7b294764945 power: supply: bq27xxx: Fix kernel crash on IRQ handler register error
3f698d97f7c5 mips: cm: Convert to bitfield API to fix out-of-bounds access
fb7b73cd9418 powerpc/44x/fsp2: add missing of_node_put
d3dd1a057c9a HID: u2fzero: properly handle timeouts in usb_submit_urb
b216a39b3212 HID: u2fzero: clarify error check and length calculations
fae0552d83ff serial: xilinx_uartps: Fix race condition causing stuck TX
818e100c2bf4 phy: qcom-qusb2: Fix a memory leak on probe
de43e75917bc ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER
f00ff5357b61 ASoC: cs42l42: Correct some register default values
baf5c1225eb2 ARM: dts: stm32: fix SAI sub nodes register range
bb74ce1feb36 staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC
73aaa6222ac7 RDMA/mlx4: Return missed an error if device doesn't support steering
20dfad97dbd6 scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn()
5ead6f4feaa7 power: supply: rt5033_battery: Change voltage values to µV
fdbe8e8a08bf usb: gadget: hid: fix error code in do_config()
15355466cded serial: 8250_dw: Drop wrong use of ACPI_PTR()
d8241e7a2144 video: fbdev: chipsfb: use memset_io() instead of memset()
e7df004eb14e clk: at91: check pmc node status before registering syscore ops
44a2dcd146dc memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
03fe35ce9a0e soc/tegra: Fix an error handling path in tegra_powergate_power_up()
543d85602f9c arm: dts: omap3-gta04a4: accelerometer irq fix
7cf7d9b83d79 ALSA: hda: Reduce udelay() at SKL+ position reporting
d1cf71d79e00 JFS: fix memleak in jfs_mount
56911ee5375f MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT
ee49b6598cfb scsi: dc395: Fix error case unwinding
dd49dee254db ARM: dts: at91: tse850: the emac<->phy interface is rmii
1df7102f265b arm64: dts: meson-g12a: Fix the pwm regulator supply properties
681c58f34434 RDMA/bnxt_re: Fix query SRQ failure
50eca29537b0 ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY
863e71a3afb7 arm64: dts: rockchip: Fix GPU register width for RK3328
6694960195b7 ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc()
d27580c1b027 clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths
9212ebb1c6d8 RDMA/rxe: Fix wrong port_cap_flags
cf234bc5fbd8 ibmvnic: Process crqs after enabling interrupts
bc4061648176 ibmvnic: don't stop queue in xmit
a91c8ee2ed84 udp6: allow SO_MARK ctrl msg to affect routing
9ff14503f498 selftests/bpf: Fix fclose/pclose mismatch in test_progs
af51aa2b8586 crypto: pcrypt - Delay write to padata->info
9be9cb2a2be4 net: phylink: avoid mvneta warning when setting pause parameters
077410c7907c net: amd-xgbe: Toggle PLL settings during rate change
63a3b1af0474 drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits
9ca0d107428b wcn36xx: add proper DMA memory barriers in rx path
a3256ae45b0d libertas: Fix possible memory leak in probe and disconnect
427583b93d5a libertas_tf: Fix possible memory leak in probe and disconnect
2339ff4162a6 KVM: s390: Fix handle_sske page fault handling
3f3b4054e214 samples/kretprobes: Fix return value if register_kretprobe() failed
9435b2f9c006 tcp: don't free a FIN sk_buff in tcp_remove_empty_skb()
a8226599cbab irq: mips: avoid nested irq_enter()
ae5a24464872 s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap()
8fb436d146c7 libbpf: Fix BTF data layout checks and allow empty BTF
03a818c09677 smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
12ccb5737925 drm/msm: Fix potential NULL dereference in DPU SSPP
dc18f0806297 clocksource/drivers/timer-ti-dm: Select TIMER_OF
c523474f2a45 PM: hibernate: fix sparse warnings
0d22f55014d2 nvme-rdma: fix error code in nvme_rdma_setup_ctrl
67ba6c8e715f phy: micrel: ksz8041nl: do not use power down mode
ae213c059a8b mwifiex: Send DELBA requests according to spec
3a781e213164 rsi: stop thread firstly in rsi_91x_init() error handling
ad4cd0130757 mt76: mt76x02: fix endianness warnings in mt76x02_mac.c
bdbc9311f10f platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning
3446e5ecdf91 block: ataflop: fix breakage introduced at blk-mq refactoring
2918a29fc8ba mmc: mxs-mmc: disable regulator on error and in the remove function
b631c603b5fb net: stream: don't purge sk_error_queue in sk_stream_kill_queues()
f27fbff86280 drm/msm: uninitialized variable in msm_gem_import()
32ac072c24b5 ath10k: fix max antenna gain unit
218fb43ffff0 hwmon: (pmbus/lm25066) Let compiler determine outer dimension of lm25066_coeff
8384c4a7bcb3 hwmon: Fix possible memleak in __hwmon_device_register()
f7fd072039d6 net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE
9498f5272a44 memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host()
5f462b38ce7a memstick: avoid out-of-range warning
3a7525d5d7bf mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured
dc73f7cae11d b43: fix a lower bounds test
1b6365fdae77 b43legacy: fix a lower bounds test
c51ac7fd0256 hwrng: mtk - Force runtime pm ops for sleep ops
52d2cdab5288 crypto: qat - disregard spurious PFVF interrupts
4d7881430ffb crypto: qat - detect PFVF collision after ACK
a3d3f9c5dca3 media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable()
73dd601bec0d netfilter: nft_dynset: relax superfluous check on set updates
62f6260f7065 EDAC/amd64: Handle three rank interleaving mode
f399e650c095 ath9k: Fix potential interrupt storm on queue reset
843ff688eb83 media: em28xx: Don't use ops->suspend if it is NULL
e577924b7021 cpuidle: Fix kobject memory leaks in error paths
18fdbdbecf72 crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency
a993159a2ad0 kprobes: Do not use local variable when creating debugfs file
71411bd79e24 media: cx23885: Fix snd_card_free call on null card pointer
1c2c8030e7eb media: tm6000: Avoid card name truncation
61266f852fb5 media: si470x: Avoid card name truncation
4e65b9ec2158 media: radio-wl1273: Avoid card name truncation
8eeec127d5cf media: mtk-vpu: Fix a resource leak in the error handling path of 'mtk_vpu_probe()'
2b9ae7bac92e media: TDA1997x: handle short reads of hdmi info frame.
23b65152a069 media: dvb-usb: fix ununit-value in az6027_rc_query
e2b2d221a446 media: cxd2880-spi: Fix a null pointer dereference on error handling path
f46da0c6af3a media: em28xx: add missing em28xx_close_extension
14f3d77c770d drm/amdgpu: fix warning for overflow check
465dc8a1b1c1 ath10k: Fix missing frame timestamp for beacon/probe-resp
7c12c2fe4568 net: dsa: rtl8366rb: Fix off-by-one bug
674637270edd rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies()
d4cd7a167c87 crypto: caam - disable pkc for non-E SoCs
555fe5734d39 Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync
8c68d12f1a37 wilc1000: fix possible memory leak in cfg_scan_result()
1713b856345d cgroup: Make rebind_subsystems() disable v2 controllers all at once
bd76ec43f14e net: net_namespace: Fix undefined member in key_remove_domain()
3a37742128ea virtio-gpu: fix possible memory allocation failure
606c95078a4e drm/v3d: fix wait for TMU write combiner flush
6a93d8ebb8aa rcu: Fix existing exp request check in sync_sched_exp_online_cleanup()
6237a1685c28 Bluetooth: fix init and cleanup of sco_conn.timeout_work
28c1d965622f selftests/bpf: Fix strobemeta selftest regression
f2c04d46c8de netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream state
0c2acfede5ac parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling
cbe28724277c parisc/unwind: fix unwinder when CONFIG_64BIT is enabled
a9a411adcac8 task_stack: Fix end_of_stack() for architectures with upwards-growing stack
c06cf3b1d049 parisc: fix warning in flush_tlb_all
732441923321 x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted
ad67a7e2ab13 spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in bcm_qspi_probe()
a15fc58933aa btrfs: do not take the uuid_mutex in btrfs_rm_device
aba1db41dde7 net: annotate data-race in neigh_output()
2f78cb7eccb6 vrf: run conntrack only in context of lower/physdev for locally generated packets
5919f02e185b ARM: 9136/1: ARMv7-M uses BE-8, not BE-32
d99f320a1b7e gre/sit: Don't generate link-local addr if addr_gen_mode is IN6_ADDR_GEN_MODE_NONE
9929b3db46c9 ARM: clang: Do not rely on lr register for stacktrace
681a426e6ba4 smackfs: use __GFP_NOFAIL for smk_cipso_doi()
4752a9c3a079 iwlwifi: mvm: disable RX-diversity in powersave
41e583edb1d2 selftests: kvm: fix mismatched fclose() after popen()
4411d0d8df2b PM: hibernate: Get block device exclusively in swsusp_check()
a528d3aac3ef nvme: drop scan_lock and always kick requeue list when removing namespaces
209c39b3f5e9 nvmet-tcp: fix use-after-free when a port is removed
81d11e40fdbb nvmet: fix use-after-free when a port is removed
1ec1ca2be9c6 block: remove inaccurate requeue check
bfde056402c7 mwl8k: Fix use-after-free in mwl8k_fw_state_machine()
e4af3e42ba1e tracing/cfi: Fix cmp_entries_* functions signature mismatch
caeb6bae7553 workqueue: make sysfs of unbound kworker cpumask more clever
58b4e0c075d5 lib/xz: Validate the value before assigning it to an enum variable
8cdab20660f0 lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
eb8f087201b5 memstick: r592: Fix a UAF bug when removing the driver
2226ad031436 leaking_addresses: Always print a trailing newline
63c3c7b699d2 ACPI: battery: Accept charges over the design capacity as full
2efb81b22d2d iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value
d5fb057f2364 ath: dfs_pattern_detector: Fix possible null-pointer dereference in channel_detector_create()
e2c27194fcd9 tracefs: Have tracefs directories not set OTH permission bits by default
ace6e7fe9645 net-sysfs: try not to restart the syscall if it will fail eventually
d8d1d3540561 media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte()
382e7b6458e4 media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info
e5f9be486976 media: ipu3-imgu: imgu_fmt: Handle properly try
cdf338e1dbf1 ACPICA: Avoid evaluating methods too early during system resume
9ff00d0b1d35 ipmi: Disable some operations during a panic
4bba26f89e66 media: rcar-csi2: Add checking to rcsi2_start_receiver()
c08a655ed938 brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet
f64551db5299 ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK
31b784864736 media: mceusb: return without resubmitting URB in case of -EPROTO error.
e419469adfd4 media: imx: set a media_device bus_info string
b2b2f9178250 media: s5p-mfc: Add checking to s5p_mfc_probe().
6b8ab552e24c media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe()
bc4af8c782eb media: uvcvideo: Set unique vdev name based in type
7a646855d6a0 media: uvcvideo: Return -EIO for control errors
ab7fca0eaefb media: uvcvideo: Set capability in s_param
bff0833e2b7a media: stm32: Potential NULL pointer dereference in dcmi_irq_thread()
cede36511c3b media: netup_unidvb: handle interrupt properly according to the firmware
3fe3d04354ae media: mt9p031: Fix corrupted frame after restarting stream
08743f9c4801 ath10k: high latency fixes for beacon buffer
fadb4cd750f4 mwifiex: Properly initialize private structure on interface type changes
7d3e6635c22a mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type
480c240ab6df x86: Increase exception stack sizes
91b9c23b6d5b smackfs: Fix use-after-free in netlbl_catmap_walk()
31df731c8705 net: sched: update default qdisc visibility after Tx queue cnt changes
a82f379378ab locking/lockdep: Avoid RCU-induced noinstr fail
f14eca60bf23 MIPS: lantiq: dma: reset correct number of channel
ca07aff2575d MIPS: lantiq: dma: add small delay after reset
e5ea3dca9497 platform/x86: wmi: do not fail if disabling fails
b57df4d6fc13 drm/panel-orientation-quirks: add Valve Steam Deck
67bd269a84ce Bluetooth: fix use-after-free error in lock_sock_nested()
d416020f1a9c Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
a52bd11b2410 drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6
e5ca76568a61 drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1
c19cabfa5537 drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2)
46a25b7a25a0 dma-buf: WARN on dmabuf release with pending attachments
1bee9e59c67b USB: chipidea: fix interrupt deadlock
8a643c0f95e8 USB: iowarrior: fix control-message timeouts
32858116748e USB: serial: keyspan: fix memleak on probe errors
8ce0bc6962df iio: dac: ad5446: Fix ad5622_write() return value
f01e16d32495 pinctrl: core: fix possible memory leak in pinctrl_enable()
270541cbc056 quota: correct error number in free_dqentry()
10b808307d37 quota: check block number when reading the block in quota file
a509a515f378 PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG
0ea58b9bb9cf PCI: aardvark: Fix return value of MSI domain .alloc() method
ee9cdca4d61b PCI: aardvark: Fix reporting Data Link Layer Link Active
6f99c7a51e0a PCI: aardvark: Do not unmask unused interrupts
d964886327ba PCI: aardvark: Fix checking for link up via LTSSM state
e0269c0c81b8 PCI: aardvark: Do not clear status bits of masked interrupts
50b0ce94fbcc PCI: pci-bridge-emul: Fix emulation of W1C bits
3d995568c9bb xen/balloon: add late_initcall_sync() for initial ballooning done
3f6255a91bf3 ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume
6225a31b2eb6 ALSA: mixer: oss: Fix racy access to slots
e9adf72bdbd5 serial: core: Fix initializing and restoring termios speed
b535b634645f powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found
bfefc5d6f953 can: j1939: j1939_can_recv(): ignore messages with invalid source address
94a3f521e3b6 can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport
8e61c799c81e KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use
654a8248169e power: supply: max17042_battery: use VFSOC for capacity when no rsns
11129762e31a power: supply: max17042_battery: Prevent int underflow in set_soc_threshold
625c3ed247e1 signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT
ec5ef8d4d795 signal: Remove the bogus sigkill_pending in ptrace_stop
28c70d50363d RDMA/qedr: Fix NULL deref for query_qp on the GSI QP
91a29609bd6f rsi: Fix module dev_oper_mode parameter description
9defe9b1ab34 rsi: fix rate mask set leading to P2P failure
2f1f06be3eb5 rsi: fix key enabled check causing unwanted encryption for vap_id > 0
1fa1da8a60ff rsi: fix occasional initialisation failure with BT coex
398e7e5add0c wcn36xx: handle connection loss indication
4a67355383f3 libata: fix checking of DMA state
6f2f91b9df15 mwifiex: Read a PCI register after writing the TX ring write pointer
3991cdc40fc1 wcn36xx: Fix HT40 capability for 2Ghz band
301d33c95441 evm: mark evm_fixmode as __ro_after_init
e1f71a32899a rtl8187: fix control-message timeouts
76d2ce7ca9dc PCI: Mark Atheros QCA6174 to avoid bus reset
3110371c7af6 ath10k: fix division by zero in send path
2b94d10056f9 ath10k: fix control-message timeout
cfbe74d8b131 ath6kl: fix control-message timeout
1a2fe1c3d87f ath6kl: fix division by zero in send path
78ebff828a33 mwifiex: fix division by zero in fw download path
08501eb9ff6a EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
a147922924ab regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default-dvs-idx property
c9e5a005960b regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled
3baa5886d128 hwmon: (pmbus/lm25066) Add offset coefficients
98bea923793f ia64: kprobes: Fix to pass correct trampoline address to the handler
ddb54bf3b764 btrfs: call btrfs_check_rw_degradable only if there is a missing device
5223324ed1a9 btrfs: fix lost error handling when replaying directory deletes
c25984fa182f btrfs: clear MISSING device status bit in btrfs_close_one_device
87a87c82f7f3 net/smc: Correct spelling mistake to TCPF_SYN_RECV
cc14499b9dde nfp: bpf: relax prog rejection for mtu check through max_pkt_offset
a62d43084165 vmxnet3: do not stop tx queues after netif_device_detach()
17dcecf20ce7 r8169: Add device 10ec:8162 to driver r8169
e84b38e57821 nvmet-tcp: fix header digest verification
2804181e1b91 drm: panel-orientation-quirks: Add quirk for GPD Win3
7273488fd373 watchdog: Fix OMAP watchdog early handling
5ffdddcf28a1 net: multicast: calculate csum of looped-back and forwarded packets
9420e2496d45 spi: spl022: fix Microwire full duplex mode
1a667bc32918 nvmet-tcp: fix a memory leak when releasing a queue
2f3860ba601a xen/netfront: stop tx queues during live migration
de649ec7ad84 bpf: Prevent increasing bpf_jit_limit above max
df8665c3983e bpf: Define bpf_jit_alloc_exec_limit for arm64 JIT
8dd688ba675a drm: panel-orientation-quirks: Add quirk for Aya Neo 2021
c4282bb80519 mmc: winbond: don't build on M68K
05f0a97e2ff7 reset: socfpga: add empty driver allowing consumers to probe
dfa8fb782b52 ARM: dts: sun7i: A20-olinuxino-lime2: Fix ethernet phy-mode
f09014e8bea8 hyperv/vmbus: include linux/bitops.h
054fe50d2654 sfc: Don't use netif_info before net_device setup
82005afbb30b cavium: Fix return values of the probe function
9f5fd5aab85f scsi: qla2xxx: Fix unmap of already freed sgl
96183337e97d scsi: qla2xxx: Return -ENOMEM if kzalloc() fails
8e3a0d28edb6 cavium: Return negative value when pci_alloc_irq_vectors() fails
58608e80d627 x86/irq: Ensure PI wakeup handler is unregistered before module unload
7252cb96e410 x86/cpu: Fix migration safety with X86_BUG_NULL_SEL
e3d4ba338b98 x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c
ccc4e5e60b41 fuse: fix page stealing
9505d4872188 ALSA: timer: Unconditionally unlink slave instances, too
2c6446168f07 ALSA: timer: Fix use-after-free problem
246c6a1fe356 ALSA: synth: missing check for possible NULL after the call to kstrdup
ce9f7535ec26 ALSA: usb-audio: Add registration quirk for JBL Quantum 400
7da6f4c5c21c ALSA: line6: fix control and interrupt message timeouts
4a12e624e597 ALSA: 6fire: fix control and bulk message timeouts
ab3f823af278 ALSA: ua101: fix division by zero at probe
a3bb6e0db72b ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED
40243342d297 ALSA: hda/realtek: Add quirk for ASUS UX550VE
8af6ade7ac5e ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N
809416fe0a7a ALSA: hda/realtek: Add quirk for Clevo PC70HS
638b53d67ffc media: v4l2-ioctl: Fix check_ext_ctrls
8c11269bd619 media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers
bbd62d2fca94 media: ite-cir: IR receiver stop working after receive overflow
eef6cb3d3c92 crypto: s5p-sss - Add error handling in s5p_aes_probe()
d7a5d872b414 firmware/psci: fix application of sizeof to pointer
18f0fb57a9fe tpm: Check for integer overflow in tpm2_map_response_body()
f38f3da360a6 parisc: Fix ptrace check on syscall return
acbc2a08ea7c mmc: dw_mmc: Dont wait for DRTO on Write RSP error
5ee76475f82a scsi: qla2xxx: Fix use after free in eh_abort path
cc5b13948838 scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file
617d2fd48da5 ocfs2: fix data corruption on truncate
c20eb9551c52 libata: fix read log timeout value
69c2199f49fb Input: i8042 - Add quirk for Fujitsu Lifebook T725
17ec1c6b45a7 Input: elantench - fix misreporting trackpoint coordinates
ce4bec0a54a4 Input: iforce - fix control-message timeout
db39f49ee7d5 binder: use cred instead of task for getsecid
fc9c470cd519 binder: use cred instead of task for selinux checks
28a1e470b000 binder: use euid from cred instead of using task
3e87c4996de1 usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform
3fa7efd1fab1 xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay

(From OE-Core rev: 638171722cc6bfde01bf71a83af1a7c104ec54aa)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Bruce Ashfield
4750894a6a linux-yocto/5.4: update to v5.4.159
Updating linux-yocto/5.4 to the latest korg -stable release that comprises
the following commits:

    5915b0ea6746 Linux 5.4.159
    abc49cc45d0a rsi: fix control-message timeout
    64e6632ab4c1 media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init
    6c382b63658e staging: rtl8192u: fix control-message timeouts
    f66258cb60e4 staging: r8712u: fix control-message timeout
    88a252ff782c comedi: vmk80xx: fix bulk and interrupt message timeouts
    1ae4715121a5 comedi: vmk80xx: fix bulk-buffer overflow
    199acd8c110e comedi: vmk80xx: fix transfer-buffer overflows
    b0156b7c9649 comedi: ni_usb6501: fix NULL-deref in command paths
    3efb7af8ac43 comedi: dt9812: fix DMA buffers on stack
    6e80e9314f8b isofs: Fix out of bound access for corrupted isofs image
    adc56dbfc4aa printk/console: Allow to disable console output by using console="" or console=null
    589ac131b3ab binder: don't detect sender/target during buffer cleanup
    b60e89b63eb9 usb-storage: Add compatibility quirk flags for iODD 2531/2541
    5c3eba290479 usb: musb: Balance list entry in musb_gadget_queue
    161571745de1 usb: gadget: Mark USB_FSL_QE broken on 64-bit
    d6013265a779 usb: ehci: handshake CMD_RUN instead of STS_HALT
    6d000e1c1625 Revert "x86/kvm: fix vcpu-id indexed array sizes"

(From OE-Core rev: 9c37c738a645b472175b93431deb47b47a1442e7)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Mingli Yu
3e9902aa6c bootchart2: remove wait_boot logic
When boot with "init=/sbin/bootchartd" as below:
 # runqemu qemux86 bootparams="init=/sbin/bootchartd"

There are two bootchartd process after boot [1].
 # ps -ef | grep bootchart
root       101     1  0 03:27 ?        00:00:00 /bin/sh /sbin/bootchartd
root       103   101  8 03:27 ?        00:00:02 /lib64/bootchart/bootchart-collector 50
root       106     1  0 03:27 ?        00:00:00 /bin/sh /sbin/bootchartd
root       792   106  0 03:27 ?        00:00:00 /lib64/bootchart/bootchart-collector --usleep 1000000
root       794   725  0 03:27 ttyS0    00:00:00 grep bootchart

 # /sbin/bootchartd stop
[bootchart] bootchart-collector started as pid 596 with 2 args:
[bootchart] '--dump'
[bootchart] '/tmp/bootchart.3lXpVDAq3v'
[bootchart] Extracting profile data from pid 204
[bootchart] map 0xbed9a000 -> 0xbedbb000 size: 132k from 'bed9a000' 'bedbb000'
[bootchart] read 135168 bytes of 135168
[bootchart] reading 150 chunks (of 150) ...
[bootchart] wrote 18760 kbB
[bootchart] bootchart-collector pid: 596 unmounted proc / clean exit

But there still one process exist after the above stop command finish.
 # ps -ef | grep bootchartd
root 202 1 0 09:09 ? 00:00:00 /bin/sh /sbin/bootchartd
root 629 516 0 09:10 ? 00:00:00 grep bootchartd

Remove the wait_boot which used to wait the boot process to finish to
make sure only one bootchartd process and meanwhile we don't need the
wait_boot logic because we either use "/sbin/bootchartd stop" to stop
the bootchartd manually or install package bootchartd-stop-initscript
altogether with bootchart2 to stop bootchartd automatically after boot.

After patch:
 # ps -ef | grep bootchart
 root       101     1  0 03:36 ?        00:00:00 /bin/sh /sbin/bootchartd
 root       103   101  6 03:36 ?        00:00:04 /lib64/bootchart/bootchart-collector 50
 root       596   592  0 03:37 ttyS0    00:00:00 grep bootchart

[1] https://github.com/xrmx/bootchart/issues/94

(From OE-Core rev: 058d6f5e6186c136c834fdb1303e28c6b9402ccd)

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit cc34e3bdedc045baf97ebc2258295d9433cb332e)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Ernst Sjöstrand
11880c6987 dropbear: Fix CVE-2020-36254
Dropbear shares a lot of code with other SSH implementations, so this is
a port of CVE-2018-20685 to dropbear by the dropbear developers.

Reference:
8f8a3dff70

CVE: CVE-2020-36254
Upstream-Status: Backport

(From OE-Core rev: 10712b736d7cbde897c5aab30e969c04740dce34)

Signed-off-by: Ernst Sjöstrand <ernst.sjostrand@verisure.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Minjae Kim
1e13a3f914 inetutils: fix CVE-2021-40491
The ftp client in GNU Inetutils before 2.2 does not validate addresses
returned by PASV/LSPV responses to make sure they match the server
address. This is similar to CVE-2020-8284 for curl.

References:
https://nvd.nist.gov/vuln/detail/CVE-2021-40491

Patch from:
https://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=58cb043b190fd04effdaea7c9403416b436e50dd

(From OE-Core rev: 22de3b937dda28a6aa4113549f32f36d67b6751d)

Signed-off-by: Minjae Kim <flowergom@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Minjae Kim
9564dc31cb vim: fix CVE-2021-4069
Use After Free in vim/vim

Upstream-Status: Backport [e031fe90cf]
CVE: CVE-2021-4069
(From OE-Core rev: 9db3b4ac4018bcaedb995bc77a9e675c2bca468f)

Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
sana kazi
bd07080415 openssh: Whitelist CVE-2016-20012
Whitelist CVE-2016-20012 as the upstream OpenSSH developers
see this as an important security feature and do not intend to
'fix' it.
Link: https://security-tracker.debian.org/tracker/CVE-2016-20012
https://ubuntu.com/security/CVE-2016-20012

(From OE-Core rev: 79c677e994399611819e1e382b3e1b0be16eb6e1)

Signed-off-by: Sana Kazi <Sana.Kazi@kpit.com>
Signed-off-by: Sana Kazi <sanakazisk19@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
sana kazi
f4a6761f47 openssh: Fix CVE-2021-41617
Add patch to fix CVE-2021-41617
Link: https://bugzilla.suse.com/attachment.cgi?id=854015

(From OE-Core rev: a4e272700e18ca7e86e24ce4e24031ce7745c87b)

Signed-off-by: Sana Kazi <Sana.Kazi@kpit.com>
Signed-off-by: Sana Kazi <sanakazisk19@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
Marta Rybczynska
30231b2354 bluez: fix CVE-2021-0129
Improper access control in BlueZ may allow an authenticated user to
potentially enable information disclosure via adjacent access.

This issue can be fixed in the kernel, in BlueZ or both. This patch
fixes it on the BlueZ side, so that the configuration no longer
depends on the kernel fix.

https://nvd.nist.gov/vuln/detail/CVE-2021-012

(From OE-Core rev: 573ff24c5ba7836b4dd7f95b6e7c7244b80f9d00)

Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-30 16:59:16 +00:00
96 changed files with 4010 additions and 124 deletions

View File

@@ -624,6 +624,16 @@ class CommandsAsync:
command.finishAsyncCommand()
findFilesMatchingInDir.needcache = False
def testCookerCommandEvent(self, command, params):
"""
Dummy command used by OEQA selftest to test tinfoil without IO
"""
pattern = params[0]
command.cooker.testCookerCommandEvent(pattern)
command.finishAsyncCommand()
testCookerCommandEvent.needcache = False
def findConfigFilePath(self, command, params):
"""
Find the path of the requested configuration file

View File

@@ -1019,6 +1019,11 @@ class BBCooker:
if matches:
bb.event.fire(bb.event.FilesMatchingFound(filepattern, matches), self.data)
def testCookerCommandEvent(self, filepattern):
# Dummy command used by OEQA selftest to test tinfoil without IO
matches = ["A", "B"]
bb.event.fire(bb.event.FilesMatchingFound(filepattern, matches), self.data)
def findProviders(self, mc=''):
return bb.providers.findProviders(self.databuilder.mcdata[mc], self.recipecaches[mc], self.recipecaches[mc].pkg_pn)

View File

@@ -1290,9 +1290,6 @@ class FetchCheckStatusTest(FetcherTest):
"http://downloads.yoctoproject.org/releases/opkg/opkg-0.1.7.tar.gz",
"http://downloads.yoctoproject.org/releases/opkg/opkg-0.3.0.tar.gz",
"ftp://sourceware.org/pub/libffi/libffi-1.20.tar.gz",
"http://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz",
"https://ftp.gnu.org/gnu/chess/gnuchess-5.08.tar.gz",
"https://ftp.gnu.org/gnu/gmp/gmp-4.0.tar.gz",
# GitHub releases are hosted on Amazon S3, which doesn't support HEAD
"https://github.com/kergoth/tslib/releases/download/1.1/tslib-1.1.tar.xz"
]

View File

@@ -16,7 +16,8 @@ import bb.msg
import multiprocessing
import fcntl
import importlib
from importlib import machinery
import importlib.machinery
import importlib.util
import itertools
import subprocess
import glob
@@ -1584,7 +1585,9 @@ def load_plugins(logger, plugins, pluginpath):
logger.debug(1, 'Loading plugin %s' % name)
spec = importlib.machinery.PathFinder.find_spec(name, path=[pluginpath] )
if spec:
return spec.loader.load_module()
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
return mod
logger.debug(1, 'Loading plugins from %s...' % pluginpath)

View File

@@ -12,6 +12,7 @@ import math
import os
import signal
import socket
import sys
import time
from . import chunkify, DEFAULT_MAX_CHUNK
@@ -419,9 +420,14 @@ class Server(object):
self._cleanup_socket = None
def start_tcp_server(self, host, port):
self.server = self.loop.run_until_complete(
asyncio.start_server(self.handle_client, host, port)
)
if sys.version_info[0] == 3 and sys.version_info[1] < 6:
self.server = self.loop.run_until_complete(
asyncio.start_server(self.handle_client, host, port, loop=self.loop)
)
else:
self.server = self.loop.run_until_complete(
asyncio.start_server(self.handle_client, host, port)
)
for s in self.server.sockets:
logger.info('Listening on %r' % (s.getsockname(),))
@@ -444,9 +450,14 @@ class Server(object):
try:
# Work around path length limits in AF_UNIX
os.chdir(os.path.dirname(path))
self.server = self.loop.run_until_complete(
asyncio.start_unix_server(self.handle_client, os.path.basename(path))
)
if sys.version_info[0] == 3 and sys.version_info[1] < 6:
self.server = self.loop.run_until_complete(
asyncio.start_unix_server(self.handle_client, os.path.basename(path), loop=self.loop)
)
else:
self.server = self.loop.run_until_complete(
asyncio.start_unix_server(self.handle_client, os.path.basename(path))
)
finally:
os.chdir(cwd)

View File

@@ -16,7 +16,7 @@ import os
import sys
import datetime
current_version = "3.1.12"
current_version = "3.1.13"
bitbake_version = "1.46"
# String used in sidebar

View File

@@ -1,11 +1,11 @@
DISTRO : "3.1.12"
DISTRO : "3.1.13"
DISTRO_NAME_NO_CAP : "dunfell"
DISTRO_NAME : "Dunfell"
DISTRO_NAME_NO_CAP_MINUS_ONE : "zeus"
YOCTO_DOC_VERSION : "3.1.12"
YOCTO_DOC_VERSION : "3.1.13"
YOCTO_DOC_VERSION_MINUS_ONE : "3.0.4"
DISTRO_REL_TAG : "yocto-3.1.12"
POKYVERSION : "23.0.12"
DISTRO_REL_TAG : "yocto-3.1.13"
POKYVERSION : "23.0.13"
YOCTO_POKY : "poky-&DISTRO_NAME_NO_CAP;-&POKYVERSION;"
YOCTO_DL_URL : "https://downloads.yoctoproject.org"
YOCTO_AB_URL : "https://autobuilder.yoctoproject.org"

View File

@@ -331,22 +331,19 @@ file as a patch file:
file://file;apply=yes \
"
Conversely, if you have a directory full of patch files and you want to
exclude some so that the ``do_patch`` task does not apply them during
the patch phase, you can use the "apply=no" parameter with the
``SRC_URI`` statement:
::
Conversely, if you have a file whose file type is ``.patch`` or ``.diff``
and you want to exclude it so that the ``do_patch`` task does not apply
it during the patch phase, you can use the "apply=no" parameter with the
:term:`SRC_URI` statement::
SRC_URI = " \
git://path_to_repo/some_package \
file://path_to_lots_of_patch_files \
file://path_to_lots_of_patch_files/patch_file5;apply=no \
file://file1.patch \
file://file2.patch;apply=no \
"
In the
previous example, assuming all the files in the directory holding the
patch files end with either ``.patch`` or ``.diff``, every file would be
applied as a patch by default except for the ``patch_file5`` patch.
In the previous example ``file1.patch`` would be applied as a patch by default
while ``file2.patch`` would not be applied.
You can find out more about the patching process in the
":ref:`patching-dev-environment`" section in

View File

@@ -38,6 +38,7 @@ Release Series 3.1 (dunfell)
- :yocto_docs:`3.1.10 Documentation </3.1.10>`
- :yocto_docs:`3.1.11 Documentation </3.1.11>`
- :yocto_docs:`3.1.12 Documentation </3.1.12>`
- :yocto_docs:`3.1.13 Documentation </3.1.13>`
==========================
Outdated Release Manuals

View File

@@ -6,7 +6,7 @@
'3.4.1': '3.4.1',
'3.3.4': '3.3.4',
'3.2.4': '3.2.4',
'3.1.12': '3.1.12',
'3.1.13': '3.1.13',
'3.0.4': '3.0.4',
'2.7.4': '2.7.4',
};

View File

@@ -1,6 +1,6 @@
DISTRO = "poky"
DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
DISTRO_VERSION = "3.1.13"
DISTRO_VERSION = "3.1.14"
DISTRO_CODENAME = "dunfell"
SDK_VENDOR = "-pokysdk"
SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${DATE}', 'snapshot')}"

View File

@@ -7,8 +7,8 @@ KMACHINE_genericx86 ?= "common-pc"
KMACHINE_genericx86-64 ?= "common-pc-64"
KMACHINE_beaglebone-yocto ?= "beaglebone"
SRCREV_machine_genericx86 ?= "31db2b47ac7d8508080fbb7344399b501216de66"
SRCREV_machine_genericx86-64 ?= "31db2b47ac7d8508080fbb7344399b501216de66"
SRCREV_machine_genericx86 ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_machine_genericx86-64 ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_machine_edgerouter ?= "706efec4c1e270ec5dda92275898cd465dfdc7dd"
SRCREV_machine_beaglebone-yocto ?= "706efec4c1e270ec5dda92275898cd465dfdc7dd"
@@ -17,7 +17,7 @@ COMPATIBLE_MACHINE_genericx86-64 = "genericx86-64"
COMPATIBLE_MACHINE_edgerouter = "edgerouter"
COMPATIBLE_MACHINE_beaglebone-yocto = "beaglebone-yocto"
LINUX_VERSION_genericx86 = "5.4.94"
LINUX_VERSION_genericx86-64 = "5.4.94"
LINUX_VERSION_genericx86 = "5.4.158"
LINUX_VERSION_genericx86-64 = "5.4.158"
LINUX_VERSION_edgerouter = "5.4.58"
LINUX_VERSION_beaglebone-yocto = "5.4.58"

View File

@@ -110,7 +110,8 @@ python do_cve_check () {
}
addtask cve_check before do_build after do_fetch
do_cve_check[depends] = "cve-update-db-native:do_populate_cve_db"
do_cve_check[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}"
do_cve_check[depends] = "cve-update-db-native:do_fetch"
do_cve_check[nostamp] = "1"
python cve_check_cleanup () {

View File

@@ -576,6 +576,7 @@ RECIPE_MAINTAINER_pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravch
RECIPE_MAINTAINER_pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
RECIPE_MAINTAINER_pn-python3-dbus = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
RECIPE_MAINTAINER_pn-python3-docutils = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
RECIPE_MAINTAINER_pn-python3-dtschema-wrapper = "Bruce Ashfield <bruce.ashfield@gmail.com>"
RECIPE_MAINTAINER_pn-python3-pycryptodome = "Joshua Watt <JPEWhacker@gmail.com>"
RECIPE_MAINTAINER_pn-python3-pycryptodomex = "Joshua Watt <JPEWhacker@gmail.com>"
RECIPE_MAINTAINER_pn-python3-extras = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"

View File

@@ -41,7 +41,7 @@ def find_git_folder(d, sourcedir):
for root, dirs, files in os.walk(workdir, topdown=True):
dirs[:] = [d for d in dirs if d not in exclude]
if '.git' in dirs:
return root
return os.path.join(root, ".git")
bb.warn("Failed to find a git repository in WORKDIR: %s" % workdir)
return None

View File

@@ -61,6 +61,8 @@ common_errors = [
"[rdrand]: Initialization Failed",
"[pulseaudio] authkey.c: Failed to open cookie file",
"[pulseaudio] authkey.c: Failed to load authentication key",
"was skipped because of a failed condition check",
"was skipped because all trigger condition checks failed",
]
video_related = [

View File

@@ -157,7 +157,7 @@ SSTATE_DIR = \"${TOPDIR}/download-selftest\"
""")
self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
data = 'SRC_URI = "${GNU_MIRROR}/aspell/aspell-${PV}.tar.gz;downloadfilename=test-aspell.tar.gz"'
data = 'SRC_URI = "https://downloads.yoctoproject.org/mirror/sources/aspell-${PV}.tar.gz;downloadfilename=test-aspell.tar.gz"'
self.write_recipeinc('aspell', data)
result = bitbake('-f -c fetch aspell', ignore_status=True)
self.delete_recipeinc('aspell')

View File

@@ -181,6 +181,10 @@ class TestImage(OESelftestTestCase):
self.skipTest('virgl isn\'t working with Centos 7')
if distro and distro == 'centos-8':
self.skipTest('virgl isn\'t working with Centos 8')
if distro and distro == 'fedora-34':
self.skipTest('virgl isn\'t working with Fedora 34')
if distro and distro == 'fedora-35':
self.skipTest('virgl isn\'t working with Fedora 35')
if distro and distro == 'opensuseleap-15.0':
self.skipTest('virgl isn\'t working with Opensuse 15.0')

View File

@@ -94,16 +94,15 @@ class TinfoilTests(OESelftestTestCase):
pass
pattern = 'conf'
res = tinfoil.run_command('findFilesMatchingInDir', pattern, 'conf/machine')
res = tinfoil.run_command('testCookerCommandEvent', pattern)
self.assertTrue(res)
eventreceived = False
commandcomplete = False
start = time.time()
# Wait for maximum 60s in total so we'd detect spurious heartbeat events for example
# The test is IO load sensitive too
# Wait for maximum 120s in total so we'd detect spurious heartbeat events for example
while (not (eventreceived == True and commandcomplete == True)
and (time.time() - start < 60)):
and (time.time() - start < 120)):
# if we received both events (on let's say a good day), we are done
event = tinfoil.wait_event(1)
if event:
@@ -111,7 +110,8 @@ class TinfoilTests(OESelftestTestCase):
commandcomplete = True
elif isinstance(event, bb.event.FilesMatchingFound):
self.assertEqual(pattern, event._pattern)
self.assertIn('qemuarm.conf', event._matches)
self.assertIn('A', event._matches)
self.assertIn('B', event._matches)
eventreceived = True
elif isinstance(event, logging.LogRecord):
continue

View File

@@ -0,0 +1,76 @@
From 0d237c0b90f0c6d4a3662c569b2371ae3ed69574 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Mon, 28 Sep 2020 20:08:41 +0200
Subject: [PATCH] acpi: Don't register the acpi command when locked down
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The command is not allowed when lockdown is enforced. Otherwise an
attacker can instruct the GRUB to load an SSDT table to overwrite
the kernel lockdown configuration and later load and execute
unsigned code.
Fixes: CVE-2020-14372
Reported-by: Máté Kukri <km@mkukri.xyz>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=3e8e4c0549240fa209acffceb473e1e509b50c95]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 5 +++++
grub-core/commands/acpi.c | 15 ++++++++-------
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index 0786427..47ac7ff 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -3986,6 +3986,11 @@ Normally, this command will replace the Root System Description Pointer
(RSDP) in the Extended BIOS Data Area to point to the new tables. If the
@option{--no-ebda} option is used, the new tables will be known only to
GRUB, but may be used by GRUB's EFI emulation.
+
+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
+ Otherwise an attacker can instruct the GRUB to load an SSDT table to
+ overwrite the kernel lockdown configuration and later load and execute
+ unsigned code.
@end deffn
diff --git a/grub-core/commands/acpi.c b/grub-core/commands/acpi.c
index 5a1499a..1215f2a 100644
--- a/grub-core/commands/acpi.c
+++ b/grub-core/commands/acpi.c
@@ -27,6 +27,7 @@
#include <grub/mm.h>
#include <grub/memory.h>
#include <grub/i18n.h>
+#include <grub/lockdown.h>
#ifdef GRUB_MACHINE_EFI
#include <grub/efi/efi.h>
@@ -775,13 +776,13 @@ static grub_extcmd_t cmd;
GRUB_MOD_INIT(acpi)
{
- cmd = grub_register_extcmd ("acpi", grub_cmd_acpi, 0,
- N_("[-1|-2] [--exclude=TABLE1,TABLE2|"
- "--load-only=TABLE1,TABLE2] FILE1"
- " [FILE2] [...]"),
- N_("Load host ACPI tables and tables "
- "specified by arguments."),
- options);
+ cmd = grub_register_extcmd_lockdown ("acpi", grub_cmd_acpi, 0,
+ N_("[-1|-2] [--exclude=TABLE1,TABLE2|"
+ "--load-only=TABLE1,TABLE2] FILE1"
+ " [FILE2] [...]"),
+ N_("Load host ACPI tables and tables "
+ "specified by arguments."),
+ options);
}
GRUB_MOD_FINI(acpi)

View File

@@ -0,0 +1,130 @@
From fe7a13df6200bda934fcc0246458df249f1ef4f2 Mon Sep 17 00:00:00 2001
From: Marco A Benatto <mbenatto@redhat.com>
Date: Wed, 23 Sep 2020 11:33:33 -0400
Subject: [PATCH] verifiers: Move verifiers API to kernel image
Move verifiers API from a module to the kernel image, so it can be
used there as well. There are no functional changes in this patch.
Signed-off-by: Marco A Benatto <mbenatto@redhat.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=9e95f45ceeef36fcf93cbfffcf004276883dbc99]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/Makefile.am | 1 +
grub-core/Makefile.core.def | 6 +-----
grub-core/kern/main.c | 4 ++++
grub-core/{commands => kern}/verifiers.c | 8 ++------
include/grub/verify.h | 9 ++++++---
5 files changed, 14 insertions(+), 14 deletions(-)
rename grub-core/{commands => kern}/verifiers.c (97%)
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index 3ea8e7f..375c30d 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -90,6 +90,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/verify.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index 474a63e..cff02f2 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -140,6 +140,7 @@ kernel = {
common = kern/rescue_parser.c;
common = kern/rescue_reader.c;
common = kern/term.c;
+ common = kern/verifiers.c;
noemu = kern/compiler-rt.c;
noemu = kern/mm.c;
@@ -942,11 +943,6 @@ module = {
cppflags = '-I$(srcdir)/lib/posix_wrap';
};
-module = {
- name = verifiers;
- common = commands/verifiers.c;
-};
-
module = {
name = shim_lock;
common = commands/efi/shim_lock.c;
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
index 9cad0c4..73967e2 100644
--- a/grub-core/kern/main.c
+++ b/grub-core/kern/main.c
@@ -29,6 +29,7 @@
#include <grub/command.h>
#include <grub/reader.h>
#include <grub/parser.h>
+#include <grub/verify.h>
#ifdef GRUB_MACHINE_PCBIOS
#include <grub/machine/memory.h>
@@ -274,6 +275,9 @@ grub_main (void)
grub_printf ("Welcome to GRUB!\n\n");
grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);
+ /* Init verifiers API. */
+ grub_verifiers_init ();
+
grub_load_config ();
grub_boot_time ("Before loading embedded modules.");
diff --git a/grub-core/commands/verifiers.c b/grub-core/kern/verifiers.c
similarity index 97%
rename from grub-core/commands/verifiers.c
rename to grub-core/kern/verifiers.c
index 0dde481..aa3dc7c 100644
--- a/grub-core/commands/verifiers.c
+++ b/grub-core/kern/verifiers.c
@@ -217,12 +217,8 @@ grub_verify_string (char *str, enum grub_verify_string_type type)
return GRUB_ERR_NONE;
}
-GRUB_MOD_INIT(verifiers)
+void
+grub_verifiers_init (void)
{
grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open);
}
-
-GRUB_MOD_FINI(verifiers)
-{
- grub_file_filter_unregister (GRUB_FILE_FILTER_VERIFY);
-}
diff --git a/include/grub/verify.h b/include/grub/verify.h
index ea04914..cd129c3 100644
--- a/include/grub/verify.h
+++ b/include/grub/verify.h
@@ -64,7 +64,10 @@ struct grub_file_verifier
grub_err_t (*verify_string) (char *str, enum grub_verify_string_type type);
};
-extern struct grub_file_verifier *grub_file_verifiers;
+extern struct grub_file_verifier *EXPORT_VAR (grub_file_verifiers);
+
+extern void
+grub_verifiers_init (void);
static inline void
grub_verifier_register (struct grub_file_verifier *ver)
@@ -78,7 +81,7 @@ grub_verifier_unregister (struct grub_file_verifier *ver)
grub_list_remove (GRUB_AS_LIST (ver));
}
-grub_err_t
-grub_verify_string (char *str, enum grub_verify_string_type type);
+extern grub_err_t
+EXPORT_FUNC (grub_verify_string) (char *str, enum grub_verify_string_type type);
#endif /* ! GRUB_VERIFY_HEADER */

View File

@@ -0,0 +1,431 @@
From d8aac4517fef0f0188a60a2a8ff9cafdd9c7ca42 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Mon, 28 Sep 2020 20:08:02 +0200
Subject: [PATCH] kern: Add lockdown support
When the GRUB starts on a secure boot platform, some commands can be
used to subvert the protections provided by the verification mechanism and
could lead to booting untrusted system.
To prevent that situation, allow GRUB to be locked down. That way the code
may check if GRUB has been locked down and further restrict the commands
that are registered or what subset of their functionality could be used.
The lockdown support adds the following components:
* The grub_lockdown() function which can be used to lockdown GRUB if,
e.g., UEFI Secure Boot is enabled.
* The grub_is_lockdown() function which can be used to check if the GRUB
was locked down.
* A verifier that flags OS kernels, the GRUB modules, Device Trees and ACPI
tables as GRUB_VERIFY_FLAGS_DEFER_AUTH to defer verification to other
verifiers. These files are only successfully verified if another registered
verifier returns success. Otherwise, the whole verification process fails.
For example, PE/COFF binaries verification can be done by the shim_lock
verifier which validates the signatures using the shim_lock protocol.
However, the verification is not deferred directly to the shim_lock verifier.
The shim_lock verifier is hooked into the verification process instead.
* A set of grub_{command,extcmd}_lockdown functions that can be used by
code registering command handlers, to only register unsafe commands if
the GRUB has not been locked down.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=578c95298bcc46e0296f4c786db64c2ff26ce2cc]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
conf/Makefile.common | 2 +
docs/grub-dev.texi | 27 +++++++++++++
docs/grub.texi | 8 ++++
grub-core/Makefile.am | 5 ++-
grub-core/Makefile.core.def | 1 +
grub-core/commands/extcmd.c | 23 +++++++++++
grub-core/kern/command.c | 24 +++++++++++
grub-core/kern/lockdown.c | 80 +++++++++++++++++++++++++++++++++++++
include/grub/command.h | 5 +++
include/grub/extcmd.h | 7 ++++
include/grub/lockdown.h | 44 ++++++++++++++++++++
11 files changed, 225 insertions(+), 1 deletion(-)
create mode 100644 grub-core/kern/lockdown.c
create mode 100644 include/grub/lockdown.h
diff --git a/conf/Makefile.common b/conf/Makefile.common
index 6cd71cb..2a1a886 100644
--- a/conf/Makefile.common
+++ b/conf/Makefile.common
@@ -84,7 +84,9 @@ CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER
CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'
CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
index ee389fd..635ec72 100644
--- a/docs/grub-dev.texi
+++ b/docs/grub-dev.texi
@@ -86,6 +86,7 @@ This edition documents version @value{VERSION}.
* PFF2 Font File Format::
* Graphical Menu Software Design::
* Verifiers framework::
+* Lockdown framework::
* Copying This Manual:: Copying This Manual
* Index::
@end menu
@@ -2086,6 +2087,32 @@ Optionally at the end of the file @samp{fini}, if it exists, is called with just
the context. If you return no error during any of @samp{init}, @samp{write} and
@samp{fini} then the file is considered as having succeded verification.
+@node Lockdown framework
+@chapter Lockdown framework
+
+The GRUB can be locked down, which is a restricted mode where some operations
+are not allowed. For instance, some commands cannot be used when the GRUB is
+locked down.
+
+The function
+@code{grub_lockdown()} is used to lockdown GRUB and the function
+@code{grub_is_lockdown()} function can be used to check whether lockdown is
+enabled or not. When enabled, the function returns @samp{GRUB_LOCKDOWN_ENABLED}
+and @samp{GRUB_LOCKDOWN_DISABLED} when is not enabled.
+
+The following functions can be used to register the commands that can only be
+used when lockdown is disabled:
+
+@itemize
+
+@item @code{grub_cmd_lockdown()} registers command which should not run when the
+GRUB is in lockdown mode.
+
+@item @code{grub_cmd_lockdown()} registers extended command which should not run
+when the GRUB is in lockdown mode.
+
+@end itemize
+
@node Copying This Manual
@appendix Copying This Manual
diff --git a/docs/grub.texi b/docs/grub.texi
index 8779507..d778bfb 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -5581,6 +5581,7 @@ environment variables and commands are listed in the same order.
* Using digital signatures:: Booting digitally signed code
* UEFI secure boot and shim:: Booting digitally signed PE files
* Measured Boot:: Measuring boot components
+* Lockdown:: Lockdown when booting on a secure setup
@end menu
@node Authentication and authorisation
@@ -5794,6 +5795,13 @@ into @file{core.img} in order to avoid a potential gap in measurement between
Measured boot is currently only supported on EFI platforms.
+@node Lockdown
+@section Lockdown when booting on a secure setup
+
+The GRUB can be locked down when booted on a secure boot environment, for example
+if the UEFI secure boot is enabled. On a locked down configuration, the GRUB will
+be restricted and some operations/commands cannot be executed.
+
@node Platform limitations
@chapter Platform limitations
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index 375c30d..3096241 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -79,6 +79,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lockdown.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h
if COND_emu
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/compiler-rt-emu.h
@@ -376,8 +377,10 @@ command.lst: $(MARKER_FILES)
b=`basename $$pp .marker`; \
sed -n \
-e "/EXTCOMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
+ -e "/EXTCOMMAND_LOCKDOWN_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
-e "/P1COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
- -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
+ -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" \
+ -e "/COMMAND_LOCKDOWN_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
done) | sort -u > $@
platform_DATA += command.lst
CLEANFILES += command.lst
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index cff02f2..651ea2a 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -204,6 +204,7 @@ kernel = {
efi = term/efi/console.c;
efi = kern/acpi.c;
efi = kern/efi/acpi.c;
+ efi = kern/lockdown.c;
i386_coreboot = kern/i386/pc/acpi.c;
i386_multiboot = kern/i386/pc/acpi.c;
i386_coreboot = kern/acpi.c;
diff --git a/grub-core/commands/extcmd.c b/grub-core/commands/extcmd.c
index 69574e2..90a5ca2 100644
--- a/grub-core/commands/extcmd.c
+++ b/grub-core/commands/extcmd.c
@@ -19,6 +19,7 @@
#include <grub/mm.h>
#include <grub/list.h>
+#include <grub/lockdown.h>
#include <grub/misc.h>
#include <grub/extcmd.h>
#include <grub/script_sh.h>
@@ -110,6 +111,28 @@ grub_register_extcmd (const char *name, grub_extcmd_func_t func,
summary, description, parser, 1);
}
+static grub_err_t
+grub_extcmd_lockdown (grub_extcmd_context_t ctxt __attribute__ ((unused)),
+ int argc __attribute__ ((unused)),
+ char **argv __attribute__ ((unused)))
+{
+ return grub_error (GRUB_ERR_ACCESS_DENIED,
+ N_("%s: the command is not allowed when lockdown is enforced"),
+ ctxt->extcmd->cmd->name);
+}
+
+grub_extcmd_t
+grub_register_extcmd_lockdown (const char *name, grub_extcmd_func_t func,
+ grub_command_flags_t flags, const char *summary,
+ const char *description,
+ const struct grub_arg_option *parser)
+{
+ if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)
+ func = grub_extcmd_lockdown;
+
+ return grub_register_extcmd (name, func, flags, summary, description, parser);
+}
+
void
grub_unregister_extcmd (grub_extcmd_t ext)
{
diff --git a/grub-core/kern/command.c b/grub-core/kern/command.c
index acd7218..4aabcd4 100644
--- a/grub-core/kern/command.c
+++ b/grub-core/kern/command.c
@@ -17,6 +17,7 @@
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <grub/lockdown.h>
#include <grub/mm.h>
#include <grub/command.h>
@@ -77,6 +78,29 @@ grub_register_command_prio (const char *name,
return cmd;
}
+static grub_err_t
+grub_cmd_lockdown (grub_command_t cmd __attribute__ ((unused)),
+ int argc __attribute__ ((unused)),
+ char **argv __attribute__ ((unused)))
+
+{
+ return grub_error (GRUB_ERR_ACCESS_DENIED,
+ N_("%s: the command is not allowed when lockdown is enforced"),
+ cmd->name);
+}
+
+grub_command_t
+grub_register_command_lockdown (const char *name,
+ grub_command_func_t func,
+ const char *summary,
+ const char *description)
+{
+ if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)
+ func = grub_cmd_lockdown;
+
+ return grub_register_command_prio (name, func, summary, description, 0);
+}
+
void
grub_unregister_command (grub_command_t cmd)
{
diff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c
new file mode 100644
index 0000000..1e56c0b
--- /dev/null
+++ b/grub-core/kern/lockdown.c
@@ -0,0 +1,80 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2020 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <grub/dl.h>
+#include <grub/file.h>
+#include <grub/lockdown.h>
+#include <grub/verify.h>
+
+static int lockdown = GRUB_LOCKDOWN_DISABLED;
+
+static grub_err_t
+lockdown_verifier_init (grub_file_t io __attribute__ ((unused)),
+ enum grub_file_type type,
+ void **context __attribute__ ((unused)),
+ enum grub_verify_flags *flags)
+{
+ *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;
+
+ switch (type & GRUB_FILE_TYPE_MASK)
+ {
+ case GRUB_FILE_TYPE_GRUB_MODULE:
+ case GRUB_FILE_TYPE_LINUX_KERNEL:
+ case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:
+ case GRUB_FILE_TYPE_XEN_HYPERVISOR:
+ case GRUB_FILE_TYPE_BSD_KERNEL:
+ case GRUB_FILE_TYPE_XNU_KERNEL:
+ case GRUB_FILE_TYPE_PLAN9_KERNEL:
+ case GRUB_FILE_TYPE_NTLDR:
+ case GRUB_FILE_TYPE_TRUECRYPT:
+ case GRUB_FILE_TYPE_FREEDOS:
+ case GRUB_FILE_TYPE_PXECHAINLOADER:
+ case GRUB_FILE_TYPE_PCCHAINLOADER:
+ case GRUB_FILE_TYPE_COREBOOT_CHAINLOADER:
+ case GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE:
+ case GRUB_FILE_TYPE_ACPI_TABLE:
+ case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:
+ *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;
+
+ /* Fall through. */
+
+ default:
+ return GRUB_ERR_NONE;
+ }
+}
+
+struct grub_file_verifier lockdown_verifier =
+ {
+ .name = "lockdown_verifier",
+ .init = lockdown_verifier_init,
+ };
+
+void
+grub_lockdown (void)
+{
+ lockdown = GRUB_LOCKDOWN_ENABLED;
+
+ grub_verifier_register (&lockdown_verifier);
+}
+
+int
+grub_is_lockdown (void)
+{
+ return lockdown;
+}
diff --git a/include/grub/command.h b/include/grub/command.h
index eee4e84..2a6f7f8 100644
--- a/include/grub/command.h
+++ b/include/grub/command.h
@@ -86,6 +86,11 @@ EXPORT_FUNC(grub_register_command_prio) (const char *name,
const char *summary,
const char *description,
int prio);
+grub_command_t
+EXPORT_FUNC(grub_register_command_lockdown) (const char *name,
+ grub_command_func_t func,
+ const char *summary,
+ const char *description);
void EXPORT_FUNC(grub_unregister_command) (grub_command_t cmd);
static inline grub_command_t
diff --git a/include/grub/extcmd.h b/include/grub/extcmd.h
index 19fe592..fe9248b 100644
--- a/include/grub/extcmd.h
+++ b/include/grub/extcmd.h
@@ -62,6 +62,13 @@ grub_extcmd_t EXPORT_FUNC(grub_register_extcmd) (const char *name,
const char *description,
const struct grub_arg_option *parser);
+grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_lockdown) (const char *name,
+ grub_extcmd_func_t func,
+ grub_command_flags_t flags,
+ const char *summary,
+ const char *description,
+ const struct grub_arg_option *parser);
+
grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_prio) (const char *name,
grub_extcmd_func_t func,
grub_command_flags_t flags,
diff --git a/include/grub/lockdown.h b/include/grub/lockdown.h
new file mode 100644
index 0000000..40531fa
--- /dev/null
+++ b/include/grub/lockdown.h
@@ -0,0 +1,44 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2020 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_LOCKDOWN_H
+#define GRUB_LOCKDOWN_H 1
+
+#include <grub/symbol.h>
+
+#define GRUB_LOCKDOWN_DISABLED 0
+#define GRUB_LOCKDOWN_ENABLED 1
+
+#ifdef GRUB_MACHINE_EFI
+extern void
+EXPORT_FUNC (grub_lockdown) (void);
+extern int
+EXPORT_FUNC (grub_is_lockdown) (void);
+#else
+static inline void
+grub_lockdown (void)
+{
+}
+
+static inline int
+grub_is_lockdown (void)
+{
+ return GRUB_LOCKDOWN_DISABLED;
+}
+#endif
+#endif /* ! GRUB_LOCKDOWN_H */

View File

@@ -0,0 +1,57 @@
From bfb9c44298aa202c176fef8dc5ea48f9b0e76e5e Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Tue, 2 Feb 2021 19:59:48 +0100
Subject: [PATCH] kern/lockdown: Set a variable if the GRUB is locked down
It may be useful for scripts to determine whether the GRUB is locked
down or not. Add the lockdown variable which is set to "y" when the GRUB
is locked down.
Suggested-by: Dimitri John Ledkov <xnox@ubuntu.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=d90367471779c240e002e62edfb6b31fc85b4908]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 3 +++
grub-core/kern/lockdown.c | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/docs/grub.texi b/docs/grub.texi
index d778bfb..5e6cace 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -5802,6 +5802,9 @@ The GRUB can be locked down when booted on a secure boot environment, for exampl
if the UEFI secure boot is enabled. On a locked down configuration, the GRUB will
be restricted and some operations/commands cannot be executed.
+The @samp{lockdown} variable is set to @samp{y} when the GRUB is locked down.
+Otherwise it does not exit.
+
@node Platform limitations
@chapter Platform limitations
diff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c
index 1e56c0b..0bc70fd 100644
--- a/grub-core/kern/lockdown.c
+++ b/grub-core/kern/lockdown.c
@@ -18,6 +18,7 @@
*/
#include <grub/dl.h>
+#include <grub/env.h>
#include <grub/file.h>
#include <grub/lockdown.h>
#include <grub/verify.h>
@@ -71,6 +72,9 @@ grub_lockdown (void)
lockdown = GRUB_LOCKDOWN_ENABLED;
grub_verifier_register (&lockdown_verifier);
+
+ grub_env_set ("lockdown", "y");
+ grub_env_export ("lockdown");
}
int

View File

@@ -0,0 +1,52 @@
From 0d809c0979ced9db4d0e500b3e812bba95e52972 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Mon, 28 Sep 2020 20:08:29 +0200
Subject: [PATCH] efi: Lockdown the GRUB when the UEFI Secure Boot is enabled
If the UEFI Secure Boot is enabled then the GRUB must be locked down
to prevent executing code that can potentially be used to subvert its
verification mechanisms.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=98b00a403cbf2ba6833d1ac0499871b27a08eb77]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/kern/efi/init.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
index 3dfdf2d..db84d82 100644
--- a/grub-core/kern/efi/init.c
+++ b/grub-core/kern/efi/init.c
@@ -20,6 +20,7 @@
#include <grub/efi/efi.h>
#include <grub/efi/console.h>
#include <grub/efi/disk.h>
+#include <grub/lockdown.h>
#include <grub/term.h>
#include <grub/misc.h>
#include <grub/env.h>
@@ -39,6 +40,20 @@ grub_efi_init (void)
/* Initialize the memory management system. */
grub_efi_mm_init ();
+ /*
+ * Lockdown the GRUB and register the shim_lock verifier
+ * if the UEFI Secure Boot is enabled.
+ */
+ if (grub_efi_secure_boot ())
+ {
+ grub_lockdown ();
+ /* NOTE: Our version does not have the shim_lock_verifier,
+ * need to update below if added */
+#if 0
+ grub_shim_lock_verifier_setup ();
+#endif
+ }
+
efi_call_4 (grub_efi_system_table->boot_services->set_watchdog_timer,
0, 0, 0, NULL);

View File

@@ -0,0 +1,158 @@
From 1ad728b08ba2a21573e5f81a565114f74ca33988 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Mon, 28 Sep 2020 20:08:33 +0200
Subject: [PATCH] efi: Use grub_is_lockdown() instead of hardcoding a disabled
modules list
Now the GRUB can check if it has been locked down and this can be used to
prevent executing commands that can be utilized to circumvent the UEFI
Secure Boot mechanisms. So, instead of hardcoding a list of modules that
have to be disabled, prevent the usage of commands that can be dangerous.
This not only allows the commands to be disabled on other platforms, but
also properly separate the concerns. Since the shim_lock verifier logic
should be only about preventing to run untrusted binaries and not about
defining these kind of policies.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=8f73052885892bc0dbc01e297f79d7cf4925e491]
CVE: CVE-2020-14372
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 10 ++++++++++
grub-core/commands/i386/wrmsr.c | 5 +++--
grub-core/commands/iorw.c | 19 ++++++++++---------
grub-core/commands/memrw.c | 19 ++++++++++---------
4 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index 5e6cace..0786427 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -5256,6 +5256,9 @@ only applies to the particular cpu/core/thread that runs the command.
Also, if you specify a reserved or unimplemented MSR address, it will
cause a general protection exception (which is not currently being handled)
and the system will reboot.
+
+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
+ This is done to prevent subverting various security mechanisms.
@end deffn
@node xen_hypervisor
@@ -5758,6 +5761,13 @@ security reasons. All above mentioned requirements are enforced by the
shim_lock module. And itself it is a persistent module which means that
it cannot be unloaded if it was loaded into the memory.
+All GRUB modules not stored in the @file{core.img}, OS kernels, ACPI tables,
+Device Trees, etc. have to be signed, e.g, using PGP. Additionally, the commands
+that can be used to subvert the UEFI secure boot mechanism, such as @command{iorw}
+and @command{memrw} will not be available when the UEFI secure boot is enabled.
+This is done for security reasons and are enforced by the GRUB Lockdown mechanism
+(@pxref{Lockdown}).
+
@node Measured Boot
@section Measuring boot components
diff --git a/grub-core/commands/i386/wrmsr.c b/grub-core/commands/i386/wrmsr.c
index 9c5e510..56a29c2 100644
--- a/grub-core/commands/i386/wrmsr.c
+++ b/grub-core/commands/i386/wrmsr.c
@@ -24,6 +24,7 @@
#include <grub/env.h>
#include <grub/command.h>
#include <grub/extcmd.h>
+#include <grub/lockdown.h>
#include <grub/i18n.h>
#include <grub/i386/cpuid.h>
#include <grub/i386/wrmsr.h>
@@ -83,8 +84,8 @@ grub_cmd_msr_write (grub_command_t cmd __attribute__ ((unused)), int argc, char
GRUB_MOD_INIT(wrmsr)
{
- cmd_write = grub_register_command ("wrmsr", grub_cmd_msr_write, N_("ADDR VALUE"),
- N_("Write a value to a CPU model specific register."));
+ cmd_write = grub_register_command_lockdown ("wrmsr", grub_cmd_msr_write, N_("ADDR VALUE"),
+ N_("Write a value to a CPU model specific register."));
}
GRUB_MOD_FINI(wrmsr)
diff --git a/grub-core/commands/iorw.c b/grub-core/commands/iorw.c
index a0c164e..584baec 100644
--- a/grub-core/commands/iorw.c
+++ b/grub-core/commands/iorw.c
@@ -23,6 +23,7 @@
#include <grub/env.h>
#include <grub/cpu/io.h>
#include <grub/i18n.h>
+#include <grub/lockdown.h>
GRUB_MOD_LICENSE ("GPLv3+");
@@ -131,17 +132,17 @@ GRUB_MOD_INIT(memrw)
N_("PORT"), N_("Read 32-bit value from PORT."),
options);
cmd_write_byte =
- grub_register_command ("outb", grub_cmd_write,
- N_("PORT VALUE [MASK]"),
- N_("Write 8-bit VALUE to PORT."));
+ grub_register_command_lockdown ("outb", grub_cmd_write,
+ N_("PORT VALUE [MASK]"),
+ N_("Write 8-bit VALUE to PORT."));
cmd_write_word =
- grub_register_command ("outw", grub_cmd_write,
- N_("PORT VALUE [MASK]"),
- N_("Write 16-bit VALUE to PORT."));
+ grub_register_command_lockdown ("outw", grub_cmd_write,
+ N_("PORT VALUE [MASK]"),
+ N_("Write 16-bit VALUE to PORT."));
cmd_write_dword =
- grub_register_command ("outl", grub_cmd_write,
- N_("ADDR VALUE [MASK]"),
- N_("Write 32-bit VALUE to PORT."));
+ grub_register_command_lockdown ("outl", grub_cmd_write,
+ N_("ADDR VALUE [MASK]"),
+ N_("Write 32-bit VALUE to PORT."));
}
GRUB_MOD_FINI(memrw)
diff --git a/grub-core/commands/memrw.c b/grub-core/commands/memrw.c
index 98769ea..d401a6d 100644
--- a/grub-core/commands/memrw.c
+++ b/grub-core/commands/memrw.c
@@ -22,6 +22,7 @@
#include <grub/extcmd.h>
#include <grub/env.h>
#include <grub/i18n.h>
+#include <grub/lockdown.h>
GRUB_MOD_LICENSE ("GPLv3+");
@@ -133,17 +134,17 @@ GRUB_MOD_INIT(memrw)
N_("ADDR"), N_("Read 32-bit value from ADDR."),
options);
cmd_write_byte =
- grub_register_command ("write_byte", grub_cmd_write,
- N_("ADDR VALUE [MASK]"),
- N_("Write 8-bit VALUE to ADDR."));
+ grub_register_command_lockdown ("write_byte", grub_cmd_write,
+ N_("ADDR VALUE [MASK]"),
+ N_("Write 8-bit VALUE to ADDR."));
cmd_write_word =
- grub_register_command ("write_word", grub_cmd_write,
- N_("ADDR VALUE [MASK]"),
- N_("Write 16-bit VALUE to ADDR."));
+ grub_register_command_lockdown ("write_word", grub_cmd_write,
+ N_("ADDR VALUE [MASK]"),
+ N_("Write 16-bit VALUE to ADDR."));
cmd_write_dword =
- grub_register_command ("write_dword", grub_cmd_write,
- N_("ADDR VALUE [MASK]"),
- N_("Write 32-bit VALUE to ADDR."));
+ grub_register_command_lockdown ("write_dword", grub_cmd_write,
+ N_("ADDR VALUE [MASK]"),
+ N_("Write 32-bit VALUE to ADDR."));
}
GRUB_MOD_FINI(memrw)

View File

@@ -0,0 +1,70 @@
From 584263eca1546e5cab69ba6fe7b4b07df2630a21 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 14 Oct 2020 16:33:42 +0200
Subject: [PATCH] mmap: Don't register cutmem and badram commands when lockdown
is enforced
The cutmem and badram commands can be used to remove EFI memory regions
and potentially disable the UEFI Secure Boot. Prevent the commands to be
registered if the GRUB is locked down.
Fixes: CVE-2020-27779
Reported-by: Teddy Reed <teddy.reed@gmail.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=d298b41f90cbf1f2e5a10e29daa1fc92ddee52c9]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 4 ++++
grub-core/mmap/mmap.c | 13 +++++++------
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index 47ac7ff..a1aaee6 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -4051,6 +4051,10 @@ this page is to be filtered. This syntax makes it easy to represent patterns
that are often result of memory damage, due to physical distribution of memory
cells.
+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
+ This prevents removing EFI memory regions to potentially subvert the
+ security mechanisms provided by the UEFI secure boot.
+
@node blocklist
@subsection blocklist
diff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c
index 57b4e9a..7ebf32e 100644
--- a/grub-core/mmap/mmap.c
+++ b/grub-core/mmap/mmap.c
@@ -20,6 +20,7 @@
#include <grub/memory.h>
#include <grub/machine/memory.h>
#include <grub/err.h>
+#include <grub/lockdown.h>
#include <grub/misc.h>
#include <grub/mm.h>
#include <grub/command.h>
@@ -534,12 +535,12 @@ static grub_command_t cmd, cmd_cut;
GRUB_MOD_INIT(mmap)
{
- cmd = grub_register_command ("badram", grub_cmd_badram,
- N_("ADDR1,MASK1[,ADDR2,MASK2[,...]]"),
- N_("Declare memory regions as faulty (badram)."));
- cmd_cut = grub_register_command ("cutmem", grub_cmd_cutmem,
- N_("FROM[K|M|G] TO[K|M|G]"),
- N_("Remove any memory regions in specified range."));
+ cmd = grub_register_command_lockdown ("badram", grub_cmd_badram,
+ N_("ADDR1,MASK1[,ADDR2,MASK2[,...]]"),
+ N_("Declare memory regions as faulty (badram)."));
+ cmd_cut = grub_register_command_lockdown ("cutmem", grub_cmd_cutmem,
+ N_("FROM[K|M|G] TO[K|M|G]"),
+ N_("Remove any memory regions in specified range."));
}

View File

@@ -0,0 +1,105 @@
From 4ff1dfdf8c4c71bf4b0dd0488d9fa40ff2617f41 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 24 Feb 2021 09:00:05 +0100
Subject: [PATCH] commands: Restrict commands that can load BIOS or DT blobs
when locked down
There are some more commands that should be restricted when the GRUB is
locked down. Following is the list of commands and reasons to restrict:
* fakebios: creates BIOS-like structures for backward compatibility with
existing OSes. This should not be allowed when locked down.
* loadbios: reads a BIOS dump from storage and loads it. This action
should not be allowed when locked down.
* devicetree: loads a Device Tree blob and passes it to the OS. It replaces
any Device Tree provided by the firmware. This also should
not be allowed when locked down.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=468a5699b249fe6816b4e7e86c5dc9d325c9b09e]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 3 +++
grub-core/commands/efi/loadbios.c | 16 ++++++++--------
grub-core/loader/arm/linux.c | 6 +++---
grub-core/loader/efi/fdt.c | 4 ++--
4 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index a1aaee6..ccf1908 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -4236,6 +4236,9 @@ Load a device tree blob (.dtb) from a filesystem, for later use by a Linux
kernel. Does not perform merging with any device tree supplied by firmware,
but rather replaces it completely.
@ref{GNU/Linux}.
+
+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
+ This is done to prevent subverting various security mechanisms.
@end deffn
@node distrust
diff --git a/grub-core/commands/efi/loadbios.c b/grub-core/commands/efi/loadbios.c
index d41d521..5c7725f 100644
--- a/grub-core/commands/efi/loadbios.c
+++ b/grub-core/commands/efi/loadbios.c
@@ -205,14 +205,14 @@ static grub_command_t cmd_fakebios, cmd_loadbios;
GRUB_MOD_INIT(loadbios)
{
- cmd_fakebios = grub_register_command ("fakebios", grub_cmd_fakebios,
- 0, N_("Create BIOS-like structures for"
- " backward compatibility with"
- " existing OS."));
-
- cmd_loadbios = grub_register_command ("loadbios", grub_cmd_loadbios,
- N_("BIOS_DUMP [INT10_DUMP]"),
- N_("Load BIOS dump."));
+ cmd_fakebios = grub_register_command_lockdown ("fakebios", grub_cmd_fakebios,
+ 0, N_("Create BIOS-like structures for"
+ " backward compatibility with"
+ " existing OS."));
+
+ cmd_loadbios = grub_register_command_lockdown ("loadbios", grub_cmd_loadbios,
+ N_("BIOS_DUMP [INT10_DUMP]"),
+ N_("Load BIOS dump."));
}
GRUB_MOD_FINI(loadbios)
diff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
index d70c174..ed23dc7 100644
--- a/grub-core/loader/arm/linux.c
+++ b/grub-core/loader/arm/linux.c
@@ -493,9 +493,9 @@ GRUB_MOD_INIT (linux)
0, N_("Load Linux."));
cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd,
0, N_("Load initrd."));
- cmd_devicetree = grub_register_command ("devicetree", grub_cmd_devicetree,
- /* TRANSLATORS: DTB stands for device tree blob. */
- 0, N_("Load DTB file."));
+ cmd_devicetree = grub_register_command_lockdown ("devicetree", grub_cmd_devicetree,
+ /* TRANSLATORS: DTB stands for device tree blob. */
+ 0, N_("Load DTB file."));
my_mod = mod;
current_fdt = (const void *) grub_arm_firmware_get_boot_data ();
machine_type = grub_arm_firmware_get_machine_type ();
diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c
index ee9c559..003d07c 100644
--- a/grub-core/loader/efi/fdt.c
+++ b/grub-core/loader/efi/fdt.c
@@ -165,8 +165,8 @@ static grub_command_t cmd_devicetree;
GRUB_MOD_INIT (fdt)
{
cmd_devicetree =
- grub_register_command ("devicetree", grub_cmd_devicetree, 0,
- N_("Load DTB file."));
+ grub_register_command_lockdown ("devicetree", grub_cmd_devicetree, 0,
+ N_("Load DTB file."));
}
GRUB_MOD_FINI (fdt)

View File

@@ -0,0 +1,37 @@
From e4f5c16f76e137b3beb6b61a6d2435e54fcb495c Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 24 Feb 2021 22:59:59 +0100
Subject: [PATCH] commands/setpci: Restrict setpci command when locked down
This command can set PCI devices register values, which makes it dangerous
in a locked down configuration. Restrict it so can't be used on this setup.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=58b77d4069823b44c5fa916fa8ddfc9c4cd51e02]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/commands/setpci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/grub-core/commands/setpci.c b/grub-core/commands/setpci.c
index d5bc97d..fa2ba7d 100644
--- a/grub-core/commands/setpci.c
+++ b/grub-core/commands/setpci.c
@@ -329,10 +329,10 @@ static grub_extcmd_t cmd;
GRUB_MOD_INIT(setpci)
{
- cmd = grub_register_extcmd ("setpci", grub_cmd_setpci, 0,
- N_("[-s POSITION] [-d DEVICE] [-v VAR] "
- "REGISTER[=VALUE[:MASK]]"),
- N_("Manipulate PCI devices."), options);
+ cmd = grub_register_extcmd_lockdown ("setpci", grub_cmd_setpci, 0,
+ N_("[-s POSITION] [-d DEVICE] [-v VAR] "
+ "REGISTER[=VALUE[:MASK]]"),
+ N_("Manipulate PCI devices."), options);
}
GRUB_MOD_FINI(setpci)

View File

@@ -0,0 +1,35 @@
From 7949671de268ba3116d113778e5d770574e9f9e3 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 24 Feb 2021 12:59:29 +0100
Subject: [PATCH] commands/hdparm: Restrict hdparm command when locked down
The command can be used to get/set ATA disk parameters. Some of these can
be dangerous since change the disk behavior. Restrict it when locked down.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=5c97492a29c6063567b65ed1a069f5e6f4e211f0]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/commands/hdparm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/grub-core/commands/hdparm.c b/grub-core/commands/hdparm.c
index d3fa966..2e2319e 100644
--- a/grub-core/commands/hdparm.c
+++ b/grub-core/commands/hdparm.c
@@ -436,9 +436,9 @@ static grub_extcmd_t cmd;
GRUB_MOD_INIT(hdparm)
{
- cmd = grub_register_extcmd ("hdparm", grub_cmd_hdparm, 0,
- N_("[OPTIONS] DISK"),
- N_("Get/set ATA disk parameters."), options);
+ cmd = grub_register_extcmd_lockdown ("hdparm", grub_cmd_hdparm, 0,
+ N_("[OPTIONS] DISK"),
+ N_("Get/set ATA disk parameters."), options);
}
GRUB_MOD_FINI(hdparm)

View File

@@ -0,0 +1,62 @@
From 6993cce7c3a9d15e6573845f455d2f0de424a717 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 24 Feb 2021 15:03:26 +0100
Subject: [PATCH] gdb: Restrict GDB access when locked down
The gdbstub* commands allow to start and control a GDB stub running on
local host that can be used to connect from a remote debugger. Restrict
this functionality when the GRUB is locked down.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=508270838998f151a82e9c13e7cb8a470a2dc23d]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/gdb/gdb.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/grub-core/gdb/gdb.c b/grub-core/gdb/gdb.c
index 847a1e1..1818cb6 100644
--- a/grub-core/gdb/gdb.c
+++ b/grub-core/gdb/gdb.c
@@ -75,20 +75,24 @@ static grub_command_t cmd, cmd_stop, cmd_break;
GRUB_MOD_INIT (gdb)
{
grub_gdb_idtinit ();
- cmd = grub_register_command ("gdbstub", grub_cmd_gdbstub,
- N_("PORT"),
- /* TRANSLATORS: GDB stub is a small part of
- GDB functionality running on local host
- which allows remote debugger to
- connect to it. */
- N_("Start GDB stub on given port"));
- cmd_break = grub_register_command ("gdbstub_break", grub_cmd_gdb_break,
- /* TRANSLATORS: this refers to triggering
- a breakpoint so that the user will land
- into GDB. */
- 0, N_("Break into GDB"));
- cmd_stop = grub_register_command ("gdbstub_stop", grub_cmd_gdbstop,
- 0, N_("Stop GDB stub"));
+ cmd = grub_register_command_lockdown ("gdbstub", grub_cmd_gdbstub,
+ N_("PORT"),
+ /*
+ * TRANSLATORS: GDB stub is a small part of
+ * GDB functionality running on local host
+ * which allows remote debugger to
+ * connect to it.
+ */
+ N_("Start GDB stub on given port"));
+ cmd_break = grub_register_command_lockdown ("gdbstub_break", grub_cmd_gdb_break,
+ /*
+ * TRANSLATORS: this refers to triggering
+ * a breakpoint so that the user will land
+ * into GDB.
+ */
+ 0, N_("Break into GDB"));
+ cmd_stop = grub_register_command_lockdown ("gdbstub_stop", grub_cmd_gdbstop,
+ 0, N_("Stop GDB stub"));
}
GRUB_MOD_FINI (gdb)

View File

@@ -0,0 +1,61 @@
From 73f214761cff76a18a2a867976bdd3a9adb00b67 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 24 Feb 2021 14:44:38 +0100
Subject: [PATCH] loader/xnu: Don't allow loading extension and packages when
locked down
The shim_lock verifier validates the XNU kernels but no its extensions
and packages. Prevent these to be loaded when the GRUB is locked down.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=9c5565135f12400a925ee901b25984e7af4442f5]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/loader/xnu.c | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
index 77d7060..07232d2 100644
--- a/grub-core/loader/xnu.c
+++ b/grub-core/loader/xnu.c
@@ -1482,20 +1482,23 @@ GRUB_MOD_INIT(xnu)
N_("Load XNU image."));
cmd_kernel64 = grub_register_command ("xnu_kernel64", grub_cmd_xnu_kernel64,
0, N_("Load 64-bit XNU image."));
- cmd_mkext = grub_register_command ("xnu_mkext", grub_cmd_xnu_mkext, 0,
- N_("Load XNU extension package."));
- cmd_kext = grub_register_command ("xnu_kext", grub_cmd_xnu_kext, 0,
- N_("Load XNU extension."));
- cmd_kextdir = grub_register_command ("xnu_kextdir", grub_cmd_xnu_kextdir,
- /* TRANSLATORS: OSBundleRequired is a
- variable name in xnu extensions
- manifests. It behaves mostly like
- GNU/Linux runlevels.
- */
- N_("DIRECTORY [OSBundleRequired]"),
- /* TRANSLATORS: There are many extensions
- in extension directory. */
- N_("Load XNU extension directory."));
+ cmd_mkext = grub_register_command_lockdown ("xnu_mkext", grub_cmd_xnu_mkext, 0,
+ N_("Load XNU extension package."));
+ cmd_kext = grub_register_command_lockdown ("xnu_kext", grub_cmd_xnu_kext, 0,
+ N_("Load XNU extension."));
+ cmd_kextdir = grub_register_command_lockdown ("xnu_kextdir", grub_cmd_xnu_kextdir,
+ /*
+ * TRANSLATORS: OSBundleRequired is
+ * a variable name in xnu extensions
+ * manifests. It behaves mostly like
+ * GNU/Linux runlevels.
+ */
+ N_("DIRECTORY [OSBundleRequired]"),
+ /*
+ * TRANSLATORS: There are many extensions
+ * in extension directory.
+ */
+ N_("Load XNU extension directory."));
cmd_ramdisk = grub_register_command ("xnu_ramdisk", grub_cmd_xnu_ramdisk, 0,
/* TRANSLATORS: ramdisk here isn't identifier. It can be translated. */
N_("Load XNU ramdisk. "

View File

@@ -0,0 +1,65 @@
From dcc5a434e59f721b03cc809db0375a24aa2ac6d0 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Sat, 7 Nov 2020 01:03:18 +0100
Subject: [PATCH] docs: Document the cutmem command
The command is not present in the docs/grub.texi user documentation.
Reported-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=f05e79a0143beb2d9a482a3ebf4fe0ce76778122]
CVE: CVE-2020-27779
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
docs/grub.texi | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/docs/grub.texi b/docs/grub.texi
index ccf1908..ae85f55 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -3892,6 +3892,7 @@ you forget a command, you can run the command @command{help}
* cpuid:: Check for CPU features
* crc:: Compute or check CRC32 checksums
* cryptomount:: Mount a crypto device
+* cutmem:: Remove memory regions
* date:: Display or set current date and time
* devicetree:: Load a device tree blob
* distrust:: Remove a pubkey from trusted keys
@@ -4051,6 +4052,8 @@ this page is to be filtered. This syntax makes it easy to represent patterns
that are often result of memory damage, due to physical distribution of memory
cells.
+The command is similar to @command{cutmem} command.
+
Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
This prevents removing EFI memory regions to potentially subvert the
security mechanisms provided by the UEFI secure boot.
@@ -4214,6 +4217,24 @@ GRUB suports devices encrypted using LUKS and geli. Note that necessary modules
be used.
@end deffn
+@node cutmem
+@subsection cutmem
+
+@deffn Command cutmem from[K|M|G] to[K|M|G]
+Remove any memory regions in specified range.
+@end deffn
+
+This command notifies the memory manager that specified regions of RAM ought to
+be filtered out. This remains in effect after a payload kernel has been loaded
+by GRUB, as long as the loaded kernel obtains its memory map from GRUB. Kernels
+that support this include Linux, GNU Mach, the kernel of FreeBSD and Multiboot
+kernels in general.
+
+The command is similar to @command{badram} command.
+
+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).
+ This prevents removing EFI memory regions to potentially subvert the
+ security mechanisms provided by the UEFI secure boot.
@node date
@subsection date

View File

@@ -0,0 +1,107 @@
From b5a6aa7d77439bfeb75f200abffe15c6f685c907 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <mjg@redhat.com>
Date: Mon, 13 Jan 2014 12:13:09 +0000
Subject: Don't permit loading modules on UEFI secure boot
Author: Colin Watson <cjwatson@ubuntu.com>
Origin: vendor, http://pkgs.fedoraproject.org/cgit/grub2.git/tree/grub-2.00-no-insmod-on-sb.patch
Forwarded: no
Last-Update: 2013-12-25
Patch-Name: no-insmod-on-sb.patch
Upstream-Status: Inappropriate [other, https://salsa.debian.org/grub-team/grub/-/blob/debian/2.04-20/debian/patches/no-insmod-on-sb.patch]
Backport of a Debian (and Fedora) patch implementing a way to get secure boot status
for CVE-2020-14372_4.patch. The upstream solution has too many dependencies to backport.
Source: https://salsa.debian.org/grub-team/grub/-/blob/debian/2.04-20/debian/patches/no-insmod-on-sb.patch
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
---
grub-core/kern/dl.c | 13 +++++++++++++
grub-core/kern/efi/efi.c | 28 ++++++++++++++++++++++++++++
include/grub/efi/efi.h | 1 +
3 files changed, 42 insertions(+)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
index 48eb5e7b6..074dfc3c6 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
@@ -38,6 +38,10 @@
#define GRUB_MODULES_MACHINE_READONLY
#endif
+#ifdef GRUB_MACHINE_EFI
+#include <grub/efi/efi.h>
+#endif
+
#pragma GCC diagnostic ignored "-Wcast-align"
@@ -686,6 +690,15 @@ grub_dl_load_file (const char *filename)
void *core = 0;
grub_dl_t mod = 0;
+#ifdef GRUB_MACHINE_EFI
+ if (grub_efi_secure_boot ())
+ {
+ grub_error (GRUB_ERR_ACCESS_DENIED,
+ "Secure Boot forbids loading module from %s", filename);
+ return 0;
+ }
+#endif
+
grub_boot_time ("Loading module %s", filename);
file = grub_file_open (filename, GRUB_FILE_TYPE_GRUB_MODULE);
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
index 6e1ceb905..96204e39b 100644
--- a/grub-core/kern/efi/efi.c
+++ b/grub-core/kern/efi/efi.c
@@ -273,6 +273,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
return NULL;
}
+grub_efi_boolean_t
+grub_efi_secure_boot (void)
+{
+ grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID;
+ grub_size_t datasize;
+ char *secure_boot = NULL;
+ char *setup_mode = NULL;
+ grub_efi_boolean_t ret = 0;
+
+ secure_boot = grub_efi_get_variable ("SecureBoot", &efi_var_guid, &datasize);
+
+ if (datasize != 1 || !secure_boot)
+ goto out;
+
+ setup_mode = grub_efi_get_variable ("SetupMode", &efi_var_guid, &datasize);
+
+ if (datasize != 1 || !setup_mode)
+ goto out;
+
+ if (*secure_boot && !*setup_mode)
+ ret = 1;
+
+ out:
+ grub_free (secure_boot);
+ grub_free (setup_mode);
+ return ret;
+}
+
#pragma GCC diagnostic ignored "-Wcast-align"
/* Search the mods section from the PE32/PE32+ image. This code uses
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
index e90e00dc4..a237952b3 100644
--- a/include/grub/efi/efi.h
+++ b/include/grub/efi/efi.h
@@ -82,6 +82,7 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
const grub_efi_guid_t *guid,
void *data,
grub_size_t datasize);
+grub_efi_boolean_t EXPORT_FUNC (grub_efi_secure_boot) (void);
int
EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
const grub_efi_device_path_t *dp2);

View File

@@ -31,6 +31,20 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch \
file://CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch \
file://determinism.patch \
file://no-insmod-on-sb.patch \
file://CVE-2020-14372_1.patch \
file://CVE-2020-14372_2.patch \
file://CVE-2020-14372_3.patch \
file://CVE-2020-14372_4.patch \
file://CVE-2020-14372_5.patch \
file://CVE-2020-14372.patch \
file://CVE-2020-27779.patch \
file://CVE-2020-27779_2.patch \
file://CVE-2020-27779_3.patch \
file://CVE-2020-27779_4.patch \
file://CVE-2020-27779_5.patch \
file://CVE-2020-27779_6.patch \
file://CVE-2020-27779_7.patch \
"
SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934"
SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea"

View File

@@ -52,6 +52,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
file://0001-test-gatt-Fix-hung-issue.patch \
file://CVE-2021-0129.patch \
file://CVE-2021-3588.patch \
"
S = "${WORKDIR}/bluez-${PV}"

View File

@@ -0,0 +1,109 @@
From 00da0fb4972cf59e1c075f313da81ea549cb8738 Mon Sep 17 00:00:00 2001
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date: Tue, 2 Mar 2021 11:38:33 -0800
Subject: shared/gatt-server: Fix not properly checking for secure flags
When passing the mask to check_permissions all valid permissions for
the operation must be set including BT_ATT_PERM_SECURE flags.
Upstream-Status: Backport [https://git.kernel.org/pub/scm/bluetooth/bluez.git/patch/?id=00da0fb4972cf59e1c075f313da81ea549cb8738]
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
CVE: CVE-2021-0129
---
src/shared/att-types.h | 8 ++++++++
src/shared/gatt-server.c | 25 +++++++------------------
2 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/src/shared/att-types.h b/src/shared/att-types.h
index 7108b4e94..3adc05d9e 100644
--- a/src/shared/att-types.h
+++ b/src/shared/att-types.h
@@ -129,6 +129,14 @@ struct bt_att_pdu_error_rsp {
#define BT_ATT_PERM_WRITE_SECURE 0x0200
#define BT_ATT_PERM_SECURE (BT_ATT_PERM_READ_SECURE | \
BT_ATT_PERM_WRITE_SECURE)
+#define BT_ATT_PERM_READ_MASK (BT_ATT_PERM_READ | \
+ BT_ATT_PERM_READ_AUTHEN | \
+ BT_ATT_PERM_READ_ENCRYPT | \
+ BT_ATT_PERM_READ_SECURE)
+#define BT_ATT_PERM_WRITE_MASK (BT_ATT_PERM_WRITE | \
+ BT_ATT_PERM_WRITE_AUTHEN | \
+ BT_ATT_PERM_WRITE_ENCRYPT | \
+ BT_ATT_PERM_WRITE_SECURE)
/* GATT Characteristic Properties Bitfield values */
#define BT_GATT_CHRC_PROP_BROADCAST 0x01
diff --git a/src/shared/gatt-server.c b/src/shared/gatt-server.c
index b5f7de7dc..970c35f94 100644
--- a/src/shared/gatt-server.c
+++ b/src/shared/gatt-server.c
@@ -444,9 +444,7 @@ static void process_read_by_type(struct async_read_op *op)
return;
}
- ecode = check_permissions(server, attr, BT_ATT_PERM_READ |
- BT_ATT_PERM_READ_AUTHEN |
- BT_ATT_PERM_READ_ENCRYPT);
+ ecode = check_permissions(server, attr, BT_ATT_PERM_READ_MASK);
if (ecode)
goto error;
@@ -811,9 +809,7 @@ static void write_cb(struct bt_att_chan *chan, uint8_t opcode, const void *pdu,
(opcode == BT_ATT_OP_WRITE_REQ) ? "Req" : "Cmd",
handle);
- ecode = check_permissions(server, attr, BT_ATT_PERM_WRITE |
- BT_ATT_PERM_WRITE_AUTHEN |
- BT_ATT_PERM_WRITE_ENCRYPT);
+ ecode = check_permissions(server, attr, BT_ATT_PERM_WRITE_MASK);
if (ecode)
goto error;
@@ -913,9 +909,7 @@ static void handle_read_req(struct bt_att_chan *chan,
opcode == BT_ATT_OP_READ_BLOB_REQ ? "Blob " : "",
handle);
- ecode = check_permissions(server, attr, BT_ATT_PERM_READ |
- BT_ATT_PERM_READ_AUTHEN |
- BT_ATT_PERM_READ_ENCRYPT);
+ ecode = check_permissions(server, attr, BT_ATT_PERM_READ_MASK);
if (ecode)
goto error;
@@ -1051,9 +1045,8 @@ static void read_multiple_complete_cb(struct gatt_db_attribute *attr, int err,
goto error;
}
- ecode = check_permissions(data->server, next_attr, BT_ATT_PERM_READ |
- BT_ATT_PERM_READ_AUTHEN |
- BT_ATT_PERM_READ_ENCRYPT);
+ ecode = check_permissions(data->server, next_attr,
+ BT_ATT_PERM_READ_MASK);
if (ecode)
goto error;
@@ -1129,9 +1122,7 @@ static void read_multiple_cb(struct bt_att_chan *chan, uint8_t opcode,
goto error;
}
- ecode = check_permissions(data->server, attr, BT_ATT_PERM_READ |
- BT_ATT_PERM_READ_AUTHEN |
- BT_ATT_PERM_READ_ENCRYPT);
+ ecode = check_permissions(data->server, attr, BT_ATT_PERM_READ_MASK);
if (ecode)
goto error;
@@ -1308,9 +1299,7 @@ static void prep_write_cb(struct bt_att_chan *chan, uint8_t opcode,
util_debug(server->debug_callback, server->debug_data,
"Prep Write Req - handle: 0x%04x", handle);
- ecode = check_permissions(server, attr, BT_ATT_PERM_WRITE |
- BT_ATT_PERM_WRITE_AUTHEN |
- BT_ATT_PERM_WRITE_ENCRYPT);
+ ecode = check_permissions(server, attr, BT_ATT_PERM_WRITE_MASK);
if (ecode)
goto error;
--
cgit 1.2.3-1.el7

View File

@@ -0,0 +1,67 @@
From 4e355804d57d5686defc363c70f81e6f58cd08f0 Mon Sep 17 00:00:00 2001
From: Simon Josefsson <simon@josefsson.org>
Date: Fri, 17 Dec 2021 21:52:18 -0800
Subject: [PATCH] ftp: check that PASV/LSPV addresses match.
* NEWS: Mention change.
* ftp/ftp.c (initconn): Validate returned addresses.
CVE: CVE-2021-40491
Upstream-Status: Backport
[https://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=58cb043b190fd04effdaea7c9403416b436e50dd]
Signed-off-by: Minjae Kim <flowergom@gmail.com>
---
ftp/ftp.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/ftp/ftp.c b/ftp/ftp.c
index 9813586..7c72cb2 100644
--- a/ftp/ftp.c
+++ b/ftp/ftp.c
@@ -1344,6 +1344,13 @@ initconn (void)
uint32_t *pu32 = (uint32_t *) &data_addr_sa4->sin_addr.s_addr;
pu32[0] = htonl ( (h[0] << 24) | (h[1] << 16) | (h[2] << 8) | h[3]);
}
+ if (data_addr_sa4->sin_addr.s_addr
+ != ((struct sockaddr_in *) &hisctladdr)->sin_addr.s_addr)
+ {
+ printf ("Passive mode address mismatch.\n");
+ (void) command ("ABOR"); /* Cancel any open connection. */
+ goto bad;
+ }
} /* LPSV IPv4 */
else /* IPv6 */
{
@@ -1374,6 +1381,13 @@ initconn (void)
pu32[2] = htonl ( (h[8] << 24) | (h[9] << 16) | (h[10] << 8) | h[11]);
pu32[3] = htonl ( (h[12] << 24) | (h[13] << 16) | (h[14] << 8) | h[15]);
}
+ if (data_addr_sa6->sin6_addr.s6_addr
+ != ((struct sockaddr_in6 *) &hisctladdr)->sin6_addr.s6_addr)
+ {
+ printf ("Passive mode address mismatch.\n");
+ (void) command ("ABOR"); /* Cancel any open connection. */
+ goto bad;
+ }
} /* LPSV IPv6 */
}
else /* !EPSV && !LPSV */
@@ -1394,6 +1408,13 @@ initconn (void)
| ((a2 & 0xff) << 8) | (a3 & 0xff) );
data_addr_sa4->sin_port =
htons (((p0 & 0xff) << 8) | (p1 & 0xff));
+ if (data_addr_sa4->sin_addr.s_addr
+ != ((struct sockaddr_in *) &hisctladdr)->sin_addr.s_addr)
+ {
+ printf ("Passive mode address mismatch.\n");
+ (void) command ("ABOR"); /* Cancel any open connection. */
+ goto bad;
+ }
} /* PASV */
else
{
--
2.25.1

View File

@@ -23,6 +23,7 @@ SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz \
file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
file://0001-rcp-fix-to-work-with-large-files.patch \
file://fix-buffer-fortify-tfpt.patch \
file://CVE-2021-40491.patch \
"
SRC_URI[md5sum] = "04852c26c47cc8c6b825f2b74f191f52"

View File

@@ -0,0 +1,52 @@
From a6414400ec94a17871081f7df24f910a6ee01b8b Mon Sep 17 00:00:00 2001
From: Ali Abdallah <aabdallah@suse.de>
Date: Wed, 24 Nov 2021 13:33:39 +0100
Subject: [PATCH] CVE-2021-41617 fix
backport of the following two upstream commits
f3cbe43e28fe71427d41cfe3a17125b972710455
bf944e3794eff5413f2df1ef37cddf96918c6bde
CVE-2021-41617 failed to correctly initialise supplemental groups
when executing an AuthorizedKeysCommand or AuthorizedPrincipalsCommand,
where a AuthorizedKeysCommandUser or AuthorizedPrincipalsCommandUser
directive has been set to run the command as a different user. Instead
these commands would inherit the groups that sshd(8) was started with.
---
auth.c | 8 ++++++++
1 file changed, 8 insertions(+)
CVE: CVE-2021-41617
Upstream-Status: Backport [https://bugzilla.suse.com/attachment.cgi?id=854015]
Comment: No change in any hunk
Signed-off-by: Sana Kazi <Sana.Kazi@kpit.com>
diff --git a/auth.c b/auth.c
index 163038f..a47b267 100644
--- a/auth.c
+++ b/auth.c
@@ -52,6 +52,7 @@
#include <limits.h>
#include <netdb.h>
#include <time.h>
+#include <grp.h>
#include "xmalloc.h"
#include "match.h"
@@ -851,6 +852,13 @@ subprocess(const char *tag, struct passwd *pw, const char *command,
}
closefrom(STDERR_FILENO + 1);
+ if (geteuid() == 0 &&
+ initgroups(pw->pw_name, pw->pw_gid) == -1) {
+ error("%s: initgroups(%s, %u): %s", tag,
+ pw->pw_name, (u_int)pw->pw_gid, strerror(errno));
+ _exit(1);
+ }
+
/* Don't use permanently_set_uid() here to avoid fatal() */
if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) == -1) {
error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid,
--
2.26.2

View File

@@ -26,6 +26,7 @@ SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar
file://add-test-support-for-busybox.patch \
file://CVE-2020-14145.patch \
file://CVE-2021-28041.patch \
file://CVE-2021-41617.patch \
"
SRC_URI[md5sum] = "3076e6413e8dbe56d33848c1054ac091"
SRC_URI[sha256sum] = "43925151e6cf6cee1450190c0e9af4dc36b41c12737619edff8bcebdff64e671"
@@ -50,6 +51,15 @@ CVE_CHECK_WHITELIST += "CVE-2020-15778"
# https://www.securityfocus.com/bid/30794
CVE_CHECK_WHITELIST += "CVE-2008-3844"
# openssh-ssh1 is provided for compatibility with old devices that
# cannot be upgraded to modern protocols. Thus they may not provide security
# support for this package because doing so would prevent access to equipment.
# The upstream OpenSSH developers see this as an important
# security feature and do not intend to 'fix' it.
# https://security-tracker.debian.org/tracker/CVE-2016-20012
# https://ubuntu.com/security/CVE-2016-20012
CVE_CHECK_WHITELIST += "CVE-2016-20012"
PAM_SRC_URI = "file://sshd"
inherit manpages useradd update-rc.d update-alternatives systemd

View File

@@ -0,0 +1,22 @@
Using localtime() means the output can depend on the timezone of the build machine.
Using gmtime() is safer. For complete reproducibility use SOURCE_DATE_EPOCH if set.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream-Status: Pending [should be suitable]
Index: openssl-3.0.1/apps/progs.pl
===================================================================
--- openssl-3.0.1.orig/apps/progs.pl
+++ openssl-3.0.1/apps/progs.pl
@@ -21,7 +21,10 @@ die "Unrecognised option, must be -C or
my %commands = ();
my $cmdre = qr/^\s*int\s+([a-z_][a-z0-9_]*)_main\(\s*int\s+argc\s*,/;
my $apps_openssl = shift @ARGV;
-my $YEAR = [localtime()]->[5] + 1900;
+my $YEAR = [gmtime()]->[5] + 1900;
+if (defined($ENV{SOURCE_DATE_EPOCH}) && $ENV{SOURCE_DATE_EPOCH} !~ /\D/) {
+ $YEAR = [gmtime($ENV{SOURCE_DATE_EPOCH})]->[5] + 1900;
+}
# because the program apps/openssl has object files as sources, and
# they then have the corresponding C files as source, we need to chain

View File

@@ -17,6 +17,7 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
file://afalg.patch \
file://reproducible.patch \
file://reproducibility.patch \
"
SRC_URI_append_class-nativesdk = " \

View File

@@ -22,7 +22,9 @@ SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \
file://dropbear.socket \
file://dropbear.default \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'disable-weak-ciphers', 'file://dropbear-disable-weak-ciphers.patch', '', d)} "
${@bb.utils.contains('PACKAGECONFIG', 'disable-weak-ciphers', 'file://dropbear-disable-weak-ciphers.patch', '', d)} \
file://CVE-2020-36254.patch \
"
PAM_SRC_URI = "file://0005-dropbear-enable-pam.patch \
file://0006-dropbear-configuration-file.patch \

View File

@@ -0,0 +1,29 @@
From c96c48d62aefc372f2105293ddf8cff2d116dc3a Mon Sep 17 00:00:00 2001
From: Haelwenn Monnier <contact+github.com@hacktivis.me>
Date: Mon, 25 May 2020 14:54:29 +0200
Subject: [PATCH] scp.c: Port OpenSSH CVE-2018-20685 fix (#80)
Reference:
https://github.com/mkj/dropbear/commit/8f8a3dff705fad774a10864a2e3dbcfa9779ceff
CVE: CVE-2020-36254
Upstream-Status: Backport
---
scp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scp.c b/scp.c
index 742ae00..7b8e7d2 100644
--- a/scp.c
+++ b/scp.c
@@ -935,7 +935,8 @@ sink(int argc, char **argv)
size = size * 10 + (*cp++ - '0');
if (*cp++ != ' ')
SCREWUP("size not delimited");
- if ((strchr(cp, '/') != NULL) || (strcmp(cp, "..") == 0)) {
+ if (*cp == '\0' || strchr(cp, '/') != NULL ||
+ strcmp(cp, ".") == 0 || strcmp(cp, "..") == 0) {
run_err("error: unexpected filename: %s", cp);
exit(1);
}

View File

@@ -0,0 +1,65 @@
From 0adcb34c49bee5b19bd29b16a578c510c23597ea Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Mon, 27 Dec 2021 20:15:02 +0100
Subject: [PATCH] lib: Detect and prevent troublesome left shifts in function
storeAtts (CVE-2021-45960)
Upstream-Status: Backport:
https://github.com/libexpat/libexpat/pull/534/commits/0adcb34c49bee5b19bd29b16a578c510c23597ea
CVE: CVE-2021-45960
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
expat/lib/xmlparse.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
index d730f41c3..b47c31b05 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -3414,7 +3414,13 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr,
if (nPrefixes) {
int j; /* hash table index */
unsigned long version = parser->m_nsAttsVersion;
- int nsAttsSize = (int)1 << parser->m_nsAttsPower;
+
+ /* Detect and prevent invalid shift */
+ if (parser->m_nsAttsPower >= sizeof(unsigned int) * 8 /* bits per byte */) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
+ unsigned int nsAttsSize = 1u << parser->m_nsAttsPower;
unsigned char oldNsAttsPower = parser->m_nsAttsPower;
/* size of hash table must be at least 2 * (# of prefixed attributes) */
if ((nPrefixes << 1)
@@ -3425,7 +3431,28 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr,
;
if (parser->m_nsAttsPower < 3)
parser->m_nsAttsPower = 3;
- nsAttsSize = (int)1 << parser->m_nsAttsPower;
+
+ /* Detect and prevent invalid shift */
+ if (parser->m_nsAttsPower >= sizeof(nsAttsSize) * 8 /* bits per byte */) {
+ /* Restore actual size of memory in m_nsAtts */
+ parser->m_nsAttsPower = oldNsAttsPower;
+ return XML_ERROR_NO_MEMORY;
+ }
+
+ nsAttsSize = 1u << parser->m_nsAttsPower;
+
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if (nsAttsSize > (size_t)(-1) / sizeof(NS_ATT)) {
+ /* Restore actual size of memory in m_nsAtts */
+ parser->m_nsAttsPower = oldNsAttsPower;
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts,
nsAttsSize * sizeof(NS_ATT));
if (! temp) {

View File

@@ -0,0 +1,43 @@
From 85ae9a2d7d0e9358f356b33977b842df8ebaec2b Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Sat, 25 Dec 2021 20:52:08 +0100
Subject: [PATCH] lib: Prevent integer overflow on m_groupSize in function
doProlog (CVE-2021-46143)
---
expat/lib/xmlparse.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
index b47c31b0..8f243126 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -5046,6 +5046,11 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end,
if (parser->m_prologState.level >= parser->m_groupSize) {
if (parser->m_groupSize) {
{
+ /* Detect and prevent integer overflow */
+ if (parser->m_groupSize > (unsigned int)(-1) / 2u) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
char *const new_connector = (char *)REALLOC(
parser, parser->m_groupConnector, parser->m_groupSize *= 2);
if (new_connector == NULL) {
@@ -5056,6 +5061,16 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end,
}
if (dtd->scaffIndex) {
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) {
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
int *const new_scaff_index = (int *)REALLOC(
parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int));
if (new_scaff_index == NULL)

View File

@@ -0,0 +1,257 @@
From 9f93e8036e842329863bf20395b8fb8f73834d9e Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
Date: Thu, 30 Dec 2021 22:46:03 +0100
Subject: [PATCH] lib: Prevent integer overflow at multiple places
(CVE-2022-22822 to CVE-2022-22827)
The involved functions are:
- addBinding (CVE-2022-22822)
- build_model (CVE-2022-22823)
- defineAttribute (CVE-2022-22824)
- lookup (CVE-2022-22825)
- nextScaffoldPart (CVE-2022-22826)
- storeAtts (CVE-2022-22827)
Upstream-Status: Backport:
https://github.com/libexpat/libexpat/pull/539/commits/9f93e8036e842329863bf20395b8fb8f73834d9e
CVE: CVE-2022-22822 CVE-2022-22823 CVE-2022-22824 CVE-2022-22825 CVE-2022-22826 CVE-2022-22827
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
expat/lib/xmlparse.c | 153 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 151 insertions(+), 2 deletions(-)
diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c
index 8f243126..575e73ee 100644
--- a/lib/xmlparse.c
+++ b/lib/xmlparse.c
@@ -3261,13 +3261,38 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr,
/* get the attributes from the tokenizer */
n = XmlGetAttributes(enc, attStr, parser->m_attsSize, parser->m_atts);
+
+ /* Detect and prevent integer overflow */
+ if (n > INT_MAX - nDefaultAtts) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
if (n + nDefaultAtts > parser->m_attsSize) {
int oldAttsSize = parser->m_attsSize;
ATTRIBUTE *temp;
#ifdef XML_ATTR_INFO
XML_AttrInfo *temp2;
#endif
+
+ /* Detect and prevent integer overflow */
+ if ((nDefaultAtts > INT_MAX - INIT_ATTS_SIZE)
+ || (n > INT_MAX - (nDefaultAtts + INIT_ATTS_SIZE))) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
parser->m_attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
+
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(ATTRIBUTE)) {
+ parser->m_attsSize = oldAttsSize;
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts,
parser->m_attsSize * sizeof(ATTRIBUTE));
if (temp == NULL) {
@@ -3276,6 +3301,17 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr,
}
parser->m_atts = temp;
#ifdef XML_ATTR_INFO
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+# if UINT_MAX >= SIZE_MAX
+ if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(XML_AttrInfo)) {
+ parser->m_attsSize = oldAttsSize;
+ return XML_ERROR_NO_MEMORY;
+ }
+# endif
+
temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo,
parser->m_attsSize * sizeof(XML_AttrInfo));
if (temp2 == NULL) {
@@ -3610,9 +3646,31 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr,
tagNamePtr->prefixLen = prefixLen;
for (i = 0; localPart[i++];)
; /* i includes null terminator */
+
+ /* Detect and prevent integer overflow */
+ if (binding->uriLen > INT_MAX - prefixLen
+ || i > INT_MAX - (binding->uriLen + prefixLen)) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
n = i + binding->uriLen + prefixLen;
if (n > binding->uriAlloc) {
TAG *p;
+
+ /* Detect and prevent integer overflow */
+ if (n > INT_MAX - EXPAND_SPARE) {
+ return XML_ERROR_NO_MEMORY;
+ }
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if ((unsigned)(n + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) {
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char));
if (! uri)
return XML_ERROR_NO_MEMORY;
@@ -3708,6 +3766,21 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
if (parser->m_freeBindingList) {
b = parser->m_freeBindingList;
if (len > b->uriAlloc) {
+ /* Detect and prevent integer overflow */
+ if (len > INT_MAX - EXPAND_SPARE) {
+ return XML_ERROR_NO_MEMORY;
+ }
+
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) {
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
XML_Char *temp = (XML_Char *)REALLOC(
parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE));
if (temp == NULL)
@@ -3720,6 +3793,21 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
b = (BINDING *)MALLOC(parser, sizeof(BINDING));
if (! b)
return XML_ERROR_NO_MEMORY;
+
+ /* Detect and prevent integer overflow */
+ if (len > INT_MAX - EXPAND_SPARE) {
+ return XML_ERROR_NO_MEMORY;
+ }
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) {
+ return XML_ERROR_NO_MEMORY;
+ }
+#endif
+
b->uri
= (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE));
if (! b->uri) {
@@ -6141,7 +6229,24 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
}
} else {
DEFAULT_ATTRIBUTE *temp;
+
+ /* Detect and prevent integer overflow */
+ if (type->allocDefaultAtts > INT_MAX / 2) {
+ return 0;
+ }
+
int count = type->allocDefaultAtts * 2;
+
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if ((unsigned)count > (size_t)(-1) / sizeof(DEFAULT_ATTRIBUTE)) {
+ return 0;
+ }
+#endif
+
temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts,
(count * sizeof(DEFAULT_ATTRIBUTE)));
if (temp == NULL)
@@ -6792,8 +6897,20 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) {
/* check for overflow (table is half full) */
if (table->used >> (table->power - 1)) {
unsigned char newPower = table->power + 1;
+
+ /* Detect and prevent invalid shift */
+ if (newPower >= sizeof(unsigned long) * 8 /* bits per byte */) {
+ return NULL;
+ }
+
size_t newSize = (size_t)1 << newPower;
unsigned long newMask = (unsigned long)newSize - 1;
+
+ /* Detect and prevent integer overflow */
+ if (newSize > (size_t)(-1) / sizeof(NAMED *)) {
+ return NULL;
+ }
+
size_t tsize = newSize * sizeof(NAMED *);
NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
if (! newV)
@@ -7143,6 +7260,20 @@ nextScaffoldPart(XML_Parser parser) {
if (dtd->scaffCount >= dtd->scaffSize) {
CONTENT_SCAFFOLD *temp;
if (dtd->scaffold) {
+ /* Detect and prevent integer overflow */
+ if (dtd->scaffSize > UINT_MAX / 2u) {
+ return -1;
+ }
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if (dtd->scaffSize > (size_t)(-1) / 2u / sizeof(CONTENT_SCAFFOLD)) {
+ return -1;
+ }
+#endif
+
temp = (CONTENT_SCAFFOLD *)REALLOC(
parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
if (temp == NULL)
@@ -7212,8 +7343,26 @@ build_model(XML_Parser parser) {
XML_Content *ret;
XML_Content *cpos;
XML_Char *str;
- int allocsize = (dtd->scaffCount * sizeof(XML_Content)
- + (dtd->contentStringLen * sizeof(XML_Char)));
+
+ /* Detect and prevent integer overflow.
+ * The preprocessor guard addresses the "always false" warning
+ * from -Wtype-limits on platforms where
+ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */
+#if UINT_MAX >= SIZE_MAX
+ if (dtd->scaffCount > (size_t)(-1) / sizeof(XML_Content)) {
+ return NULL;
+ }
+ if (dtd->contentStringLen > (size_t)(-1) / sizeof(XML_Char)) {
+ return NULL;
+ }
+#endif
+ if (dtd->scaffCount * sizeof(XML_Content)
+ > (size_t)(-1) - dtd->contentStringLen * sizeof(XML_Char)) {
+ return NULL;
+ }
+
+ const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content)
+ + (dtd->contentStringLen * sizeof(XML_Char)));
ret = (XML_Content *)MALLOC(parser, allocsize);
if (! ret)

View File

@@ -1,6 +1,6 @@
SUMMARY = "A stream-oriented XML parser library"
DESCRIPTION = "Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags)"
HOMEPAGE = "http://expat.sourceforge.net/"
HOMEPAGE = "https://github.com/libexpat/libexpat"
SECTION = "libs"
LICENSE = "MIT"
@@ -8,6 +8,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5b8620d98e49772d95fc1d291c26aa79"
SRC_URI = "git://github.com/libexpat/libexpat.git;protocol=https;branch=master \
file://CVE-2013-0340.patch \
file://CVE-2021-45960.patch \
file://CVE-2021-46143.patch \
file://CVE-2022-22822-27.patch \
file://libtool-tag.patch \
"

View File

@@ -0,0 +1,66 @@
From c0669ae1a629e16b536bf11cdd0865e0dbcf4bee Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed, 30 Dec 2020 21:52:38 +0000
Subject: [PATCH] elf: Refactor _dl_update_slotinfo to avoid use after free
map is not valid to access here because it can be freed by a concurrent
dlclose: during tls access (via __tls_get_addr) _dl_update_slotinfo is
called without holding dlopen locks. So don't check the modid of map.
The map == 0 and map != 0 code paths can be shared (avoiding the dtv
resize in case of map == 0 is just an optimization: larger dtv than
necessary would be fine too).
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
elf/dl-tls.c | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=c0669ae1a629e16b536bf11cdd0865e0dbcf4bee]
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 24d00c14ef..f8b32b3ecb 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -743,6 +743,8 @@ _dl_update_slotinfo (unsigned long int req_modid)
{
for (size_t cnt = total == 0 ? 1 : 0; cnt < listp->len; ++cnt)
{
+ size_t modid = total + cnt;
+
size_t gen = listp->slotinfo[cnt].gen;
if (gen > new_gen)
@@ -758,25 +760,12 @@ _dl_update_slotinfo (unsigned long int req_modid)
/* If there is no map this means the entry is empty. */
struct link_map *map = listp->slotinfo[cnt].map;
- if (map == NULL)
- {
- if (dtv[-1].counter >= total + cnt)
- {
- /* If this modid was used at some point the memory
- might still be allocated. */
- free (dtv[total + cnt].pointer.to_free);
- dtv[total + cnt].pointer.val = TLS_DTV_UNALLOCATED;
- dtv[total + cnt].pointer.to_free = NULL;
- }
-
- continue;
- }
-
/* Check whether the current dtv array is large enough. */
- size_t modid = map->l_tls_modid;
- assert (total + cnt == modid);
if (dtv[-1].counter < modid)
{
+ if (map == NULL)
+ continue;
+
/* Resize the dtv. */
dtv = _dl_resize_dtv (dtv);
--
2.27.0

View File

@@ -0,0 +1,191 @@
From 1387ad6225c2222f027790e3f460e31aa5dd2c54 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed, 30 Dec 2020 19:19:37 +0000
Subject: [PATCH] elf: Fix data races in pthread_create and TLS access [BZ
#19329]
DTV setup at thread creation (_dl_allocate_tls_init) is changed
to take the dlopen lock, GL(dl_load_lock). Avoiding data races
here without locks would require design changes: the map that is
accessed for static TLS initialization here may be concurrently
freed by dlclose. That use after free may be solved by only
locking around static TLS setup or by ensuring dlclose does not
free modules with static TLS, however currently every link map
with TLS has to be accessed at least to see if it needs static
TLS. And even if that's solved, still a lot of atomics would be
needed to synchronize DTV related globals without a lock. So fix
both bug 19329 and bug 27111 with a lock that prevents DTV setup
running concurrently with dlopen or dlclose.
_dl_update_slotinfo at TLS access still does not use any locks
so CONCURRENCY NOTES are added to explain the synchronization.
The early exit from the slotinfo walk when max_modid is reached
is not strictly necessary, but does not hurt either.
An incorrect acquire load was removed from _dl_resize_dtv: it
did not synchronize with any release store or fence and
synchronization is now handled separately at thread creation
and TLS access time.
There are still a number of racy read accesses to globals that
will be changed to relaxed MO atomics in a followup patch. This
should not introduce regressions compared to existing behaviour
and avoid cluttering the main part of the fix.
Not all TLS access related data races got fixed here: there are
additional races at lazy tlsdesc relocations see bug 27137.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
elf/dl-tls.c | 63 +++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 47 insertions(+), 16 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=1387ad6225c2222f027790e3f460e31aa5dd2c54]
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 6baff0c1ea..94f3cdbae0 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -475,14 +475,11 @@ extern dtv_t _dl_static_dtv[];
#endif
static dtv_t *
-_dl_resize_dtv (dtv_t *dtv)
+_dl_resize_dtv (dtv_t *dtv, size_t max_modid)
{
/* Resize the dtv. */
dtv_t *newp;
- /* Load GL(dl_tls_max_dtv_idx) atomically since it may be written to by
- other threads concurrently. */
- size_t newsize
- = atomic_load_acquire (&GL(dl_tls_max_dtv_idx)) + DTV_SURPLUS;
+ size_t newsize = max_modid + DTV_SURPLUS;
size_t oldsize = dtv[-1].counter;
if (dtv == GL(dl_initial_dtv))
@@ -528,11 +525,14 @@ _dl_allocate_tls_init (void *result)
size_t total = 0;
size_t maxgen = 0;
+ /* Protects global dynamic TLS related state. */
+ __rtld_lock_lock_recursive (GL(dl_load_lock));
+
/* Check if the current dtv is big enough. */
if (dtv[-1].counter < GL(dl_tls_max_dtv_idx))
{
/* Resize the dtv. */
- dtv = _dl_resize_dtv (dtv);
+ dtv = _dl_resize_dtv (dtv, GL(dl_tls_max_dtv_idx));
/* Install this new dtv in the thread data structures. */
INSTALL_DTV (result, &dtv[-1]);
@@ -600,6 +600,7 @@ _dl_allocate_tls_init (void *result)
listp = listp->next;
assert (listp != NULL);
}
+ __rtld_lock_unlock_recursive (GL(dl_load_lock));
/* The DTV version is up-to-date now. */
dtv[0].counter = maxgen;
@@ -734,12 +735,29 @@ _dl_update_slotinfo (unsigned long int req_modid)
if (dtv[0].counter < listp->slotinfo[idx].gen)
{
- /* The generation counter for the slot is higher than what the
- current dtv implements. We have to update the whole dtv but
- only those entries with a generation counter <= the one for
- the entry we need. */
+ /* CONCURRENCY NOTES:
+
+ Here the dtv needs to be updated to new_gen generation count.
+
+ This code may be called during TLS access when GL(dl_load_lock)
+ is not held. In that case the user code has to synchronize with
+ dlopen and dlclose calls of relevant modules. A module m is
+ relevant if the generation of m <= new_gen and dlclose of m is
+ synchronized: a memory access here happens after the dlopen and
+ before the dlclose of relevant modules. The dtv entries for
+ relevant modules need to be updated, other entries can be
+ arbitrary.
+
+ This e.g. means that the first part of the slotinfo list can be
+ accessed race free, but the tail may be concurrently extended.
+ Similarly relevant slotinfo entries can be read race free, but
+ other entries are racy. However updating a non-relevant dtv
+ entry does not affect correctness. For a relevant module m,
+ max_modid >= modid of m. */
size_t new_gen = listp->slotinfo[idx].gen;
size_t total = 0;
+ size_t max_modid = atomic_load_relaxed (&GL(dl_tls_max_dtv_idx));
+ assert (max_modid >= req_modid);
/* We have to look through the entire dtv slotinfo list. */
listp = GL(dl_tls_dtv_slotinfo_list);
@@ -749,12 +767,14 @@ _dl_update_slotinfo (unsigned long int req_modid)
{
size_t modid = total + cnt;
+ /* Later entries are not relevant. */
+ if (modid > max_modid)
+ break;
+
size_t gen = listp->slotinfo[cnt].gen;
if (gen > new_gen)
- /* This is a slot for a generation younger than the
- one we are handling now. It might be incompletely
- set up so ignore it. */
+ /* Not relevant. */
continue;
/* If the entry is older than the current dtv layout we
@@ -771,7 +791,7 @@ _dl_update_slotinfo (unsigned long int req_modid)
continue;
/* Resize the dtv. */
- dtv = _dl_resize_dtv (dtv);
+ dtv = _dl_resize_dtv (dtv, max_modid);
assert (modid <= dtv[-1].counter);
@@ -793,8 +813,17 @@ _dl_update_slotinfo (unsigned long int req_modid)
}
total += listp->len;
+ if (total > max_modid)
+ break;
+
+ /* Synchronize with _dl_add_to_slotinfo. Ideally this would
+ be consume MO since we only need to order the accesses to
+ the next node after the read of the address and on most
+ hardware (other than alpha) a normal load would do that
+ because of the address dependency. */
+ listp = atomic_load_acquire (&listp->next);
}
- while ((listp = listp->next) != NULL);
+ while (listp != NULL);
/* This will be the new maximum generation counter. */
dtv[0].counter = new_gen;
@@ -986,7 +1015,7 @@ _dl_add_to_slotinfo (struct link_map *l, bool do_add)
the first slot. */
assert (idx == 0);
- listp = prevp->next = (struct dtv_slotinfo_list *)
+ listp = (struct dtv_slotinfo_list *)
malloc (sizeof (struct dtv_slotinfo_list)
+ TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
if (listp == NULL)
@@ -1000,6 +1029,8 @@ cannot create TLS data structures"));
listp->next = NULL;
memset (listp->slotinfo, '\0',
TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
+ /* Synchronize with _dl_update_slotinfo. */
+ atomic_store_release (&prevp->next, listp);
}
/* Add the information into the slotinfo data structure. */
--
2.27.0

View File

@@ -0,0 +1,206 @@
From f4f8f4d4e0f92488431b268c8cd9555730b9afe9 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed, 30 Dec 2020 19:19:37 +0000
Subject: [PATCH] elf: Use relaxed atomics for racy accesses [BZ #19329]
This is a follow up patch to the fix for bug 19329. This adds relaxed
MO atomics to accesses that were previously data races but are now
race conditions, and where relaxed MO is sufficient.
The race conditions all follow the pattern that the write is behind the
dlopen lock, but a read can happen concurrently (e.g. during tls access)
without holding the lock. For slotinfo entries the read value only
matters if it reads from a synchronized write in dlopen or dlclose,
otherwise the related dtv entry is not valid to access so it is fine
to leave it in an inconsistent state. The same applies for
GL(dl_tls_max_dtv_idx) and GL(dl_tls_generation), but there the
algorithm relies on the fact that the read of the last synchronized
write is an increasing value.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
elf/dl-close.c | 20 +++++++++++++-------
elf/dl-open.c | 5 ++++-
elf/dl-tls.c | 31 +++++++++++++++++++++++--------
sysdeps/x86_64/dl-tls.c | 3 ++-
4 files changed, 42 insertions(+), 17 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=f4f8f4d4e0f92488431b268c8cd9555730b9afe9]
Comment: Hunks from elf/dl-open.c and elf/dl-tls.c are refreshed due to offset change.
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/dl-close.c b/elf/dl-close.c
index c51becd06b..3720e47dd1 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -79,9 +79,10 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
{
assert (old_map->l_tls_modid == idx);
- /* Mark the entry as unused. */
- listp->slotinfo[idx - disp].gen = GL(dl_tls_generation) + 1;
- listp->slotinfo[idx - disp].map = NULL;
+ /* Mark the entry as unused. These can be read concurrently. */
+ atomic_store_relaxed (&listp->slotinfo[idx - disp].gen,
+ GL(dl_tls_generation) + 1);
+ atomic_store_relaxed (&listp->slotinfo[idx - disp].map, NULL);
}
/* If this is not the last currently used entry no need to look
@@ -96,8 +97,8 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
if (listp->slotinfo[idx - disp].map != NULL)
{
- /* Found a new last used index. */
- GL(dl_tls_max_dtv_idx) = idx;
+ /* Found a new last used index. This can be read concurrently. */
+ atomic_store_relaxed (&GL(dl_tls_max_dtv_idx), idx);
return true;
}
}
@@ -571,7 +572,9 @@ _dl_close_worker (struct link_map *map, bool force)
GL(dl_tls_dtv_slotinfo_list), 0,
imap->l_init_called))
/* All dynamically loaded modules with TLS are unloaded. */
- GL(dl_tls_max_dtv_idx) = GL(dl_tls_static_nelem);
+ /* Can be read concurrently. */
+ atomic_store_relaxed (&GL(dl_tls_max_dtv_idx),
+ GL(dl_tls_static_nelem));
if (imap->l_tls_offset != NO_TLS_OFFSET
&& imap->l_tls_offset != FORCED_DYNAMIC_TLS_OFFSET)
@@ -769,8 +772,11 @@ _dl_close_worker (struct link_map *map, bool force)
/* If we removed any object which uses TLS bump the generation counter. */
if (any_tls)
{
- if (__glibc_unlikely (++GL(dl_tls_generation) == 0))
+ size_t newgen = GL(dl_tls_generation) + 1;
+ if (__glibc_unlikely (newgen == 0))
_dl_fatal_printf ("TLS generation counter wrapped! Please report as described in "REPORT_BUGS_TO".\n");
+ /* Can be read concurrently. */
+ atomic_store_relaxed (&GL(dl_tls_generation), newgen);
if (tls_free_end == GL(dl_tls_static_used))
GL(dl_tls_static_used) = tls_free_start;
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 09f0df7d38..bb79ef00f1 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -387,9 +387,12 @@
}
}
- if (__builtin_expect (++GL(dl_tls_generation) == 0, 0))
+ size_t newgen = GL(dl_tls_generation) + 1;
+ if (__glibc_unlikely (newgen == 0))
_dl_fatal_printf (N_("\
TLS generation counter wrapped! Please report this."));
+ /* Can be read concurrently. */
+ atomic_store_relaxed (&GL(dl_tls_generation), newgen);
/* We need a second pass for static tls data, because
_dl_update_slotinfo must not be run while calls to
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 94f3cdbae0..dc69cd984e 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -96,7 +96,9 @@
/* No gaps, allocate a new entry. */
nogaps:
- result = ++GL(dl_tls_max_dtv_idx);
+ result = GL(dl_tls_max_dtv_idx) + 1;
+ /* Can be read concurrently. */
+ atomic_store_relaxed (&GL(dl_tls_max_dtv_idx), result);
}
return result;
@@ -279,10 +281,12 @@
dtv_t *dtv;
size_t dtv_length;
+ /* Relaxed MO, because the dtv size is later rechecked, not relied on. */
+ size_t max_modid = atomic_load_relaxed (&GL(dl_tls_max_dtv_idx));
/* We allocate a few more elements in the dtv than are needed for the
initial set of modules. This should avoid in most cases expansions
of the dtv. */
- dtv_length = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS;
+ dtv_length = max_modid + DTV_SURPLUS;
dtv = calloc (dtv_length + 2, sizeof (dtv_t));
if (dtv != NULL)
{
@@ -687,7 +691,7 @@
if (modid > max_modid)
break;
- size_t gen = listp->slotinfo[cnt].gen;
+ size_t gen = atomic_load_relaxed (&listp->slotinfo[cnt].gen);
if (gen > new_gen)
/* Not relevant. */
@@ -699,7 +703,8 @@
continue;
/* If there is no map this means the entry is empty. */
- struct link_map *map = listp->slotinfo[cnt].map;
+ struct link_map *map
+ = atomic_load_relaxed (&listp->slotinfo[cnt].map);
/* Check whether the current dtv array is large enough. */
if (dtv[-1].counter < modid)
{
@@ -843,7 +848,12 @@
{
dtv_t *dtv = THREAD_DTV ();
- if (__glibc_unlikely (dtv[0].counter != GL(dl_tls_generation)))
+ /* Update is needed if dtv[0].counter < the generation of the accessed
+ module. The global generation counter is used here as it is easier
+ to check. Synchronization for the relaxed MO access is guaranteed
+ by user code, see CONCURRENCY NOTES in _dl_update_slotinfo. */
+ size_t gen = atomic_load_relaxed (&GL(dl_tls_generation));
+ if (__glibc_unlikely (dtv[0].counter != gen))
return update_get_addr (GET_ADDR_PARAM);
void *p = dtv[GET_ADDR_MODULE].pointer.val;
@@ -866,7 +876,10 @@
return NULL;
dtv_t *dtv = THREAD_DTV ();
- if (__glibc_unlikely (dtv[0].counter != GL(dl_tls_generation)))
+ /* This may be called without holding the GL(dl_load_lock). Reading
+ arbitrary gen value is fine since this is best effort code. */
+ size_t gen = atomic_load_relaxed (&GL(dl_tls_generation));
+ if (__glibc_unlikely (dtv[0].counter != gen))
{
/* This thread's DTV is not completely current,
but it might already cover this module. */
@@ -961,7 +974,9 @@
/* Add the information into the slotinfo data structure. */
if (do_add)
{
- listp->slotinfo[idx].map = l;
- listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
+ /* Can be read concurrently. See _dl_update_slotinfo. */
+ atomic_store_relaxed (&listp->slotinfo[idx].map, l);
+ atomic_store_relaxed (&listp->slotinfo[idx].gen,
+ GL(dl_tls_generation) + 1);
}
}
diff --git a/sysdeps/x86_64/dl-tls.c b/sysdeps/x86_64/dl-tls.c
index 6595f6615b..24ef560b71 100644
--- a/sysdeps/x86_64/dl-tls.c
+++ b/sysdeps/x86_64/dl-tls.c
@@ -40,7 +40,8 @@ __tls_get_addr_slow (GET_ADDR_ARGS)
{
dtv_t *dtv = THREAD_DTV ();
- if (__glibc_unlikely (dtv[0].counter != GL(dl_tls_generation)))
+ size_t gen = atomic_load_relaxed (&GL(dl_tls_generation));
+ if (__glibc_unlikely (dtv[0].counter != gen))
return update_get_addr (GET_ADDR_PARAM);
return tls_get_addr_tail (GET_ADDR_PARAM, dtv, NULL);
--
2.27.0

View File

@@ -0,0 +1,144 @@
From 9d0e30329c23b5ad736fda3f174208c25970dbce Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Tue, 13 Dec 2016 12:28:41 +0000
Subject: [PATCH] elf: Add test case for [BZ #19329]
Test concurrent dlopen and pthread_create when the loaded modules have
TLS. This triggers dl-tls assertion failures more reliably than the
nptl/tst-stack4 test.
The dlopened module has 100 DT_NEEDED dependencies with TLS, they were
reused from an existing TLS test. The number of created threads during
dlopen depends on filesystem speed and hardware, but at most 3 threads
are alive at a time to limit resource usage.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
elf/Makefile | 9 ++++--
elf/tst-tls21.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++
elf/tst-tls21mod.c | 1 +
3 files changed, 76 insertions(+), 2 deletions(-)
create mode 100644 elf/tst-tls21.c
create mode 100644 elf/tst-tls21mod.c
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=9d0e30329c23b5ad736fda3f174208c25970dbce]
Comment: Hunks from elf/Makefile are refreshed as per glibc 2.31 codebase.
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/Makefile b/elf/Makefile
index d3e909637a..3241cb6046 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -201,7 +201,7 @@
tst-unwind-ctor tst-unwind-main tst-audit13 \
tst-sonamemove-link tst-sonamemove-dlopen tst-dlopen-tlsmodid \
tst-dlopen-self tst-auditmany tst-initfinilazyfail tst-dlopenfail \
- tst-dlopenfail-2
+ tst-dlopenfail-2 tst-tls21
# reldep9
tests-internal += loadtest unload unload2 circleload1 \
neededtest neededtest2 neededtest3 neededtest4 \
@@ -312,7 +312,7 @@
tst-auditmanymod7 tst-auditmanymod8 tst-auditmanymod9 \
tst-initlazyfailmod tst-finilazyfailmod \
tst-dlopenfailmod1 tst-dlopenfaillinkmod tst-dlopenfailmod2 \
- tst-dlopenfailmod3 tst-ldconfig-ld-mod
+ tst-dlopenfailmod3 tst-ldconfig-ld-mod tst-tls21mod
# Most modules build with _ISOMAC defined, but those filtered out
# depend on internal headers.
modules-names-tests = $(filter-out ifuncmod% tst-libc_dlvsym-dso tst-tlsmod%,\
@@ -1697,5 +1697,10 @@
$(objpfx)tst-dlopen-nodelete-reloc-mod16.so
LDFLAGS-tst-dlopen-nodelete-reloc-mod17.so = -Wl,--no-as-needed
+# Reuses tst-tls-many-dynamic-modules
+$(objpfx)tst-tls21: $(libdl) $(shared-thread-library)
+$(objpfx)tst-tls21.out: $(objpfx)tst-tls21mod.so
+$(objpfx)tst-tls21mod.so: $(tst-tls-many-dynamic-modules:%=$(objpfx)%.so)
+
$(objpfx)tst-ldconfig-ld_so_conf-update.out: $(objpfx)tst-ldconfig-ld-mod.so
$(objpfx)tst-ldconfig-ld_so_conf-update: $(libdl)
diff --git a/elf/tst-tls21.c b/elf/tst-tls21.c
new file mode 100644
index 0000000000..560bf5813a
--- /dev/null
+++ b/elf/tst-tls21.c
@@ -0,0 +1,68 @@
+/* Test concurrent dlopen and pthread_create: BZ 19329.
+ Copyright (C) 2021 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <dlfcn.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdatomic.h>
+#include <support/xdlfcn.h>
+#include <support/xthread.h>
+
+#define THREADS 10000
+
+static atomic_int done;
+
+static void *
+start (void *a)
+{
+ /* Load a module with many dependencies that each have TLS. */
+ xdlopen ("tst-tls21mod.so", RTLD_LAZY);
+ atomic_store_explicit (&done, 1, memory_order_release);
+ return 0;
+}
+
+static void *
+nop (void *a)
+{
+ return 0;
+}
+
+static int
+do_test (void)
+{
+ pthread_t t1, t2;
+ int i;
+
+ /* Load a module with lots of dependencies and TLS. */
+ t1 = xpthread_create (0, start, 0);
+
+ /* Concurrently create lots of threads until dlopen is observably done. */
+ for (i = 0; i < THREADS; i++)
+ {
+ if (atomic_load_explicit (&done, memory_order_acquire) != 0)
+ break;
+ t2 = xpthread_create (0, nop, 0);
+ xpthread_join (t2);
+ }
+
+ xpthread_join (t1);
+ printf ("threads created during dlopen: %d\n", i);
+ return 0;
+}
+
+#include <support/test-driver.c>
diff --git a/elf/tst-tls21mod.c b/elf/tst-tls21mod.c
new file mode 100644
index 0000000000..206ece4fb3
--- /dev/null
+++ b/elf/tst-tls21mod.c
@@ -0,0 +1 @@
+int __thread x;
--
2.27.0

View File

@@ -0,0 +1,180 @@
From ba33937be210da5d07f7f01709323743f66011ce Mon Sep 17 00:00:00 2001
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Fri, 25 Jun 2021 10:54:12 -0300
Subject: [PATCH] elf: Fix DTV gap reuse logic (BZ #27135)
This is updated version of the 572bd547d57a (reverted by 40ebfd016ad2)
that fixes the _dl_next_tls_modid issues.
This issue with 572bd547d57a patch is the DTV entry will be only
update on dl_open_worker() with the update_tls_slotinfo() call after
all dependencies are being processed by _dl_map_object_deps(). However
_dl_map_object_deps() itself might call _dl_next_tls_modid(), and since
the _dl_tls_dtv_slotinfo_list::map is not yet set the entry will be
wrongly reused.
This patch fixes by renaming the _dl_next_tls_modid() function to
_dl_assign_tls_modid() and by passing the link_map so it can set
the slotinfo value so a subsequente _dl_next_tls_modid() call will
see the entry as allocated.
The intermediary value is cleared up on remove_slotinfo() for the case
a library fails to load with RTLD_NOW.
This patch fixes BZ #27135.
Checked on x86_64-linux-gnu.
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
---
elf/dl-close.c | 8 +-
elf/dl-load.c | 2 +-
elf/dl-open.c | 10 --
elf/dl-tls.c | 17 +--
elf/rtld.c | 2 +-
sysdeps/generic/ldsodefs.h | 4 +-
6 files changed, 349 insertions(+), 33 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=ba33937be210da5d07f7f01709323743f66011ce]
Comment: Removed hunks those were related to test. Hunk from elf/rtld.c is refreshed.
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 3720e47dd1..f39001cab9 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -77,8 +77,6 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
object that wasn't fully set up. */
if (__glibc_likely (old_map != NULL))
{
- assert (old_map->l_tls_modid == idx);
-
/* Mark the entry as unused. These can be read concurrently. */
atomic_store_relaxed (&listp->slotinfo[idx - disp].gen,
GL(dl_tls_generation) + 1);
@@ -88,7 +86,11 @@ remove_slotinfo (size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
/* If this is not the last currently used entry no need to look
further. */
if (idx != GL(dl_tls_max_dtv_idx))
- return true;
+ {
+ /* There is an unused dtv entry in the middle. */
+ GL(dl_tls_dtv_gaps) = true;
+ return true;
+ }
}
while (idx - disp > (disp == 0 ? 1 + GL(dl_tls_static_nelem) : 0))
diff --git a/elf/dl-load.c b/elf/dl-load.c
index a08df001af..650e4edc35 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1498,7 +1498,7 @@ cannot enable executable stack as shared object requires");
not set up TLS data structures, so don't use them now. */
|| __glibc_likely (GL(dl_tls_dtv_slotinfo_list) != NULL)))
/* Assign the next available module ID. */
- l->l_tls_modid = _dl_next_tls_modid ();
+ _dl_assign_tls_modid (l);
#ifdef DL_AFTER_LOAD
DL_AFTER_LOAD (l);
diff --git a/elf/dl-open.c b/elf/dl-open.c
index a066f39bd0..d2240d8747 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -899,16 +899,6 @@ no more namespaces available for dlmopen()"));
state if relocation failed, for example. */
if (args.map)
{
- /* Maybe some of the modules which were loaded use TLS.
- Since it will be removed in the following _dl_close call
- we have to mark the dtv array as having gaps to fill the
- holes. This is a pessimistic assumption which won't hurt
- if not true. There is no need to do this when we are
- loading the auditing DSOs since TLS has not yet been set
- up. */
- if ((mode & __RTLD_AUDIT) == 0)
- GL(dl_tls_dtv_gaps) = true;
-
_dl_close_worker (args.map, true);
/* All l_nodelete_pending objects should have been deleted
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 2b5161d10a..423e380f7c 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -126,8 +126,8 @@ oom (void)
}
-size_t
-_dl_next_tls_modid (void)
+void
+_dl_assign_tls_modid (struct link_map *l)
{
size_t result;
@@ -157,7 +157,11 @@ _dl_next_tls_modid (void)
}
if (result - disp < runp->len)
- break;
+ {
+ /* Mark the entry as used, so any dependency see it. */
+ atomic_store_relaxed (&runp->slotinfo[result - disp].map, l);
+ break;
+ }
disp += runp->len;
}
@@ -184,17 +188,14 @@ _dl_next_tls_modid (void)
atomic_store_relaxed (&GL(dl_tls_max_dtv_idx), result);
}
- return result;
+ l->l_tls_modid = result;
}
size_t
_dl_count_modids (void)
{
- /* It is rare that we have gaps; see elf/dl-open.c (_dl_open) where
- we fail to load a module and unload it leaving a gap. If we don't
- have gaps then the number of modids is the current maximum so
- return that. */
+ /* The count is the max unless dlclose or failed dlopen created gaps. */
if (__glibc_likely (!GL(dl_tls_dtv_gaps)))
return GL(dl_tls_max_dtv_idx);
diff --git a/elf/rtld.c b/elf/rtld.c
index e3fb2a5b2a..d733359eaf 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1612,7 +1612,7 @@
/* Add the dynamic linker to the TLS list if it also uses TLS. */
if (GL(dl_rtld_map).l_tls_blocksize != 0)
/* Assign a module ID. Do this before loading any audit modules. */
- GL(dl_rtld_map).l_tls_modid = _dl_next_tls_modid ();
+ _dl_assign_tls_modid (&GL(dl_rtld_map));
/* If we have auditing DSOs to load, do it now. */
bool need_security_init = true;
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 176394de4d..9c15259236 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -1171,8 +1171,8 @@ extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
extern void _dl_sysdep_start_cleanup (void) attribute_hidden;
-/* Determine next available module ID. */
-extern size_t _dl_next_tls_modid (void) attribute_hidden;
+/* Determine next available module ID and set the L l_tls_modid. */
+extern void _dl_assign_tls_modid (struct link_map *l) attribute_hidden;
/* Count the modules with TLS segments. */
extern size_t _dl_count_modids (void) attribute_hidden;
--
2.27.0

View File

@@ -0,0 +1,56 @@
From 8f7e09f4dbdb5c815a18b8285fbc5d5d7bc17d86 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Thu, 11 Feb 2021 11:29:23 +0000
Subject: [PATCH] x86_64: Avoid lazy relocation of tlsdesc [BZ #27137]
Lazy tlsdesc relocation is racy because the static tls optimization and
tlsdesc management operations are done without holding the dlopen lock.
This similar to the commit b7cf203b5c17dd6d9878537d41e0c7cc3d270a67
for aarch64, but it fixes a different race: bug 27137.
Another issue is that ld auditing ignores DT_BIND_NOW and thus tries to
relocate tlsdesc lazily, but that does not work in a BIND_NOW module
due to missing DT_TLSDESC_PLT. Unconditionally relocating tlsdesc at
load time fixes this bug 27721 too.
---
sysdeps/x86_64/dl-machine.h | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=8f7e09f4dbdb5c815a18b8285fbc5d5d7bc17d86]
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
index 103eee6c3f..9a876a371e 100644
--- a/sysdeps/x86_64/dl-machine.h
+++ b/sysdeps/x86_64/dl-machine.h
@@ -570,12 +570,21 @@ elf_machine_lazy_rel (struct link_map *map,
}
else if (__glibc_likely (r_type == R_X86_64_TLSDESC))
{
- struct tlsdesc volatile * __attribute__((__unused__)) td =
- (struct tlsdesc volatile *)reloc_addr;
+ const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info);
+ const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]);
+ const ElfW (Sym) *sym = &symtab[symndx];
+ const struct r_found_version *version = NULL;
- td->arg = (void*)reloc;
- td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
- + map->l_addr);
+ if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL)
+ {
+ const ElfW (Half) *vernum =
+ (const void *)D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]);
+ version = &map->l_versions[vernum[symndx] & 0x7fff];
+ }
+
+ /* Always initialize TLS descriptors completely at load time, in
+ case static TLS is allocated for it that requires locking. */
+ elf_machine_rela (map, reloc, sym, version, reloc_addr, skip_ifunc);
}
else if (__glibc_unlikely (r_type == R_X86_64_IRELATIVE))
{
--
2.27.0

View File

@@ -0,0 +1,124 @@
From ddcacd91cc10ff92d6201eda87047d029c14158d Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Thu, 11 Feb 2021 11:40:11 +0000
Subject: [PATCH] i386: Avoid lazy relocation of tlsdesc [BZ #27137]
Lazy tlsdesc relocation is racy because the static tls optimization and
tlsdesc management operations are done without holding the dlopen lock.
This similar to the commit b7cf203b5c17dd6d9878537d41e0c7cc3d270a67
for aarch64, but it fixes a different race: bug 27137.
On i386 the code is a bit more complicated than on x86_64 because both
rel and rela relocs are supported.
---
sysdeps/i386/dl-machine.h | 76 ++++++++++++++++++---------------------
1 file changed, 34 insertions(+), 42 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=ddcacd91cc10ff92d6201eda87047d029c14158d]
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index 23e9cc3bfb..590b41d8d7 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -688,50 +688,32 @@ elf_machine_lazy_rel (struct link_map *map,
}
else if (__glibc_likely (r_type == R_386_TLS_DESC))
{
- struct tlsdesc volatile * __attribute__((__unused__)) td =
- (struct tlsdesc volatile *)reloc_addr;
-
- /* Handle relocations that reference the local *ABS* in a simple
- way, so as to preserve a potential addend. */
- if (ELF32_R_SYM (reloc->r_info) == 0)
- td->entry = _dl_tlsdesc_resolve_abs_plus_addend;
- /* Given a known-zero addend, we can store a pointer to the
- reloc in the arg position. */
- else if (td->arg == 0)
- {
- td->arg = (void*)reloc;
- td->entry = _dl_tlsdesc_resolve_rel;
- }
- else
- {
- /* We could handle non-*ABS* relocations with non-zero addends
- by allocating dynamically an arg to hold a pointer to the
- reloc, but that sounds pointless. */
- const Elf32_Rel *const r = reloc;
- /* The code below was borrowed from elf_dynamic_do_rel(). */
- const ElfW(Sym) *const symtab =
- (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ const Elf32_Rel *const r = reloc;
+ /* The code below was borrowed from elf_dynamic_do_rel(). */
+ const ElfW(Sym) *const symtab =
+ (const void *) D_PTR (map, l_info[DT_SYMTAB]);
+ /* Always initialize TLS descriptors completely at load time, in
+ case static TLS is allocated for it that requires locking. */
# ifdef RTLD_BOOTSTRAP
- /* The dynamic linker always uses versioning. */
- assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
+ /* The dynamic linker always uses versioning. */
+ assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
# else
- if (map->l_info[VERSYMIDX (DT_VERSYM)])
+ if (map->l_info[VERSYMIDX (DT_VERSYM)])
# endif
- {
- const ElfW(Half) *const version =
- (const void *) D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]);
- ElfW(Half) ndx = version[ELFW(R_SYM) (r->r_info)] & 0x7fff;
- elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)],
- &map->l_versions[ndx],
- (void *) (l_addr + r->r_offset), skip_ifunc);
- }
+ {
+ const ElfW(Half) *const version =
+ (const void *) D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]);
+ ElfW(Half) ndx = version[ELFW(R_SYM) (r->r_info)] & 0x7fff;
+ elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)],
+ &map->l_versions[ndx],
+ (void *) (l_addr + r->r_offset), skip_ifunc);
+ }
# ifndef RTLD_BOOTSTRAP
- else
- elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], NULL,
- (void *) (l_addr + r->r_offset), skip_ifunc);
+ else
+ elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], NULL,
+ (void *) (l_addr + r->r_offset), skip_ifunc);
# endif
- }
}
else if (__glibc_unlikely (r_type == R_386_IRELATIVE))
{
@@ -758,11 +740,21 @@ elf_machine_lazy_rela (struct link_map *map,
;
else if (__glibc_likely (r_type == R_386_TLS_DESC))
{
- struct tlsdesc volatile * __attribute__((__unused__)) td =
- (struct tlsdesc volatile *)reloc_addr;
+ const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info);
+ const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]);
+ const ElfW (Sym) *sym = &symtab[symndx];
+ const struct r_found_version *version = NULL;
+
+ if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL)
+ {
+ const ElfW (Half) *vernum =
+ (const void *)D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]);
+ version = &map->l_versions[vernum[symndx] & 0x7fff];
+ }
- td->arg = (void*)reloc;
- td->entry = _dl_tlsdesc_resolve_rela;
+ /* Always initialize TLS descriptors completely at load time, in
+ case static TLS is allocated for it that requires locking. */
+ elf_machine_rela (map, reloc, sym, version, reloc_addr, skip_ifunc);
}
else if (__glibc_unlikely (r_type == R_386_IRELATIVE))
{
--
2.27.0

View File

@@ -0,0 +1,276 @@
From 83b5323261bb72313bffcf37476c1b8f0847c736 Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed, 15 Sep 2021 15:16:19 +0100
Subject: [PATCH] elf: Avoid deadlock between pthread_create and ctors [BZ
#28357]
The fix for bug 19329 caused a regression such that pthread_create can
deadlock when concurrent ctors from dlopen are waiting for it to finish.
Use a new GL(dl_load_tls_lock) in pthread_create that is not taken
around ctors in dlopen.
The new lock is also used in __tls_get_addr instead of GL(dl_load_lock).
The new lock is held in _dl_open_worker and _dl_close_worker around
most of the logic before/after the init/fini routines. When init/fini
routines are running then TLS is in a consistent, usable state.
In _dl_open_worker the new lock requires catching and reraising dlopen
failures that happen in the critical section.
The new lock is reinitialized in a fork child, to keep the existing
behaviour and it is kept recursive in case malloc interposition or TLS
access from signal handlers can retake it. It is not obvious if this
is necessary or helps, but avoids changing the preexisting behaviour.
The new lock may be more appropriate for dl_iterate_phdr too than
GL(dl_load_write_lock), since TLS state of an incompletely loaded
module may be accessed. If the new lock can replace the old one,
that can be a separate change.
Fixes bug 28357.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
---
elf/dl-close.c | 6 ++
elf/dl-open.c | 35 ++++++++-
elf/dl-support.c | 7 ++
elf/dl-tls.c | 16 ++---
elf/rtld.c | 1 +
sysdeps/nptl/fork.c | 3 +
sysdeps/generic/ldsodefs.h | 9 ++-
10 files changed, 235 insertions(+), 12 deletions(-)
---
Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=patch;h=024a7640ab9ecea80e527f4e4d7f7a1868e952c5]
Comment: This patch is refreshed for glibc 2.31. In upstream glibc 2.34 multiple src files are shuffled, updated this patch as per the code present in glibc 2.31. Removed test case.
Signed-off-by: Akash Hadke <akash.hadke@kpit.com>
Signed-off-by: Akash Hadke <hadkeakash4@gmail.com>
---
diff --git a/elf/dl-close.c b/elf/dl-close.c
index 93ff5c96e9..cfe0f1c0c9 100644
--- a/elf/dl-close.c
+++ b/elf/dl-close.c
@@ -551,6 +551,9 @@
size_t tls_free_end;
tls_free_start = tls_free_end = NO_TLS_OFFSET;
+ /* Protects global and module specitic TLS state. */
+ __rtld_lock_lock_recursive (GL(dl_load_tls_lock));
+
/* We modify the list of loaded objects. */
__rtld_lock_lock_recursive (GL(dl_load_write_lock));
@@ -786,6 +789,9 @@
GL(dl_tls_static_used) = tls_free_start;
}
+ /* TLS is cleaned up for the unloaded modules. */
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
+
#ifdef SHARED
/* Auditing checkpoint: we have deleted all objects. */
if (__glibc_unlikely (do_audit))
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 5295e931b0..6ea5dd2457 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -57,6 +57,9 @@
(non-negative). */
unsigned int original_global_scope_pending_adds;
+ /* Set to true if the end of dl_open_worker_begin was reached. */
+ bool worker_continue;
+
/* Original parameters to the program and the current environment. */
int argc;
char **argv;
@@ -473,7 +473,7 @@
}
static void
-dl_open_worker (void *a)
+dl_open_worker_begin (void *a)
{
struct dl_open_args *args = a;
const char *file = args->file;
@@ -747,6 +747,36 @@
if (mode & RTLD_GLOBAL)
add_to_global_resize (new);
+ args->worker_continue = true;
+}
+
+static void
+dl_open_worker (void *a)
+{
+ struct dl_open_args *args = a;
+
+ args->worker_continue = false;
+
+ {
+ /* Protects global and module specific TLS state. */
+ __rtld_lock_lock_recursive (GL(dl_load_tls_lock));
+
+ struct dl_exception ex;
+ int err = _dl_catch_exception (&ex, dl_open_worker_begin, args);
+
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
+
+ if (__glibc_unlikely (ex.errstring != NULL))
+ /* Reraise the error. */
+ _dl_signal_exception (err, &ex, NULL);
+ }
+
+ if (!args->worker_continue)
+ return;
+
+ int mode = args->mode;
+ struct link_map *new = args->map;
+
/* Run the initializer functions of new objects. Temporarily
disable the exception handler, so that lazy binding failures are
fatal. */
diff --git a/elf/dl-support.c b/elf/dl-support.c
index 02e2ed72f5..d99c1f1d62 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -219,6 +219,13 @@
list of loaded objects while an object is added to or removed from
that list. */
__rtld_lock_define_initialized_recursive (, _dl_load_write_lock)
+/* This lock protects global and module specific TLS related data.
+ E.g. it is held in dlopen and dlclose when GL(dl_tls_generation),
+ GL(dl_tls_max_dtv_idx) or GL(dl_tls_dtv_slotinfo_list) are
+ accessed and when TLS related relocations are processed for a
+ module. It was introduced to keep pthread_create accessing TLS
+ state that is being set up. */
+__rtld_lock_define_initialized_recursive (, _dl_load_tls_lock)
#ifdef HAVE_AUX_VECTOR
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index d554ae4497..9260d2d696 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -443,7 +443,7 @@
size_t maxgen = 0;
/* Protects global dynamic TLS related state. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
+ __rtld_lock_lock_recursive (GL(dl_load_tls_lock));
/* Check if the current dtv is big enough. */
if (dtv[-1].counter < GL(dl_tls_max_dtv_idx))
@@ -517,7 +517,7 @@
listp = listp->next;
assert (listp != NULL);
}
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
/* The DTV version is up-to-date now. */
dtv[0].counter = maxgen;
@@ -656,7 +656,7 @@
Here the dtv needs to be updated to new_gen generation count.
- This code may be called during TLS access when GL(dl_load_lock)
+ This code may be called during TLS access when GL(dl_load_tls_lock)
is not held. In that case the user code has to synchronize with
dlopen and dlclose calls of relevant modules. A module m is
relevant if the generation of m <= new_gen and dlclose of m is
@@ -778,11 +778,11 @@
if (__glibc_unlikely (the_map->l_tls_offset
!= FORCED_DYNAMIC_TLS_OFFSET))
{
- __rtld_lock_lock_recursive (GL(dl_load_lock));
+ __rtld_lock_lock_recursive (GL(dl_load_tls_lock));
if (__glibc_likely (the_map->l_tls_offset == NO_TLS_OFFSET))
{
the_map->l_tls_offset = FORCED_DYNAMIC_TLS_OFFSET;
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
}
else if (__glibc_likely (the_map->l_tls_offset
!= FORCED_DYNAMIC_TLS_OFFSET))
@@ -794,7 +794,7 @@
#else
# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
#endif
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
dtv[GET_ADDR_MODULE].pointer.to_free = NULL;
dtv[GET_ADDR_MODULE].pointer.val = p;
@@ -802,7 +802,7 @@
return (char *) p + GET_ADDR_OFFSET;
}
else
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
+ __rtld_lock_unlock_recursive (GL(dl_load_tls_lock));
}
struct dtv_pointer result = allocate_and_init (the_map);
dtv[GET_ADDR_MODULE].pointer = result;
@@ -873,7 +873,7 @@
return NULL;
dtv_t *dtv = THREAD_DTV ();
- /* This may be called without holding the GL(dl_load_lock). Reading
+ /* This may be called without holding the GL(dl_load_tls_lock). Reading
arbitrary gen value is fine since this is best effort code. */
size_t gen = atomic_load_relaxed (&GL(dl_tls_generation));
if (__glibc_unlikely (dtv[0].counter != gen))
diff --git a/elf/rtld.c b/elf/rtld.c
index 8d2bba3d43..9642eb9c92 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -283,6 +283,7 @@
#ifdef _LIBC_REENTRANT
._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
._dl_load_write_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
+ ._dl_load_tls_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
#endif
._dl_nns = 1,
._dl_ns =
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index c471f7b15f..021691b9b7 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -125,6 +125,9 @@
/* Reset the lock the dynamic loader uses to protect its data. */
__rtld_lock_initialize (GL(dl_load_lock));
+ /* Reset the lock protecting dynamic TLS related data. */
+ __rtld_lock_initialize (GL(dl_load_tls_lock));
+
/* Run the handlers registered for the child. */
__run_fork_handlers (atfork_run_child, multiple_threads);
}
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index d49529da0d..9ec1511bb0 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -369,6 +369,13 @@
list of loaded objects while an object is added to or removed
from that list. */
__rtld_lock_define_recursive (EXTERN, _dl_load_write_lock)
+ /* This lock protects global and module specific TLS related data.
+ E.g. it is held in dlopen and dlclose when GL(dl_tls_generation),
+ GL(dl_tls_max_dtv_idx) or GL(dl_tls_dtv_slotinfo_list) are
+ accessed and when TLS related relocations are processed for a
+ module. It was introduced to keep pthread_create accessing TLS
+ state that is being set up. */
+ __rtld_lock_define_recursive (EXTERN, _dl_load_tls_lock)
/* Incremented whenever something may have been added to dl_loaded. */
EXTERN unsigned long long _dl_load_adds;
@@ -1153,7 +1160,7 @@
/* Add module to slot information data. If DO_ADD is false, only the
required memory is allocated. Must be called with GL
- (dl_load_lock) acquired. If the function has already been called
+ (dl_load_tls_lock) acquired. If the function has already been called
for the link map L with !do_add, then this function will not raise
an exception, otherwise it is possible that it encounters a memory
allocation failure. */
--
2.27.0

View File

@@ -70,6 +70,14 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://CVE-2021-33574_1.patch \
file://CVE-2021-33574_2.patch \
file://CVE-2021-38604.patch \
file://0030-elf-Refactor_dl_update-slotinfo-to-avoid-use-after-free.patch \
file://0031-elf-Fix-data-races-in-pthread_create-and-TLS-access-BZ-19329.patch \
file://0032-elf-Use-relaxed-atomics-for-racy-accesses-BZ-19329.patch \
file://0033-elf-Add-test-case-for-BZ-19329.patch \
file://0034-elf-Fix-DTV-gap-reuse-logic-BZ-27135.patch \
file://0035-x86_64-Avoid-lazy-relocation-of-tlsdesc-BZ-27137.patch \
file://0036-i386-Avoid-lazy-relocation-of-tlsdesc-BZ-27137.patch \
file://0037-Avoid-deadlock-between-pthread_create-and-ctors.patch \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build-${TARGET_SYS}"

View File

@@ -24,7 +24,7 @@ IMAGE_FSTYPES = "wic.vmdk"
inherit core-image setuptools3
SRCREV ?= "38793eecdadd86343e1bc95281efa1f1ecba1876"
SRCREV ?= "d752cbcbbeeea9adbcc9aa74def1761f34a9de54"
SRC_URI = "git://git.yoctoproject.org/poky;branch=dunfell \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \

View File

@@ -17,7 +17,7 @@ python () {
raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
}
python do_populate_cve_db() {
python do_fetch() {
"""
Update NVD database with json data feed
"""
@@ -110,7 +110,9 @@ python do_populate_cve_db() {
conn.close()
}
do_populate_cve_db[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}"
do_fetch[lockfiles] += "${CVE_CHECK_DB_FILE_LOCK}"
do_fetch[file-checksums] = ""
do_fetch[vardeps] = ""
def initialize_db(c):
c.execute("CREATE TABLE IF NOT EXISTS META (YEAR INTEGER UNIQUE, DATE TEXT)")
@@ -217,7 +219,6 @@ def update_db(c, jsondata):
parse_node_and_insert(c, config, cveId)
addtask do_populate_cve_db before do_fetch
do_populate_cve_db[nostamp] = "1"
do_fetch[nostamp] = "1"
EXCLUDE_FROM_WORLD = "1"

View File

@@ -0,0 +1,68 @@
From 988ca784d4840c87509e770a21d5d22105af8668 Mon Sep 17 00:00:00 2001
From: Mingli Yu <mingli.yu@windriver.com>
Date: Fri, 5 Nov 2021 11:18:07 +0800
Subject: [PATCH] bootchartd.in: make sure only one bootchartd process
When boot with "init=/sbin/bootchartd" as below:
# runqemu qemux86 bootparams="init=/sbin/bootchartd"
There are two bootchartd process after boot [1].
# ps -ef | grep bootchart
root 101 1 0 03:27 ? 00:00:00 /bin/sh /sbin/bootchartd
root 103 101 8 03:27 ? 00:00:02 /lib64/bootchart/bootchart-collector 50
root 106 1 0 03:27 ? 00:00:00 /bin/sh /sbin/bootchartd
root 792 106 0 03:27 ? 00:00:00 /lib64/bootchart/bootchart-collector --usleep 1000000
root 794 725 0 03:27 ttyS0 00:00:00 grep bootchart
# /sbin/bootchartd stop
[bootchart] bootchart-collector started as pid 596 with 2 args:
[bootchart] '--dump'
[bootchart] '/tmp/bootchart.3lXpVDAq3v'
[bootchart] Extracting profile data from pid 204
[bootchart] map 0xbed9a000 -> 0xbedbb000 size: 132k from 'bed9a000' 'bedbb000'
[bootchart] read 135168 bytes of 135168
[bootchart] reading 150 chunks (of 150) ...
[bootchart] wrote 18760 kbB
[bootchart] bootchart-collector pid: 596 unmounted proc / clean exit
But there still one process exist after the above stop command finish.
# ps -ef | grep bootchartd
root 202 1 0 09:09 ? 00:00:00 /bin/sh /sbin/bootchartd
root 629 516 0 09:10 ? 00:00:00 grep bootchartd
Remove the wait_boot which used to wait the boot process to finish to
make sure only one bootchartd process and meanwhile we don't need the
wait_boot logic because we either use "/sbin/bootchartd stop" to stop
the bootchartd manually or install package bootchartd-stop-initscript
altogether with bootchart2 to stop bootchartd automatically after boot.
After patch:
# ps -ef | grep bootchart
root 101 1 0 03:36 ? 00:00:00 /bin/sh /sbin/bootchartd
root 103 101 6 03:36 ? 00:00:04 /lib64/bootchart/bootchart-collector 50
root 596 592 0 03:37 ttyS0 00:00:00 grep bootchart
[1] https://github.com/xrmx/bootchart/issues/94
Upstream-Status: Submitted [https://github.com/xrmx/bootchart/pull/95]
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
bootchartd.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/bootchartd.in b/bootchartd.in
index 7979ef9..f0e466d 100755
--- a/bootchartd.in
+++ b/bootchartd.in
@@ -183,7 +183,6 @@ if [ $$ -eq 1 ]; then
else # running inside the main system
echo "bootchart: no initrd used; starting"
start &
- wait_boot &
# wait a little, until the collector is going, before allowing
# the rest of the system to charge ahead, so we catch it
$USLEEP 250000
--
2.17.1

View File

@@ -94,6 +94,7 @@ SRC_URI = "git://github.com/xrmx/bootchart.git;branch=master;protocol=https \
file://bootchartd_stop.sh \
file://0001-collector-Allocate-space-on-heap-for-chunks.patch \
file://0001-bootchart2-support-usrmerge.patch \
file://0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch \
"
S = "${WORKDIR}/git"

View File

@@ -120,6 +120,7 @@ drd/tests/tc19_shadowmem
drd/tests/tc21_pthonce
drd/tests/tc22_exit_w_lock
drd/tests/tc23_bogus_condwait
gdbserver_tests/hginfo
helgrind/tests/annotate_rwlock
helgrind/tests/annotate_smart_pointer
helgrind/tests/bar_bad

View File

@@ -1,2 +1,3 @@
drd/tests/bar_bad
drd/tests/bar_bad_xml
gdbserver_tests/hginfo

View File

@@ -0,0 +1,42 @@
From 44d2d6095246124c024230f89c1029794491839f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Fri, 30 Oct 2020 15:10:35 +0100
Subject: [PATCH] Properly detect and compare Python version 3.10+ (#151)
Upstream commit: https://github.com/asciidoc-py/asciidoc-py/commit/44d2d6095246124c024230f89c1029794491839f
Slightly modified to cleanly apply to asciidoc 8.6.9:
- VERSION and MIN_PYTHON_VERSION changed to reflect values in 8.6.9
- line numbers corrected to eliminate offset warnings
Upstream-Status: Backport
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
asciidoc.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/asciidoc.py b/asciidoc.py
index f960e7d8..42868c4b 100755
--- a/asciidoc.py
+++ b/asciidoc.py
@@ -30,7 +30,7 @@
# Used by asciidocapi.py #
VERSION = '8.6.10' # See CHANGELOG file for version history.
-MIN_PYTHON_VERSION = '3.4' # Require this version of Python or better.
+MIN_PYTHON_VERSION = (3, 4) # Require this version of Python or better.
# ---------------------------------------------------------------------------
# Program constants.
@@ -4704,8 +4704,8 @@ def init(self, cmd):
directory.
cmd is the asciidoc command or asciidoc.py path.
"""
- if float(sys.version[:3]) < float(MIN_PYTHON_VERSION):
- message.stderr('FAILED: Python %s or better required' % MIN_PYTHON_VERSION)
+ if sys.version_info[:2] < MIN_PYTHON_VERSION:
+ message.stderr('FAILED: Python %d.%d or better required' % MIN_PYTHON_VERSION)
sys.exit(1)
if not os.path.exists(cmd):
message.stderr('FAILED: Missing asciidoc command: %s' % cmd)

View File

@@ -9,7 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
file://COPYRIGHT;md5=029ad5428ba5efa20176b396222d4069"
SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=main \
file://auto-catalogs.patch"
file://auto-catalogs.patch \
file://detect-python-version.patch"
SRCREV = "618f6e6f6b558ed1e5f2588cd60a5a6b4f881ca0"
PV .= "+py3-git${SRCPV}"

View File

@@ -23,15 +23,6 @@ add_openvt_argument() {
openvt_args="$openvt_args $1"
}
## Add module to --modules argument
add_weston_module() {
if [ -z "${weston_modules}" ]; then
weston_modules="--modules "
fi;
weston_modules="${weston_modules}${1},"
}
if [ -n "$WAYLAND_DISPLAY" ]; then
echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet."
exit 1
@@ -74,9 +65,6 @@ if [ -d "$modules_dir" ]; then
# process module
. $m
done
if [ -n "${weston_modules}" ]; then
add_weston_argument "${weston_modules} "
fi;
fi
if test -z "$XDG_RUNTIME_DIR"; then

View File

@@ -1,7 +1,3 @@
# SPDX-FileCopyrightText: Huawei Inc.
#
# SPDX-License-Identifier: Apache-2.0
[Unit]
Description=Weston Wayland Compositor
RequiresMountsFor=/run
@@ -9,8 +5,6 @@ Conflicts=plymouth-quit.service
After=systemd-user-sessions.service plymouth-quit-wait.service
[Service]
Type=notify
NotifyAccess=all
User=%i
PAMName=login
EnvironmentFile=-/etc/default/weston

View File

@@ -0,0 +1,32 @@
From 5c74a0640e873694bf60a88eceb21f664cb4b8f7 Mon Sep 17 00:00:00 2001
From: Marius Vlad <marius.vlad@collabora.com>
Date: Fri, 5 Mar 2021 20:03:49 +0200
Subject: [PATCH 2/5] desktop-shell: Remove no-op de-activation of the xdg
top-level surface
The shsurf is calloc'ed so the surface count is always 0. Not only
that but the surface is not set as active by default, so there's no
need to de-activate it.
Upstream-Status: Backport [05bef4c18a3e82376a46a4a28d978389c4c0fd0f]
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
---
desktop-shell/shell.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 442a625f..3791be25 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -2427,8 +2427,6 @@ desktop_surface_added(struct weston_desktop_surface *desktop_surface,
wl_list_init(&shsurf->children_link);
weston_desktop_surface_set_user_data(desktop_surface, shsurf);
- weston_desktop_surface_set_activated(desktop_surface,
- shsurf->focus_count > 0);
}
static void
--
2.34.1

View File

@@ -0,0 +1,57 @@
From edb31c456ae3da7ffffefb668a37ab88075c4b67 Mon Sep 17 00:00:00 2001
From: Marius Vlad <marius.vlad@collabora.com>
Date: Fri, 5 Mar 2021 21:40:22 +0200
Subject: [PATCH 3/5] desktop-shell: Rename gain/lose keyboard focus to
activate/de-activate
This way it better reflects that it handles activation rather that input
focus.
Upstream-Status: Backport [ab39e1d76d4f6715cb300bc37f5c2a0e2d426208]
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
---
desktop-shell/shell.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 3791be25..c4669f11 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -1869,14 +1869,14 @@ handle_pointer_focus(struct wl_listener *listener, void *data)
}
static void
-shell_surface_lose_keyboard_focus(struct shell_surface *shsurf)
+shell_surface_deactivate(struct shell_surface *shsurf)
{
if (--shsurf->focus_count == 0)
weston_desktop_surface_set_activated(shsurf->desktop_surface, false);
}
static void
-shell_surface_gain_keyboard_focus(struct shell_surface *shsurf)
+shell_surface_activate(struct shell_surface *shsurf)
{
if (shsurf->focus_count++ == 0)
weston_desktop_surface_set_activated(shsurf->desktop_surface, true);
@@ -1891,7 +1891,7 @@ handle_keyboard_focus(struct wl_listener *listener, void *data)
if (seat->focused_surface) {
struct shell_surface *shsurf = get_shell_surface(seat->focused_surface);
if (shsurf)
- shell_surface_lose_keyboard_focus(shsurf);
+ shell_surface_deactivate(shsurf);
}
seat->focused_surface = weston_surface_get_main_surface(keyboard->focus);
@@ -1899,7 +1899,7 @@ handle_keyboard_focus(struct wl_listener *listener, void *data)
if (seat->focused_surface) {
struct shell_surface *shsurf = get_shell_surface(seat->focused_surface);
if (shsurf)
- shell_surface_gain_keyboard_focus(shsurf);
+ shell_surface_activate(shsurf);
}
}
--
2.34.1

View File

@@ -0,0 +1,99 @@
From 899ad5a6a8a92f2c10e0694a45c982b7d878aed6 Mon Sep 17 00:00:00 2001
From: Marius Vlad <marius.vlad@collabora.com>
Date: Fri, 5 Mar 2021 21:44:26 +0200
Subject: [PATCH 4/5] desktop-shell: Embed keyboard focus handle code when
activating
We shouldn't be constrained by having a keyboard plugged-in, so avoid
activating/de-activating the window/surface in the keyboard focus
handler and embed it straight into the window activation part.
Upstream-Status: Backport [f12697bb3e4c6eb85437ed905e7de44ae2a0ba69]
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
---
desktop-shell/shell.c | 41 +++++++++++++++++++++++++----------------
1 file changed, 25 insertions(+), 16 deletions(-)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index c4669f11..c6a4fe91 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -1885,22 +1885,7 @@ shell_surface_activate(struct shell_surface *shsurf)
static void
handle_keyboard_focus(struct wl_listener *listener, void *data)
{
- struct weston_keyboard *keyboard = data;
- struct shell_seat *seat = get_shell_seat(keyboard->seat);
-
- if (seat->focused_surface) {
- struct shell_surface *shsurf = get_shell_surface(seat->focused_surface);
- if (shsurf)
- shell_surface_deactivate(shsurf);
- }
-
- seat->focused_surface = weston_surface_get_main_surface(keyboard->focus);
-
- if (seat->focused_surface) {
- struct shell_surface *shsurf = get_shell_surface(seat->focused_surface);
- if (shsurf)
- shell_surface_activate(shsurf);
- }
+ /* FIXME: To be removed later. */
}
/* The surface will be inserted into the list immediately after the link
@@ -2438,6 +2423,7 @@ desktop_surface_removed(struct weston_desktop_surface *desktop_surface,
struct shell_surface *shsurf_child, *tmp;
struct weston_surface *surface =
weston_desktop_surface_get_surface(desktop_surface);
+ struct weston_seat *seat;
if (!shsurf)
return;
@@ -2448,6 +2434,18 @@ desktop_surface_removed(struct weston_desktop_surface *desktop_surface,
}
wl_list_remove(&shsurf->children_link);
+ wl_list_for_each(seat, &shsurf->shell->compositor->seat_list, link) {
+ struct shell_seat *shseat = get_shell_seat(seat);
+ /* activate() controls the focused surface activation and
+ * removal of a surface requires invalidating the
+ * focused_surface to avoid activate() use a stale (and just
+ * removed) surface when attempting to de-activate it. It will
+ * also update the focused_surface once it has a chance to run.
+ */
+ if (surface == shseat->focused_surface)
+ shseat->focused_surface = NULL;
+ }
+
wl_signal_emit(&shsurf->destroy_signal, shsurf);
if (shsurf->fullscreen.black_view)
@@ -3836,6 +3834,7 @@ activate(struct desktop_shell *shell, struct weston_view *view,
struct workspace *ws;
struct weston_surface *old_es;
struct shell_surface *shsurf, *shsurf_child;
+ struct shell_seat *shseat = get_shell_seat(seat);
main_surface = weston_surface_get_main_surface(es);
shsurf = get_shell_surface(main_surface);
@@ -3855,6 +3854,16 @@ activate(struct desktop_shell *shell, struct weston_view *view,
weston_view_activate(view, seat, flags);
+ if (shseat->focused_surface) {
+ struct shell_surface *current_focus =
+ get_shell_surface(shseat->focused_surface);
+ assert(current_focus);
+ shell_surface_deactivate(current_focus);
+ }
+
+ shseat->focused_surface = main_surface;
+ shell_surface_activate(shsurf);
+
state = ensure_focus_state(shell, seat);
if (state == NULL)
return;
--
2.34.1

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# SPDX-FileCopyrightText: Huawei Inc.
# SPDX-License-Identifier: Apache-2.0
if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then
add_weston_module "systemd-notify.so"
fi

View File

@@ -2,5 +2,6 @@
if type Xwayland >/dev/null 2>/dev/null; then
mkdir -p /tmp/.X11-unix
add_weston_module "xwayland.so"
add_weston_argument "--modules=xwayland.so"
fi

View File

@@ -5,13 +5,14 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a"
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://weston.png \
file://weston.desktop \
file://systemd-notify.weston-start \
file://xwayland.weston-start \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
file://0002-desktop-shell-Remove-no-op-de-activation-of-the-xdg-.patch \
file://0003-desktop-shell-Rename-gain-lose-keyboard-focus-to-act.patch \
file://0004-desktop-shell-Embed-keyboard-focus-handle-code-when-.patch \
"
SRC_URI[md5sum] = "53e4810d852df0601d01fd986a5b22b3"
SRC_URI[sha256sum] = "7518b49b2eaa1c3091f24671bdcc124fd49fc8f1af51161927afa4329c027848"
@@ -103,10 +104,6 @@ do_install_append() {
install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
fi
if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then
install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify
fi
if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then
chmod u+s ${D}${bindir}/weston-launch
fi

View File

@@ -18,7 +18,15 @@ INC_PR = "r8"
XORG_PN = "xorg-server"
SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
CVE_PRODUCT = "xorg-server"
CVE_PRODUCT = "xorg-server x_server"
# This is specific to Debian's xserver-wrapper.c
CVE_CHECK_WHITELIST += "CVE-2011-4613"
# As per upstream, exploiting this flaw is non-trivial and it requires exact
# timing on the behalf of the attacker. Many graphical applications exit if their
# connection to the X server is lost, so a typical desktop session is either
# impossible or difficult to exploit. There is currently no upstream patch
# available for this flaw.
CVE_CHECK_WHITELIST += "CVE-2020-25697"
S = "${WORKDIR}/${XORG_PN}-${PV}"

View File

@@ -0,0 +1,20 @@
#!/bin/sh
# dt-doc-validate wrapper to allow kernel dt-validation to pass
#
# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
# License: MIT (see COPYING.MIT at the root of the repository for terms)
for arg; do
case "$arg" in
--version)
echo "v2021.10"
;;
esac
done
# TBD: left for future consideration
# exec dt-doc-validate.real "$@"
# we always succeed
exit 0

View File

@@ -0,0 +1,20 @@
#!/bin/sh
# dt-mk-schema wrapper to allow kernel dt-validation to pass
#
# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
# License: MIT (see COPYING.MIT at the root of the repository for terms)
for arg; do
case "$arg" in
--version)
echo "v2021.10"
;;
esac
done
# TBD: left for future consideration
# exec dt-mk-schema.real "$@"
# we always succeed
exit 0

View File

@@ -0,0 +1,20 @@
#!/bin/sh
# dt-validate wrapper to allow kernel dt-validation to pass
#
# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
# License: MIT (see COPYING.MIT at the root of the repository for terms)
for arg; do
case "$arg" in
--version)
echo "v2021.10"
;;
esac
done
# TBD: left for future consideration
# exec dt-validate.real "$@"
# we always succeed
exit 0

View File

@@ -0,0 +1,17 @@
DESCRIPTION = "Wrapper for tooling for devicetree validation using YAML and jsonschema"
HOMEPAGE = "https://yoctoproject.org"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = "file://dt-doc-validate \
file://dt-mk-schema \
file://dt-validate"
do_install() {
install -d ${D}${bindir}/
install -m 755 ${WORKDIR}/dt-doc-validate ${D}${bindir}/
install -m 755 ${WORKDIR}/dt-mk-schema ${D}${bindir}/
install -m 755 ${WORKDIR}/dt-validate ${D}${bindir}/
}
BBCLASSEXTEND = "native nativesdk"

View File

@@ -132,7 +132,7 @@ LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
file://WHENCE;md5=d627873bd934d7c52b2c8191304a8eb7 \
file://WHENCE;md5=79f477f9d53eedee5a65b45193785963 \
"
# These are not common licenses, set NO_GENERIC_LICENSE for them
@@ -205,7 +205,7 @@ PE = "1"
SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
SRC_URI[sha256sum] = "bc2657dd8eb82386a9a7ec6df9ccf31c32c7e9073c05d37786c1edc273f9440a"
SRC_URI[sha256sum] = "eeddb4e6bef31fd1a3757f12ccc324929bbad97855c0b9ec5ed780f74de1837d"
inherit allarch

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 ?= "1a91fd560dcf8fa9e49fc2f17cb37483201a2b89"
SRCREV_meta ?= "db8bfc3a107db2a059fb8efa442f7daa17e8d55c"
SRCREV_machine ?= "e92d76afe6d8592917c0e7b948912c085e661df2"
SRCREV_meta ?= "98cce1c95fcc9a26965cbc5f038fd71d53c387c8"
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.4;destsuffix=${KMETA}"
LINUX_VERSION ?= "5.4.158"
LINUX_VERSION ?= "5.4.172"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"

View File

@@ -6,7 +6,7 @@ KCONFIG_MODE = "--allnoconfig"
require recipes-kernel/linux/linux-yocto.inc
LINUX_VERSION ?= "5.4.158"
LINUX_VERSION ?= "5.4.172"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -15,9 +15,9 @@ DEPENDS += "openssl-native util-linux-native"
KMETA = "kernel-meta"
KCONF_BSP_AUDIT_LEVEL = "2"
SRCREV_machine_qemuarm ?= "9b7cd001c33ea463bbb23fda6a79900ffc88c484"
SRCREV_machine ?= "80849cd7ef3a77895f8651cec85648578bef9135"
SRCREV_meta ?= "db8bfc3a107db2a059fb8efa442f7daa17e8d55c"
SRCREV_machine_qemuarm ?= "10b4756eee78aa43ff9ed64da700ec6e8d97ff22"
SRCREV_machine ?= "6ab93fdc53b64e146e4f16363375c1beb37b82e4"
SRCREV_meta ?= "98cce1c95fcc9a26965cbc5f038fd71d53c387c8"
PV = "${LINUX_VERSION}+git${SRCPV}"

View File

@@ -12,16 +12,16 @@ KBRANCH_qemux86 ?= "v5.4/standard/base"
KBRANCH_qemux86-64 ?= "v5.4/standard/base"
KBRANCH_qemumips64 ?= "v5.4/standard/mti-malta64"
SRCREV_machine_qemuarm ?= "414c50525aea1ec953cca6d050d5c23db04de269"
SRCREV_machine_qemuarm64 ?= "ba5e3380aa8a3789907c031beac2ce81d1eb5d50"
SRCREV_machine_qemumips ?= "177841cfef0bd71b7b4f0e2e8e2ea3100ee4ea7a"
SRCREV_machine_qemuppc ?= "c3b4b69caef59344d4a59a2327f9f0130db9ccbe"
SRCREV_machine_qemuriscv64 ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_machine_qemux86 ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_machine_qemux86-64 ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_machine_qemumips64 ?= "75a3c9aeedd5a8070079d96d0301a303ca3351a8"
SRCREV_machine ?= "76404f1ae59698b6a446dba29c885ca78c69c330"
SRCREV_meta ?= "db8bfc3a107db2a059fb8efa442f7daa17e8d55c"
SRCREV_machine_qemuarm ?= "8de1da3dc354dedef2e435e694eec6d6e72c9822"
SRCREV_machine_qemuarm64 ?= "eed7c0a64f3a7a91a130bc2e507304dc8b446a31"
SRCREV_machine_qemumips ?= "996a9660e4fab70db5cecec9c831141cd03c3d36"
SRCREV_machine_qemuppc ?= "0197cf5754b1bd4eb035c342af9cc27e8c3339ca"
SRCREV_machine_qemuriscv64 ?= "c6b015510134942076c0e111e56357656acf3dd5"
SRCREV_machine_qemux86 ?= "c6b015510134942076c0e111e56357656acf3dd5"
SRCREV_machine_qemux86-64 ?= "c6b015510134942076c0e111e56357656acf3dd5"
SRCREV_machine_qemumips64 ?= "fe2769a7c268ed224ec70fd2aaab850e4eef70dc"
SRCREV_machine ?= "c6b015510134942076c0e111e56357656acf3dd5"
SRCREV_meta ?= "98cce1c95fcc9a26965cbc5f038fd71d53c387c8"
# remap qemuarm to qemuarma15 for the 5.4 kernel
# KMACHINE_qemuarm ?= "qemuarma15"
@@ -30,7 +30,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.4;destsuffix=${KMETA}"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
LINUX_VERSION ?= "5.4.158"
LINUX_VERSION ?= "5.4.172"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"

View File

@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \
file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca"
DEPENDS = "liburcu popt libxml2 util-linux"
DEPENDS = "liburcu popt libxml2 util-linux bison-native"
RDEPENDS_${PN} = "libgcc"
RDEPENDS_${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod lttng-modules sed python3-core"
RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"

View File

@@ -0,0 +1,33 @@
From 1db36347d05d88835519368442e9aa89c64091ad Mon Sep 17 00:00:00 2001
From: Seungha Yang <seungha@centricular.com>
Date: Tue, 15 Sep 2020 00:54:58 +0900
Subject: [PATCH] tests: seek: Don't use too strict timeout for validation
Expected segment-done message might not be seen within expected
time if system is not powerful enough.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/625>
Upstream-Status: Backport [https://cgit.freedesktop.org/gstreamer/gstreamer/commit?id=f44312ae5d831438fcf8041162079c65321c588c]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
tests/check/pipelines/seek.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/check/pipelines/seek.c b/tests/check/pipelines/seek.c
index 28bb8846d..5f7447bc5 100644
--- a/tests/check/pipelines/seek.c
+++ b/tests/check/pipelines/seek.c
@@ -521,7 +521,7 @@ GST_START_TEST (test_loopback_2)
GST_INFO ("wait for segment done message");
- msg = gst_bus_timed_pop_filtered (bus, (GstClockTime) 2 * GST_SECOND,
+ msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_SEGMENT_DONE | GST_MESSAGE_ERROR);
fail_unless (msg, "no message within the timed window");
fail_unless_equals_string (GST_MESSAGE_TYPE_NAME (msg), "segment-done");
--
2.29.2

View File

@@ -22,6 +22,7 @@ SRC_URI = " \
file://0003-meson-Add-valgrind-feature.patch \
file://0004-meson-Add-option-for-installed-tests.patch \
file://0005-bufferpool-only-resize-in-reset-when-maxsize-is-larger.patch \
file://0006-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \
"
SRC_URI[md5sum] = "beecf6965a17fb17fa3b262fd36df70a"
SRC_URI[sha256sum] = "692f037968e454e508b0f71d9674e2e26c78475021407fcf8193b1c7e59543c7"

View File

@@ -0,0 +1,30 @@
Backport patch to fix CVE-2020-23903.
CVE: CVE-2020-23903
Upstream-Status: Backport [https://github.com/xiph/speex/commit/870ff84]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
From 870ff845b32f314aec0036641ffe18aba4916887 Mon Sep 17 00:00:00 2001
From: Tristan Matthews <tmatth@videolan.org>
Date: Mon, 13 Jul 2020 23:25:03 -0400
Subject: [PATCH] wav_io: guard against invalid channel numbers
Fixes #13
---
src/wav_io.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/wav_io.c b/src/wav_io.c
index b5183015..09d62eb0 100644
--- a/src/wav_io.c
+++ b/src/wav_io.c
@@ -111,7 +111,7 @@ int read_wav_header(FILE *file, int *rate, int *channels, int *format, spx_int32
stmp = le_short(stmp);
*channels = stmp;
- if (stmp>2)
+ if (stmp>2 || stmp<1)
{
fprintf (stderr, "Only mono and (intensity) stereo supported\n");
return -1;

View File

@@ -7,7 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=314649d8ba9dd7045dfb6683f298d0a8 \
file://include/speex/speex.h;beginline=1;endline=34;md5=ef8c8ea4f7198d71cf3509c6ed05ea50"
DEPENDS = "libogg speexdsp"
SRC_URI = "http://downloads.xiph.org/releases/speex/speex-${PV}.tar.gz"
SRC_URI = "http://downloads.xiph.org/releases/speex/speex-${PV}.tar.gz \
file://CVE-2020-23903.patch \
"
UPSTREAM_CHECK_REGEX = "speex-(?P<pver>\d+(\.\d+)+)\.tar"
SRC_URI[md5sum] = "8ab7bb2589110dfaf0ed7fa7757dc49c"

View File

@@ -10,7 +10,7 @@ SECTION = "devel"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENCE;md5=b1588d3bb4cb0e1f5a597d908f8c5b37"
SRC_URI = "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${PV}/pcre2-${PV}.tar.bz2 \
SRC_URI = "http://downloads.yoctoproject.org/mirror/sources/pcre2-${PV}.tar.bz2 \
file://pcre-cross.patch \
"

View File

@@ -0,0 +1,43 @@
From cd2422ee2dab3f33b2dbd1271e17cdaf8762b6d1 Mon Sep 17 00:00:00 2001
From: Minjae Kim <flowergom@gmail.com>
Date: Fri, 17 Dec 2021 20:32:02 -0800
Subject: [PATCH] using freed memory in open command
Problem: Using freed memory in open command.
Solution: Make a copy of the current line.
Upstream-Status: Backported [https://github.com/vim/vim/commit/e031fe90cf2e375ce861ff5e5e281e4ad229ebb9]
CVE: CVE-2021-4069
Signed-off-by: Minjae Kim <flowergom@gmail.com>
---
src/ex_docmd.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 59e245bee..ccd9e8bed 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6029,13 +6029,17 @@ ex_open(exarg_T *eap)
regmatch.regprog = vim_regcomp(eap->arg, p_magic ? RE_MAGIC : 0);
if (regmatch.regprog != NULL)
{
+ // make a copy of the line, when searching for a mark it might be
+ // flushed
+ char_u *line = vim_strsave(ml_get_curline());
+
regmatch.rm_ic = p_ic;
- p = ml_get_curline();
- if (vim_regexec(&regmatch, p, (colnr_T)0))
- curwin->w_cursor.col = (colnr_T)(regmatch.startp[0] - p);
+ if (vim_regexec(&regmatch, line, (colnr_T)0))
+ curwin->w_cursor.col = (colnr_T)(regmatch.startp[0] - line);
else
emsg(_(e_nomatch));
vim_regfree(regmatch.regprog);
+ vim_free(line);
}
// Move to the NUL, ignore any other arguments.
eap->arg += STRLEN(eap->arg);
--
2.25.1

View File

@@ -26,6 +26,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://0001-patch-8.2.3581-reading-character-past-end-of-line.patch \
file://0002-patch-8.2.3582-reading-uninitialized-memory-when-giv.patch \
file://0002-patch-8.2.3611-crash-when-using-CTRL-W-f-without-fin.patch \
file://CVE-2021-4069.patch \
"
SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"

View File

@@ -11,7 +11,6 @@
import sys
import os
import argparse
from distutils.version import LooseVersion
# Ensure PythonGit is installed (buildhistory_analysis needs it)
try:
@@ -71,10 +70,6 @@ def main():
parser = get_args_parser()
args = parser.parse_args()
if LooseVersion(git.__version__) < '0.3.1':
sys.stderr.write("Version of GitPython is too old, please install GitPython (python-git) 0.3.1 or later in order to use this script\n")
sys.exit(1)
if len(args.revisions) > 2:
sys.stderr.write('Invalid argument(s) specified: %s\n\n' % ' '.join(args.revisions[2:]))
parser.print_help()

View File

@@ -18,7 +18,8 @@ import sys
import tempfile
import threading
import importlib
from importlib import machinery
import importlib.machinery
import importlib.util
class KeepAliveStreamHandler(logging.StreamHandler):
def __init__(self, keepalive=True, **kwargs):
@@ -82,7 +83,9 @@ def load_plugins(logger, plugins, pluginpath):
logger.debug('Loading plugin %s' % name)
spec = importlib.machinery.PathFinder.find_spec(name, path=[pluginpath] )
if spec:
return spec.loader.load_module()
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
return mod
def plugin_name(filename):
return os.path.splitext(os.path.basename(filename))[0]

View File

@@ -19,10 +19,10 @@ import os
import tempfile
import json
import subprocess
import shutil
import re
from collections import namedtuple, OrderedDict
from distutils.spawn import find_executable
from wic import WicError
from wic.filemap import sparse_copy
@@ -245,7 +245,7 @@ class Disk:
for path in pathlist.split(':'):
self.paths = "%s%s:%s" % (native_sysroot, path, self.paths)
self.parted = find_executable("parted", self.paths)
self.parted = shutil.which("parted", path=self.paths)
if not self.parted:
raise WicError("Can't find executable parted")
@@ -283,7 +283,7 @@ class Disk:
"resize2fs", "mkswap", "mkdosfs", "debugfs"):
aname = "_%s" % name
if aname not in self.__dict__:
setattr(self, aname, find_executable(name, self.paths))
setattr(self, aname, shutil.which(name, path=self.paths))
if aname not in self.__dict__ or self.__dict__[aname] is None:
raise WicError("Can't find executable '{}'".format(name))
return self.__dict__[aname]

View File

@@ -16,9 +16,9 @@ import logging
import os
import re
import subprocess
import shutil
from collections import defaultdict
from distutils import spawn
from wic import WicError
@@ -46,7 +46,8 @@ NATIVE_RECIPES = {"bmaptool": "bmap-tools",
"parted": "parted",
"sfdisk": "util-linux",
"sgdisk": "gptfdisk",
"syslinux": "syslinux"
"syslinux": "syslinux",
"tar": "tar"
}
def runtool(cmdln_or_args):
@@ -113,6 +114,15 @@ def exec_cmd(cmd_and_args, as_shell=False):
"""
return _exec_cmd(cmd_and_args, as_shell)[1]
def find_executable(cmd, paths):
recipe = cmd
if recipe in NATIVE_RECIPES:
recipe = NATIVE_RECIPES[recipe]
provided = get_bitbake_var("ASSUME_PROVIDED")
if provided and "%s-native" % recipe in provided:
return True
return shutil.which(cmd, path=paths)
def exec_native_cmd(cmd_and_args, native_sysroot, pseudo=""):
"""
@@ -141,7 +151,7 @@ def exec_native_cmd(cmd_and_args, native_sysroot, pseudo=""):
logger.debug("exec_native_cmd: %s", native_cmd_and_args)
# If the command isn't in the native sysroot say we failed.
if spawn.find_executable(args[0], native_paths):
if find_executable(args[0], native_paths):
ret, out = _exec_cmd(native_cmd_and_args, True)
else:
ret = 127

View File

@@ -9,9 +9,11 @@ __all__ = ['ImagerPlugin', 'SourcePlugin']
import os
import logging
import types
from collections import defaultdict
from importlib.machinery import SourceFileLoader
import importlib
import importlib.util
from wic import WicError
from wic.misc import get_bitbake_var
@@ -54,7 +56,9 @@ class PluginMgr:
mname = fname[:-3]
mpath = os.path.join(ppath, fname)
logger.debug("loading plugin module %s", mpath)
SourceFileLoader(mname, mpath).load_module()
spec = importlib.util.spec_from_file_location(mname, mpath)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return PLUGINS.get(ptype)

View File

@@ -22,9 +22,9 @@ import sys
import argparse
import logging
import subprocess
import shutil
from collections import namedtuple
from distutils import spawn
# External modules
scripts_path = os.path.dirname(os.path.realpath(__file__))
@@ -47,7 +47,7 @@ if os.environ.get('SDKTARGETSYSROOT'):
break
sdkroot = os.path.dirname(sdkroot)
bitbake_exe = spawn.find_executable('bitbake')
bitbake_exe = shutil.which('bitbake')
if bitbake_exe:
bitbake_path = scriptpath.add_bitbake_lib_path()
import bb