Commit Graph

997818 Commits

Author SHA1 Message Date
Wander Lairson Costa
44ddc37b10 UPSTREAM: netfilter: nfnetlink_osf: avoid OOB read
[ Upstream commit f4f8a78031 ]

The opt_num field is controlled by user mode and is not currently
validated inside the kernel. An attacker can take advantage of this to
trigger an OOB read and potentially leak information.

BUG: KASAN: slab-out-of-bounds in nf_osf_match_one+0xbed/0xd10 net/netfilter/nfnetlink_osf.c:88
Read of size 2 at addr ffff88804bc64272 by task poc/6431

CPU: 1 PID: 6431 Comm: poc Not tainted 6.0.0-rc4 #1
Call Trace:
 nf_osf_match_one+0xbed/0xd10 net/netfilter/nfnetlink_osf.c:88
 nf_osf_find+0x186/0x2f0 net/netfilter/nfnetlink_osf.c:281
 nft_osf_eval+0x37f/0x590 net/netfilter/nft_osf.c:47
 expr_call_ops_eval net/netfilter/nf_tables_core.c:214
 nft_do_chain+0x2b0/0x1490 net/netfilter/nf_tables_core.c:264
 nft_do_chain_ipv4+0x17c/0x1f0 net/netfilter/nft_chain_filter.c:23
 [..]

Also add validation to genre, subtype and version fields.

Bug: 304913642
Fixes: 11eeef41d5 ("netfilter: passive OS fingerprint xtables match")
Reported-by: Lucas Leong <wmliang@infosec.exchange>
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 7bb8d52b42)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: If79c79e3f55de8c81b70c19661cb0084b02c3da2
2023-10-23 17:19:44 +00:00
Prashanth K
ede2f9b7e5 ANDROID: abi_gki_aarch64_qcom: Add wait_for_device_probe symbol
Update the qcom symbol list by adding wait_for_device_probe().

Symbols added:
    wait_for_device_probe

Bug: 307237748
Change-Id: I9b58b60905cac794eae45b87bdc693fd390f163b
Signed-off-by: Prashanth K <quic_prashk@quicinc.com>
2023-10-23 14:23:33 +00:00
Wander Lairson Costa
db2f2cb88d UPSTREAM: netfilter: xt_sctp: validate the flag_info count
commit e994764976 upstream.

sctp_mt_check doesn't validate the flag_count field. An attacker can
take advantage of that to trigger a OOB read and leak memory
information.

Add the field validation in the checkentry function.

Bug: 304913898
Fixes: 2e4e6a17af ("[NETFILTER] x_tables: Abstraction layer for {ip,ip6,arp}_tables")
Cc: stable@vger.kernel.org
Reported-by: Lucas Leong <wmliang@infosec.exchange>
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 4921f9349b)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ife4e69f6218fdaca2a8647b5ed00d875a5ed0d34
2023-10-18 15:52:26 +01:00
Wander Lairson Costa
cba41df427 UPSTREAM: netfilter: xt_u32: validate user space input
commit 69c5d284f6 upstream.

The xt_u32 module doesn't validate the fields in the xt_u32 structure.
An attacker may take advantage of this to trigger an OOB read by setting
the size fields with a value beyond the arrays boundaries.

Add a checkentry function to validate the structure.

This was originally reported by the ZDI project (ZDI-CAN-18408).

Bug: 304913716
Fixes: 1b50b8a371 ("[NETFILTER]: Add u32 match")
Cc: stable@vger.kernel.org
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 1c164c1e9e)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ic2ff70b303f55f9c3c5db24295bcb223ed7175a7
2023-10-17 14:28:25 +01:00
Jamal Hadi Salim
4865c22b17 UPSTREAM: net/sched: Retire rsvp classifier
commit 265b4da82d upstream.

The rsvp classifier has served us well for about a quarter of a century but has
has not been getting much maintenance attention due to lack of known users.

Bug: 304913975
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Acked-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Kyle Zeng <zengyhkyle@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 08569c92f7)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I4716954c5e8d5414a580eb34c699908028aa754b
2023-10-17 12:30:07 +00:00
Kyle Zeng
f8424e6555 UPSTREAM: ipv4: fix null-deref in ipv4_link_failure
[ Upstream commit 0113d9c9d1 ]

Currently, we assume the skb is associated with a device before calling
__ip_options_compile, which is not always the case if it is re-routed by
ipvs.
When skb->dev is NULL, dev_net(skb->dev) will become null-dereference.
This patch adds a check for the edge case and switch to use the net_device
from the rtable when skb->dev is NULL.

Bug: 304913674
Fixes: ed0de45a10 ("ipv4: recompile ip options in ipv4_link_failure")
Suggested-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Kyle Zeng <zengyhkyle@gmail.com>
Cc: Stephen Suryaputra <ssuryaextr@gmail.com>
Cc: Vadim Fedorenko <vfedorenko@novek.ru>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 2712545e53)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ie840ff3351e487f7095c49fac4fdd1e81021a982
2023-10-17 10:42:43 +01:00
Pablo Neira Ayuso
cd7744312f UPSTREAM: netfilter: nf_tables: disallow rule removal from chain binding
[ Upstream commit f15f29fd47 ]

Chain binding only requires the rule addition/insertion command within
the same transaction. Removal of rules from chain bindings within the
same transaction makes no sense, userspace does not utilize this
feature. Replace nft_chain_is_bound() check to nft_chain_binding() in
rule deletion commands. Replace command implies a rule deletion, reject
this command too.

Rule flush command can also safely rely on this nft_chain_binding()
check because unbound chains are not allowed since 62e1e94b24
("netfilter: nf_tables: reject unbound chain set before commit phase").

Bug: 302085977
Fixes: d0e2c7de92 ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
Reported-by: Kevin Rich <kevinrich1337@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 5a03b42ae1)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I8b05dc37062824db4c2901000fdf701b38605d32
2023-10-16 15:49:18 +00:00
Pablo Neira Ayuso
6cd0cd3893 UPSTREAM: netfilter: nf_tables: report use refcount overflow
commit 1689f25924 upstream.

Overflow use refcount checks are not complete.

Add helper function to deal with object reference counter tracking.
Report -EMFILE in case UINT_MAX is reached.

nft_use_dec() splats in case that reference counter underflows,
which should not ever happen.

Add nft_use_inc_restore() and nft_use_dec_restore() which are used
to restore reference counter from error and abort paths.

Use u32 in nft_flowtable and nft_object since helper functions cannot
work on bitfields.

Remove the few early incomplete checks now that the helper functions
are in place and used to check for refcount overflow.

Bug: 302085977
Fixes: 96518518cc ("netfilter: add nftables")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 039ce5eb6b)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I0f2d48b1246de2421edd7d566ae966f02ef63b54
2023-10-16 13:21:55 +00:00
Krishna Kurapati
99d2841c81 UPSTREAM: usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call
When NCM is used with hosts like Windows PC, it is observed that there are
multiple NTB's contained in one usb request giveback. Since the driver
unwraps the obtained request data assuming only one NTB is present, we
loose the subsequent NTB's present resulting in data loss.

Fix this by checking the parsed block length with the obtained data
length in usb request and continue parsing after the last byte of current
NTB.

Cc: stable@vger.kernel.org
Fixes: 9f6ce4240a ("usb: gadget: f_ncm.c added")
Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
Reviewed-by: Maciej Żenczykowski <maze@google.com>
Link: https://lore.kernel.org/r/20230927105858.12950-1-quic_kriskura@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 303180260
(cherry picked from commit 427694cfaa)
Change-Id: I86deb62ba12ab683ec8f311e15d90700e0b9902e
Signed-off-by: Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
2023-10-03 16:50:57 +05:30
Todd Kjos
3cf9365660 Merge tag 'android12-5.10.189_r00' into android12-5.10
This is the merge of 5.10.189 into the android12-5.10 branch.

It contains the following commits:

*   f50fa8d8ce Merge 5.10.189 into android12-5.10-lts
|\
| * de5f63612d Linux 5.10.189
| * 2ae9a73819 x86: fix backwards merge of GDS/SRSO bit
| * f9167a2d6b xen/netback: Fix buffer overrun triggered by unusual packet
| * 8457fb5740 x86/srso: Tie SBPB bit setting to microcode patch detection
| * 4873939c0e x86/srso: Fix return thunks in generated code
| * 384d41bea9 x86/srso: Add IBPB on VMEXIT
| * 4acaea47e3 x86/srso: Add IBPB
| * e47af0c255 x86/srso: Add SRSO_NO support
| * df76a59feb x86/srso: Add IBPB_BRTYPE support
| * 3f9b7101be x86/srso: Add a Speculative RAS Overflow mitigation
| * 34f23ba8a3 x86/cpu, kvm: Add support for CPUID_80000021_EAX
| * 073a28a9b5 x86/bugs: Increase the x86 bugs vector size to two u32s
| * 9b7fe7c6fb tools headers cpufeatures: Sync with the kernel sources
| * 437fa179f2 x86/cpufeatures: Assign dedicated feature word for CPUID_0x8000001F[EAX]
| * baf6d6c39e x86/cpu: Add VM page flush MSR availablility as a CPUID feature
| * 6750468784 Documentation/x86: Fix backwards on/off logic about YMM support
| * 79972c2b95 x86/mm: Initialize text poking earlier
| * 1ff14defdf mm: Move mm_cachep initialization to mm_init()
| * 6ee042fd24 x86/mm: Use mm_alloc() in poking_init()
| * f076d08178 x86/mm: fix poking_init() for Xen PV guests
| * 583016037a x86/xen: Fix secondary processors' FPU initialization
| * eb13cce488 KVM: Add GDS_NO support to KVM
| * 7db4ddcb8d x86/speculation: Add Kconfig option for GDS
| * 363c98f9cf x86/speculation: Add force option to GDS mitigation
| * 288a2f6bc1 x86/speculation: Add Gather Data Sampling mitigation
| * 4ae1cbb730 x86/fpu: Move FPU initialization into arch_cpu_finalize_init()
| * 2462bc3ef0 x86/fpu: Mark init functions __init
| * 7a2f42bce9 x86/fpu: Remove cpuinfo argument from init functions
| * 18fcd72da1 init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init()
| * 09658b81d1 init: Invoke arch_cpu_finalize_init() earlier
| * bf2fa3a9d0 init: Remove check_bugs() leftovers
| * b05031c2bc um/cpu: Switch to arch_cpu_finalize_init()
| * 2edb3b39ca sparc/cpu: Switch to arch_cpu_finalize_init()
| * 3c45134b38 sh/cpu: Switch to arch_cpu_finalize_init()
| * 75bb54c951 mips/cpu: Switch to arch_cpu_finalize_init()
| * 1cd3fc18eb m68k/cpu: Switch to arch_cpu_finalize_init()
| * 12d93c6c98 ia64/cpu: Switch to arch_cpu_finalize_init()
| * c0fff20d4e ARM: cpu: Switch to arch_cpu_finalize_init()
| * e5eb18e164 x86/cpu: Switch to arch_cpu_finalize_init()
| * 6e606e6818 init: Provide arch_cpu_finalize_init()
* | 49c25af89c Revert "bpf: Remove extra lock_sock for TCP_ZEROCOPY_RECEIVE"
* | 117f73f9a7 Revert "sctp: add bpf_bypass_getsockopt proto callback"
* | 64414277da Revert "net: Introduce net.ipv4.tcp_migrate_req."
* | 2afed824a4 Revert "tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries."
* | 08315eedaa Revert "tcp: annotate data-races around icsk->icsk_syn_retries"
* | 938b8658b9 Revert "posix-timers: Ensure timer ID search-loop limit is valid"
* | 986fd89af0 Revert "Revert "8250: add support for ASIX devices with a FIFO bug""
* | 477f5e6b9e Merge 5.10.188 into android12-5.10-lts
|\|
| * 3602dbc57b Linux 5.10.188
| * edce5fba78 ftrace: Fix possible warning on checking all pages used in ftrace_process_locs()
| * 115b19f893 ftrace: Store the order of pages allocated in ftrace_page
| * 1a1e793e02 tracing: Fix memory leak of iter->temp when reading trace_pipe
| * 43e786aa51 tracing/histograms: Return an error if we fail to add histogram to hist_vars list
| * e3da59f428 net: phy: prevent stale pointer dereference in phy_init()
| * e0ac63e194 tcp: annotate data-races around fastopenq.max_qlen
| * d01afbfc2f tcp: annotate data-races around icsk->icsk_user_timeout
| * 3cf0a0f11d tcp: annotate data-races around tp->notsent_lowat
| * 9c786d5faf tcp: annotate data-races around rskq_defer_accept
| * f891375eba tcp: annotate data-races around tp->linger2
| * 9168bd8f54 tcp: annotate data-races around icsk->icsk_syn_retries
| * 7b0084918c tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries.
| * cf6c06ac74 net: Introduce net.ipv4.tcp_migrate_req.
| * a5c30a5187 tcp: annotate data-races around tp->keepalive_probes
| * 93715448f1 tcp: annotate data-races around tp->keepalive_intvl
| * 7b52a78a91 tcp: annotate data-races around tp->keepalive_time
| * 1d4f2c4be1 tcp: annotate data-races around tp->tcp_tx_delay
| * 30e5460d69 netfilter: nf_tables: skip bound chain on rule flush
| * 94c10c0fa5 netfilter: nf_tables: skip bound chain in netns release path
| * 3a91099ecd netfilter: nft_set_pipapo: fix improper element removal
| * 9c2df17e3c netfilter: nf_tables: can't schedule in nft_chain_validate
| * 533193a239 netfilter: nf_tables: fix spurious set element insertion failure
| * a6f1988780 llc: Don't drop packet from non-root netns.
| * 49e435ca02 fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe
| * bc9d4d432f Revert "tcp: avoid the lookup process failing to get sk in ehash table"
| * d06fc7b391 net:ipv6: check return value of pskb_trim()
| * 1a478ad129 net: ipv4: Use kfree_sensitive instead of kfree
| * 937105d2b0 tcp: annotate data-races around tcp_rsk(req)->ts_recent
| * 41b0023869 octeontx2-pf: Dont allocate BPIDs for LBK interfaces
| * 5bc78ba889 security: keys: Modify mismatched function name
| * b92defe4e8 iavf: Fix out-of-bounds when setting channels on remove
| * a4635f190f iavf: Fix use-after-free in free_netdev
| * b37bc3b07e bridge: Add extack warning when enabling STP in netns.
| * f6d311b953 net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field()
| * 54aa4c0386 pinctrl: amd: Use amd_pinconf_set() for all config options
| * 7041605e85 fbdev: imxfb: warn about invalid left/right margin
| * 6e88cc510f spi: bcm63xx: fix max prepend length
| * 994c2ceb70 igb: Fix igb_down hung on surprise removal
| * a956c3af70 wifi: iwlwifi: mvm: avoid baid size integer overflow
| * 85cf0d5f45 wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point()
| * 2864cc9a1f devlink: report devlink_port_type_warn source device
| * b6d9a4062c bpf: Address KCSAN report on bpf_lru_list
| * 532f8bac60 wifi: ath11k: fix registration of 6Ghz-only phy without the full channel range
| * 6b0c79aa33 sched/fair: Don't balance task to its current running CPU
| * 32020fc2a8 arm64: mm: fix VA-range sanity check
| * c71d6934c6 arm64: set __exception_irq_entry with __irq_entry as a default
| * 71e3f23540 ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 AMD version)
| * 776a72f612 ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3
| * e090f70ae4 ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A
| * ae51eb90bc btrfs: add xxhash to fast checksum implementations
| * 322377cc90 posix-timers: Ensure timer ID search-loop limit is valid
| * 634daf6b2c md/raid10: prevent soft lockup while flush writes
| * b02939413e md: fix data corruption for raid456 when reshape restart while grow up
| * 4a2c62c8d6 nbd: Add the maximum limit of allocated index in nbd_dev_add
| * 5f84a34b64 debugobjects: Recheck debug_objects_enabled before reporting
| * 5d5aa5b648 ext4: correct inline offset when handling xattrs in inode body
| * 48aa539375 ASoC: fsl_sai: Disable bit clock with transmitter
| * 5f2a12f643 drm/client: Fix memory leak in drm_client_modeset_probe
| * 105275879a drm/client: Fix memory leak in drm_client_target_cloned
| * cf254b4f68 can: bcm: Fix UAF in bcm_proc_show()
| * 3e412b6e2b regmap: Account for register length in SMBus I/O limits
| * 8b3dd8d23f regmap: Drop initial version of maximum transfer length fixes
| * 4935761daa selftests: tc: add 'ct' action kconfig dep
| * 1ab5aa1846 selftests: tc: set timeout to 15 minutes
| * dad97c205a fuse: revalidate: don't invalidate if interrupted
| * d2c667cc18 btrfs: fix warning when putting transaction with qgroups enabled after abort
| * 4410f4a938 perf probe: Add test for regression introduced by switch to die_get_decl_file()
| * 0a6b0ca586 keys: Fix linking a duplicate key to a keyring's assoc_array
| * a26208e184 ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx
| * ce2a7e7b50 ALSA: hda/realtek - remove 3k pull low procedure
| * f09c0ac142 drm/atomic: Fix potential use-after-free in nonblocking commits
| * 9a085fa9b7 RDMA/cma: Ensure rdma_addr_cancel() happens before issuing more requests
| * 73e72a5380 net/sched: sch_qfq: reintroduce lmax bound check for MTU
| * 0b1ce92fab scsi: qla2xxx: Remove unused nvme_ls_waitq wait queue
| * 5addd62586 scsi: qla2xxx: Pointer may be dereferenced
| * e8de73238d scsi: qla2xxx: Correct the index of array
| * 921d684462 scsi: qla2xxx: Check valid rport returned by fc_bsg_to_rport()
| * 2bea9c1c98 scsi: qla2xxx: Fix potential NULL pointer dereference
| * eecb8a491c scsi: qla2xxx: Fix buffer overrun
| * bcd773969a scsi: qla2xxx: Array index may go out of bound
| * a9fe97fb7b scsi: qla2xxx: Wait for io return on terminate rport
| * 6ea2a408d3 tracing/probes: Fix not to count error code to total length
| * 7060e5aac6 tracing: Fix null pointer dereference in tracing_err_log_open()
| * 81fb8a58d4 xtensa: ISS: fix call to split_if_spec
| * 5e68f1f3a2 ring-buffer: Fix deadloop issue on reading trace_pipe
| * 1e760b2d18 net: ena: fix shift-out-of-bounds in exponential backoff
| * 1f2a8f0835 samples: ftrace: Save required argument registers in sample trampolines
| * 1576f0df7b tracing/histograms: Add histograms to hist_vars if they have referenced variables
| * 07edd294b1 s390/decompressor: fix misaligned symbol build error
| * 5f4a1111ad Revert "8250: add support for ASIX devices with a FIFO bug"
| * 7f2f0e6ec5 meson saradc: fix clock divider mask length
| * 790e4e82c5 xhci: Show ZHAOXIN xHCI root hub speed correctly
| * c52e04c58d xhci: Fix TRB prefetch issue of ZHAOXIN hosts
| * b56a07c2a5 xhci: Fix resume issue of some ZHAOXIN hosts
| * 8e807eadf0 ceph: don't let check_caps skip sending responses for revoke msgs
| * c04ed61ebf firmware: stratix10-svc: Fix a potential resource leak in svc_create_memory_pool()
| * 1962717c46 tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk
| * a49e5a0512 tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in case of error
| * 08673739ed serial: atmel: don't enable IRQs prematurely
| * 4016d36fec drm/amd/display: Correct `DMUB_FW_VERSION` macro
| * d89bd2ecd3 drm/rockchip: vop: Leave vblank enabled in self-refresh
| * b9ec9372a4 drm/atomic: Allow vblank-enabled + self-refresh "disable"
| * 23d5004ee7 fs: dlm: return positive pid value for F_GETLK
| * 5e9aff5b10 md/raid0: add discard support for the 'original' layout
| * 8e3c777640 misc: pci_endpoint_test: Re-init completion for every test
| * cdf9a7e2cd misc: pci_endpoint_test: Free IRQs before removing the device
| * 8c90c466e3 PCI: rockchip: Set address alignment for endpoint mode
| * f1986416cf PCI: rockchip: Use u32 variable to access 32-bit registers
| * 36eb130312 PCI: rockchip: Fix legacy IRQ generation for RK3399 PCIe endpoint core
| * c417a4c7de PCI: rockchip: Add poll and timeout to wait for PHY PLLs to be locked
| * ddda61419a PCI: rockchip: Write PCI Device ID to correct register
| * bec3e0f7f2 PCI: rockchip: Assert PCI Configuration Enable bit after probe
| * 48e11e7c81 PCI: qcom: Disable write access to read only registers for IP v2.3.3
| * aca71b004a PCI: Add function 1 DMA alias quirk for Marvell 88SE9235
| * d3bab5de91 PCI/PM: Avoid putting EloPOS E2/S2/H2 PCIe Ports in D3cold
| * 5a89a5cc81 hwrng: imx-rngc - fix the timeout for init and self check
| * 47b7eaae08 jfs: jfs_dmap: Validate db_l2nbperpage while mounting
| * 84293af545 ext4: only update i_reserved_data_blocks on successful block allocation
| * 0a5d12e710 ext4: fix wrong unit use in ext4_mb_new_blocks
| * 514220246a ext4: get block from bh in ext4_free_blocks for fast commit replay
| * d054422eb6 ext4: fix wrong unit use in ext4_mb_clear_bb
| * be99faf0c4 ext4: Fix reusing stale buffer heads from last failed mounting
| * 8fbe951d65 MIPS: Loongson: Fix cpu_probe_loongson() again
| * 8c723eef98 erofs: fix compact 4B support for 16k block size
| * 3bd4d316b1 misc: fastrpc: Create fastrpc scalar with correct buffer count
| * 3d1d037f27 powerpc: Fail build if using recordmcount with binutils v2.37
| * fe1ae1fb50 net: bcmgenet: Ensure MDIO unregistration has clocks enabled
| * 21d5d3eb36 mtd: rawnand: meson: fix unaligned DMA buffers handling
| * 9ff7fcb3a2 tpm: tpm_vtpm_proxy: fix a race condition in /dev/vtpmx creation
| * 59490249c2 pinctrl: amd: Only use special debounce behavior for GPIO 0
| * 4f77a87ce9 pinctrl: amd: Detect internal GPIO0 debounce handling
| * 3674b9c056 pinctrl: amd: Fix mistake in handling clearing pins at startup
| * b39ef5b52f f2fs: fix to avoid NULL pointer dereference f2fs_write_end_io()
| * f4ff379812 nvme-pci: fix DMA direction of unmapping integrity data
| * 8359ee85fd net/sched: sch_qfq: account for stab overhead in qfq_enqueue
| * 5bef780e06 net/sched: sch_qfq: refactor parsing of netlink parameters
| * 1d7ae38daa net/sched: make psched_mtu() RTNL-less safe
| * d5ca61b764 netdevsim: fix uninitialized data in nsim_dev_trap_fa_cookie_write()
| * 9b69cdb6e5 net/sched: flower: Ensure both minimum and maximum ports are specified
| * 934c85b8ec wifi: airo: avoid uninitialized warning in airo_get_rate()
| * 4511499138 erofs: avoid infinite loop in z_erofs_do_read_page() when reading beyond EOF
| * bbc500ff3f riscv, bpf: Fix inconsistent JIT image generation
| * a976adc3bc bpf, riscv: Support riscv jit to provide bpf_line_info
| * eb3d1d84f3 riscv: bpf: Avoid breaking W^X
| * 7c61643798 riscv: bpf: Move bpf_jit_alloc_exec() and bpf_jit_free_exec() to core
| * 83579a6261 igc: Fix inserting of empty frame for launchtime
| * c48e8ee81a igc: Fix launchtime before start of cycle
| * cdf5b9af92 platform/x86: wmi: Break possible infinite loop when parsing GUID
| * 7157ee0de5 platform/x86: wmi: move variables
| * 4bb2bb69bd platform/x86: wmi: use guid_t and guid_equal()
| * 88dfb592d2 platform/x86: wmi: remove unnecessary argument
| * 2ad31ce40e ipv6/addrconf: fix a potential refcount underflow for idev
| * 8271145523 NTB: ntb_tool: Add check for devm_kcalloc
| * 41c6d8ff71 NTB: ntb_transport: fix possible memory leak while device_register() fails
| * 03cfa06534 ntb: intel: Fix error handling in intel_ntb_pci_driver_init()
| * 23e09f0a86 NTB: amd: Fix error handling in amd_ntb_pci_driver_init()
| * 0bb2683b0c ntb: idt: Fix error handling in idt_pci_driver_init()
| * 3e8fed805c udp6: fix udp6_ehashfn() typo
| * d30ddd7ff1 icmp6: Fix null-ptr-deref of ip6_null_entry->rt6i_idev in icmp6_dev().
| * bc3ab5d2ab net: prevent skb corruption on frag list segmentation
| * cddd04f341 net: bgmac: postpone turning IRQs off to avoid SoC hangs
| * f8cc4fd99a ionic: remove WARN_ON to prevent panic_on_warn
| * 9085429821 gve: Set default duplex configuration to full
| * 80e0e8d5f5 net/sched: cls_fw: Fix improper refcount update leads to use-after-free
| * d341f24612 net: mvneta: fix txq_map in case of txq_number==1
| * c175603d84 scsi: qla2xxx: Fix error code in qla2x00_start_sp()
| * b687b78361 igc: set TP bit in 'supported' and 'advertising' fields of ethtool_link_ksettings
| * 30c281a77f net/mlx5e: Check for NOT_READY flag state after locking
| * de6e6b0797 net/mlx5e: fix double free in mlx5e_destroy_flow_table
| * 3d4bba694a igc: Remove delay during TX ring configuration
| * 2a587b71c5 drm/panel: simple: Add Powertip PH800480T013 drm_display_mode flags
| * 547ab8ea86 drm/panel: simple: Add connector_type for innolux_at043tn24
| * 13c353dc5c workqueue: clean up WORK_* constant types, clarify masking
| * fc359e5b45 net: lan743x: Don't sleep in atomic context
| * dc4a25fa75 io_uring: add reschedule point to handle_tw_list()
| * 297883bbca io_uring: Use io_schedule* in cqring wait
| * bb2f7e4bfe block/partition: fix signedness issue for Amiga partitions
| * 4f91de9a81 rcu-tasks: Simplify trc_read_check_handler() atomic operations
| * 3a64cd01cd rcu-tasks: Mark ->trc_reader_special.b.need_qs data races
| * 058f077d09 rcu-tasks: Mark ->trc_reader_nesting data races
| * 83be9fd784 tty: serial: fsl_lpuart: add earlycon for imx8ulp platform
| * 999f3b6104 wireguard: netlink: send staged packets when setting initial private key
| * 1b71070405 wireguard: queueing: use saner cpu selection wrapping
| * ea21392224 netfilter: nf_tables: prevent OOB access in nft_byteorder_eval
| * 4ae2e50133 netfilter: nf_tables: do not ignore genmask when looking up chain by id
| * 8289d422f5 netfilter: conntrack: Avoid nf_ct_helper_hash uses after free
| * be6478f5cc netfilter: nf_tables: fix scheduling-while-atomic splat
| * a07e415be3 netfilter: nf_tables: unbind non-anonymous set if rule construction fails
| * a136b7942a netfilter: nf_tables: drop map element references from preparation phase
| * 21cf0d66ef netfilter: nftables: rename set element data activation/deactivation functions
| * 237f37f7b9 netfilter: nf_tables: reject unbound chain set before commit phase
| * 0205dd16ed netfilter: nf_tables: reject unbound anonymous set before commit phase
| * 34d09fe49f netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain
| * d53c295c1f netfilter: nf_tables: fix chain binding transaction logic
| * 8180fc2fad netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE
| * e546e6ebb1 netfilter: nf_tables: add rescheduling points during loop detection walks
| * 3f51f1157f netfilter: nf_tables: use net_generic infra for transaction data
| * 01248dd651 sh: pgtable-3level: Fix cast to pointer from integer of different size
| * 87410743b5 block: add overflow checks for Amiga partition support
| * f0aec6c403 selftests/bpf: Add verifier test for PTR_TO_MEM spill
| * 88bffb61bc tpm, tpm_tis: Claim locality in interrupt handler
| * 5bf73af8b3 fanotify: disallow mount/sb marks on kernel internal pseudo fs
| * 5cb46b80ec fs: no need to check source
| * 66a0647cdc leds: trigger: netdev: Recheck NETDEV_LED_MODE_LINKUP on dev rename
| * 5d6fbb6245 ARM: orion5x: fix d2net gpio initialization
| * 9b0f7940e2 ASoC: mediatek: mt8173: Fix snd_soc_component_initialize error path
| * 1dac8584be ASoC: mediatek: mt8173: Fix irq error path
| * 6819bb0b85 btrfs: fix race when deleting quota root from the dirty cow roots list
| * a3fbd156bd btrfs: add handling for RAID1C23/DUP to btrfs_reduce_alloc_profile
| * 59efb86711 fs: Lock moved directories
| * c5b5e72df1 fs: Establish locking order for unrelated directories
| * 4b03f503b7 Revert "f2fs: fix potential corruption when moving a directory"
| * 2b563acd2d ext4: Remove ext4 locking of moved directory
| * 5e7d18a52c fs: avoid empty option when generating legacy mount string
| * 988a5d7911 jffs2: reduce stack usage in jffs2_build_xattr_subsystem()
| * 5fada37511 shmem: use ramfs_kill_sb() for kill_sb method of ramfs-based tmpfs
| * 79bef379d5 autofs: use flexible array in ioctl structure
| * 8bf91a8d48 integrity: Fix possible multiple allocation in integrity_inode_get()
| * 9658a03f80 um: Use HOST_DIR for mrproper
| * a4405f6ee0 bcache: Fix __bch_btree_node_alloc to make the failure behavior consistent
| * db9439cef0 bcache: Remove unnecessary NULL point check in node allocations
| * bcb295778a bcache: fixup btree_cache_wait list damage
| * dc3287206a mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is used.
| * 191628e2d9 mmc: mmci: Set PROBE_PREFER_ASYNCHRONOUS
| * 02c8c2b5f6 mmc: core: disable TRIM on Micron MTFC4GACAJCN-1M
| * 6f9708e5c1 mmc: core: disable TRIM on Kingston EMMC04G-M627
| * 28e649dc99 io_uring: wait interruptibly for request completions on exit
| * 8482ac2e5a NFSD: add encoding of op_recall flag for write delegation
| * 8d36cb6d1a i2c: qup: Add missing unwind goto in qup_i2c_probe()
| * e41a8e4615 ALSA: jack: Fix mutex call in snd_jack_report()
| * e71714ad24 i2c: xiic: Don't try to handle more interrupt events after error
| * b6eefa7a27 i2c: xiic: Defer xiic_wakeup() and __xiic_start_xfer() in xiic_process()
| * 023bd9dc41 apparmor: fix missing error check for rhashtable_insert_fast
| * d1c946552a sh: dma: Fix DMA channel offset calculation
| * 37750131d2 s390/qeth: Fix vipa deletion
| * 9f5548e421 net: dsa: tag_sja1105: fix MAC DA patching from meta frames
| * 2758fb81bb pptp: Fix fib lookup calls.
| * 0b08ff091f net/sched: act_pedit: Add size check for TCA_PEDIT_PARMS_EX
| * 2434a6715f xsk: Honor SO_BINDTODEVICE on bind
| * b785ba0acc tcp: annotate data races in __tcp_oow_rate_limited()
| * 73f512bedf net: bridge: keep ports without IFF_UNICAST_FLT in BR_PROMISC mode
| * 9a9d468fdc powerpc: allow PPC_EARLY_DEBUG_CPM only when SERIAL_CPM=y
| * f970b05c9b octeontx2-af: Fix mapping for NIX block from CGX connection
| * 5ded9e8aa5 f2fs: fix error path handling in truncate_dnode()
| * 358145cc37 mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0
| * 32b9c8f789 spi: bcm-qspi: return error if neither hif_mspi nor mspi is available
| * 1f3643f9cf net: dsa: vsc73xx: fix MTU configuration
| * c377451012 Add MODULE_FIRMWARE() for FIRMWARE_TG357766.
| * 6d2243ab78 sctp: fix potential deadlock on &net->sctp.addr_wq_lock
| * 620993d5ee media: cec: i2c: ch7322: also select REGMAP
| * f733a7bfe8 rtc: st-lpc: Release some resources in st_rtc_probe() in case of error
| * aa70e5dd72 pwm: sysfs: Do not apply state to already disabled PWMs
| * 8a0413be8a pwm: imx-tpm: force 'real_period' to be zero in suspend
| * e4845cdea7 phy: tegra: xusb: check return value of devm_kzalloc()
| * 442e1a98bd mfd: stmpe: Only disable the regulators if they are enabled
| * 724448d602 KVM: s390: vsie: fix the length of APCB bitmap
| * c5e2f6f2bb mfd: stmfx: Nullify stmfx->vdd in case of error
| * 30ead8b9bf mfd: stmfx: Fix error path in stmfx_chip_init
| * 4d24051473 test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation
| * 5b31ac1d6d serial: 8250_omap: Use force_suspend and resume for system suspend
| * 8e00ae25a3 Revert "usb: common: usb-conn-gpio: Set last role to unknown before initial detection"
| * a81e1f22e1 mfd: intel-lpss: Add missing check for platform_get_resource
| * 1dc07edc01 usb: dwc3-meson-g12a: Fix an error handling path in dwc3_meson_g12a_probe()
| * 7ade555ac5 usb: common: usb-conn-gpio: Set last role to unknown before initial detection
| * 0e9e127835 usb: dwc3: qcom: Fix an error handling path in dwc3_qcom_probe()
| * a617145208 usb: dwc3: qcom: Release the correct resources in dwc3_qcom_remove()
| * 96898fb476 KVM: s390: fix KVM_S390_GET_CMMA_BITS for GFNs in memslot holes
| * 4e8e838fce media: atomisp: gmin_platform: fix out_len in gmin_get_config_dsm_var()
| * b754ea60e6 media: venus: helpers: Fix ALIGN() of non power of two
| * 02b2266023 mfd: rt5033: Drop rt5033-battery sub-device
| * e52019c095 coresight: Fix loss of connection info when a module is unloaded
| * 018eddcb6b kernfs: fix missing kernfs_idr_lock to remove an ID from the IDR
| * a59f64a835 serial: 8250: lock port for UART_IER access in omap8250_irq()
| * 8d65d0a2bf serial: 8250: lock port for stop_rx() in omap8250_irq()
| * d66ddb61fa usb: hide unused usbfs_notify_suspend/resume functions
| * 56901de563 usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe()
| * 6538e5d9f7 extcon: Fix kernel doc of property capability fields to avoid warnings
| * dac7d7efcb extcon: Fix kernel doc of property fields to avoid warnings
| * 2788a3553f usb: gadget: u_serial: Add null pointer check in gserial_suspend
| * 74f8606ddf usb: dwc3: qcom: Fix potential memory leak
| * bdce16c1e6 clk: qcom: ipq6018: fix networking resets
| * ee3f494cfc clk: qcom: reset: support resetting multiple bits
| * 35fd1a213f clk: qcom: reset: Allow specifying custom reset delay
| * d87ef4e857 media: usb: siano: Fix warning due to null work_func_t function pointer
| * 300388887c media: videodev2.h: Fix struct v4l2_input tuner index comment
| * 5f3f4aa673 media: usb: Check az6007_read() return value
| * 32809afb60 clk: qcom: gcc-ipq6018: Use floor ops for sdcc clocks
| * bb81ca33ac serial: 8250: omap: Fix freeing of resources on failed register
| * ed68e8e22e sh: j2: Use ioremap() to translate device tree address into kernel memory
| * a7890637b3 w1: fix loop in w1_fini()
| * a27aeae714 w1: w1_therm: fix locking behavior in convert_t
| * cd5ec3ee52 SUNRPC: Fix UAF in svc_tcp_listen_data_ready()
| * e4a9b3333e block: change all __u32 annotations to __be32 in affs_hardblocks.h
| * 54da6c4c14 block: fix signed int overflow in Amiga partition support
| * b6a107c520 phy: tegra: xusb: Clear the driver reference in usb-phy dev
| * fac7be49f1 usb: dwc3: gadget: Propagate core init errors to UDC during pullup
| * 8b0a55b592 USB: serial: option: add LARA-R6 01B PIDs
| * 810e401b34 io_uring: ensure IOPOLL locks around deferred work
| * cd5837564f hwrng: st - keep clock enabled while hwrng is registered
| * 557e528255 dax: Introduce alloc_dev_dax_id()
| * 94a85474f5 dax: Fix dax_mapping_release() use after free
| * 7c9f5a14d9 NFSv4.1: freeze the session table upon receiving NFS4ERR_BADSESSION
| * bab0bf5677 ARC: define ASM_NL and __ALIGN(_STR) outside #ifdef __ASSEMBLY__ guard
| * cb0cdca5c9 modpost: fix off by one in is_executable_section()
| * f0350516b9 crypto: marvell/cesa - Fix type mismatch warning
| * b540694455 modpost: fix section mismatch message for R_ARM_{PC24,CALL,JUMP24}
| * 88978ef7fd modpost: fix section mismatch message for R_ARM_ABS32
| * 31195ee328 crypto: nx - fix build warnings when DEBUG_FS is not enabled
| * 77471e4912 hwrng: virtio - Fix race on data_avail and actual data
| * e8f51401d6 hwrng: virtio - always add a pending request
| * ffc5ce9c27 hwrng: virtio - don't waste entropy
| * d13ea82bfe hwrng: virtio - don't wait on cleanup
| * 5f23dae018 hwrng: virtio - add an internal buffer
| * aba192bb31 powerpc/mm/dax: Fix the condition when checking if altmap vmemap can cross-boundary
| * 7afd0de0cc powerpc/book3s64/mm: Fix DirectMap stats in /proc/meminfo
| * 7289ca7a51 mm: rename p4d_page_vaddr to p4d_pgtable and make it return pud_t *
| * bfad110188 mm: rename pud_page_vaddr to pud_pgtable and make it return pmd_t *
| * 07c19c0ad4 powerpc/powernv/sriov: perform null check on iov before dereferencing iov
| * f3c7b95c99 pinctrl: at91-pio4: check return value of devm_kasprintf()
| * b7a38fc3f3 perf dwarf-aux: Fix off-by-one in die_get_varname()
| * 75a3cb1e23 perf script: Fix allocation of evsel->priv related to per-event dump files
| * 647c6d35cc perf script: Fixup 'struct evsel_script' method prefix
| * 958acb479e kcsan: Don't expect 64 bits atomic builtins from 32 bits architectures
| * 5533f0eb0a pinctrl: cherryview: Return correct value if pin in push-pull mode
| * 4b63caf86e perf bench: Add missing setlocale() call to allow usage of %'d style formatting
| * 345ee85216 perf bench: Use unbuffered output when pipe/tee'ing to a file
| * f0d2310f6b PCI: Add pci_clear_master() stub for non-CONFIG_PCI
| * b65fe59b2d PCI: ftpci100: Release the clock resources
| * cb389e8edf PCI: pciehp: Cancel bringup sequence if card is not present
| * b9895a4c95 scsi: 3w-xxxx: Add error handling for initialization failure in tw_probe()
| * 7badf4d6f4 PCI/ASPM: Disable ASPM on MFD function removal to avoid use-after-free
| * d27238fc83 pinctrl: bcm2835: Handle gpiochip_add_pin_range() errors
| * ac64019e4d scsi: qedf: Fix NULL dereference in error handling
| * 8e9907e921 PCI: cadence: Fix Gen2 Link Retraining process
| * 07be8e60f2 ASoC: imx-audmix: check return value of devm_kasprintf()
| * 714ba10a6d ovl: update of dentry revalidate flags after copy up
| * 47f4d875aa drivers: meson: secure-pwrc: always enable DMA domain
| * 5f149d0538 clk: ti: clkctrl: check return value of kasprintf()
| * fd9324fa4d clk: keystone: sci-clk: check return value of kasprintf()
| * 0b754f9cfd clk: si5341: free unused memory on probe failure
| * dc8d0178d5 clk: si5341: check return value of {devm_}kasprintf()
| * dc3eef6480 clk: si5341: return error if one synth clock registration fails
| * 0401139800 clk: si5341: Add sysfs properties to allow checking/resetting device faults
| * fc813d0573 clk: si5341: Allow different output VDD_SEL values
| * f64fcd3acf clk: cdce925: check return value of kasprintf()
| * 866d4340c6 clk: vc5: check memory returned by kasprintf()
| * c67a55f7cc drm/msm/dp: Free resources after unregistering them
| * c3b63584d8 drm/msm/dpu: do not enable color-management if DSPPs are not available
| * f923a58221 ALSA: ac97: Fix possible NULL dereference in snd_ac97_mixer
| * 404e9f741a clk: tegra: tegra124-emc: Fix potential memory leak
| * cb047c13bb clk: imx: clk-imx8mp: improve error handling in imx8mp_clocks_probe()
| * 294321349b clk: imx: clk-imx8mn: fix memory leak in imx8mn_clocks_probe
| * e749bc5a90 RDMA/bnxt_re: Avoid calling wake_up threads from spin_lock context
| * 9341501e2f RDMA/bnxt_re: wraparound mbox producer index
| * 968e27fd03 amdgpu: validate offset_in_bo of drm_amdgpu_gem_va
| * e070120e6d drm/radeon: fix possible division-by-zero errors
| * a77b80825b drm/amdkfd: Fix potential deallocation of previously deallocated memory.
| * 245aa7c023 ARM: dts: BCM5301X: fix duplex-full => full-duplex
| * 7e2edb84fe hwmon: (pmbus/adm1275) Fix problems with temperature monitoring on ADM1272
| * 580e9b987b hwmon: (adm1275) Allow setting sample averaging
| * a3c5d148b7 hwmon: (adm1275) enable adm1272 temperature reporting
| * 4610efa404 hwmon: (gsc-hwmon) fix fan pwm temperature scaling
| * 6e12311dce ARM: dts: stm32: fix i2s endpoint format property for stm32mp15xx-dkx
| * badeb7fe24 ARM: dts: stm32: Fix audio routing on STM32MP15xx DHCOM PDK2
| * 17cd31487d arm64: dts: ti: k3-j7200: Fix physical address of pin
| * ce6e0434e5 fbdev: omapfb: lcd_mipid: Fix an error handling path in mipid_spi_probe()
| * 34e1e2f3cf arm64: dts: renesas: ulcb-kf: Remove flow control for SCIF1
| * 6817914c67 ARM: dts: iwg20d-q7-common: Fix backlight pwm specifier
| * 220f86cc19 RDMA/hns: Fix hns_roce_table_get return value
| * 9196f44239 RDMA/hns: Clean the hardware related code for HEM
| * aa495b927f RDMA/hns: Use refcount_t APIs for HEM
| * de1049dd18 RDMA/hns: Fix coding style issues
| * cc1b04b699 RDMA: Remove uverbs_ex_cmd_mask values that are linked to functions
| * 7dcb9ea3ee IB/hfi1: Fix wrong mmu_node used for user SDMA packet after invalidate
| * 6cf8f3d690 IB/hfi1: Fix sdma.h tx->num_descs off-by-one errors
| * 2d38866a99 IB/hfi1: Use bitmap_zalloc() when applicable
| * 42b6865bf5 soc/fsl/qe: fix usb.c build errors
| * 9c14d14066 ARM: dts: meson8: correct uart_B and uart_C clock references
| * 684a2f180e ASoC: es8316: Do not set rate constraints for unsupported MCLKs
| * d883e16c7f ASoC: es8316: Increment max value for ALC Capture Target Volume control
| * 105af71974 memory: brcmstb_dpfe: fix testing array offset after use
| * ddc74d6ea3 ARM: dts: stm32: Shorten the AV96 HDMI sound card name
| * 392ee3cc99 arm64: dts: qcom: apq8096: fix fixed regulator name property
| * c85a076215 ARM: omap2: fix missing tick_broadcast() prototype
| * aec18da741 ARM: ep93xx: fix missing-prototype warnings
| * b574cd7e4d drm/panel: simple: fix active size for Ampire AM-480272H3TMQW-T01H
| * 02d8b008ff arm64: dts: qcom: msm8996: correct camss unit address
| * 6d103b1cc1 arm64: dts: qcom: msm8994: correct SPMI unit address
| * 160ac75a5a arm64: dts: qcom: msm8916: correct camss unit address
| * e8b131d216 ARM: dts: gta04: Move model property out of pinctrl node
| * b0b180a712 RDMA/bnxt_re: Fix to remove an unnecessary log
| * 446092f136 RDMA/bnxt_re: Remove a redundant check inside bnxt_re_update_gid
| * b54b26ac50 RDMA/bnxt_re: Use unique names while registering interrupts
| * 11bd3882c3 RDMA/bnxt_re: Fix to remove unnecessary return labels
| * 7080ef46ad RDMA/bnxt_re: Disable/kill tasklet only if it is enabled
| * 2a9895df80 arm64: dts: microchip: sparx5: do not use PSCI on reference boards
| * 726fdf47c1 bus: ti-sysc: Fix dispc quirk masking bool variables
| * 8ee24ddf45 ARM: dts: stm32: Move ethernet MAC EEPROM from SoM to carrier boards
| * 617a4da09d drm/panel: sharp-ls043t1le01: adjust mode settings
| * 3c87c98225 drm: sun4i_tcon: use devm_clk_get_enabled in `sun4i_tcon_init_clocks`
| * 39305592dc Input: adxl34x - do not hardcode interrupt trigger type
| * e629efc6d6 ARM: dts: meson8b: correct uart_B and uart_C clock references
| * bd46ade714 ARM: dts: BCM5301X: Drop "clock-names" from the SPI node
| * 20ecae1af5 drm/vram-helper: fix function names in vram helper doc
| * 46a34e1459 drm/bridge: tc358768: fix THS_TRAILCNT computation
| * f2f7d0a4a2 drm/bridge: tc358768: fix TXTAGOCNT computation
| * 8e47328fe0 drm/bridge: tc358768: fix THS_ZEROCNT computation
| * 6b9450723b drm/bridge: tc358768: fix TCLK_TRAILCNT computation
| * 33abcfbb17 drm/bridge: tc358768: Add atomic_get_input_bus_fmts() implementation
| * 43b2d11ccf drm/bridge: tc358768: fix TCLK_ZEROCNT computation
| * 46b7417189 drm/bridge: tc358768: fix PLL target frequency
| * 825b00c685 drm/bridge: tc358768: fix PLL parameters computation
| * 1b4f23fdf2 drm/bridge: tc358768: always enable HS video mode
| * 4e0fd4f54b Input: drv260x - sleep between polling GO bit
| * 2780d58448 drm/amd/display: Explicitly specify update type per plane info change
| * b2213fc60b radeon: avoid double free in ci_dpm_init()
| * 472a615e66 netlink: Add __sock_i_ino() for __netlink_diag_dump().
| * d10b380369 ipvlan: Fix return value of ipvlan_queue_xmit()
| * 5215c00968 netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value.
| * 9bdcda7aba netfilter: conntrack: dccp: copy entire header to stack buffer, not just basic one
| * 36e07e8acf lib/ts_bm: reset initial match offset for every block of text
| * 96f2c6f272 net: nfc: Fix use-after-free caused by nfc_llcp_find_local
| * a3a1550c4d nfc: llcp: simplify llcp_sock_connect() error paths
| * cb1aa7cc56 sfc: fix crash when reading stats while NIC is resetting
| * 6ccfec84f0 net: axienet: Move reset before 64-bit DMA detection
| * bccc7ace12 gtp: Fix use-after-free in __gtp_encap_destroy().
| * 4d9cd4b330 selftests: rtnetlink: remove netdevsim device after ipsec offload test
| * 44db85c6e1 netlink: do not hard code device address lenth in fdb dumps
| * cde7b90e05 netlink: fix potential deadlock in netlink_set_err()
| * 0c9e48428f net: stmmac: fix double serdes powerdown
| * 1ba91ffa1a igc: Fix race condition in PTP tx code
| * 660d4e73ef wifi: ath9k: convert msecs to jiffies where needed
| * 150ca0768b wifi: cfg80211: rewrite merging of inherited elements
| * 4e321c18ef wifi: iwlwifi: pull from TXQs with softirqs disabled
| * 2715617c2a rtnetlink: extend RTEXT_FILTER_SKIP_STATS to IFLA_VF_INFO
| * 581401cd3c wifi: ath9k: Fix possible stall on ath9k_txq_list_has_key()
| * 6b22c2c649 memstick r592: make memstick_debug_get_tpc_name() static
| * 6cb477e722 kexec: fix a memory leak in crash_shrink_memory()
| * fdb07728d8 watchdog/perf: more properly prevent false positives with turbo modes
| * ac23d7f414 watchdog/perf: define dummy watchdog_update_hrtimer_threshold() on correct config
| * 22da8363e3 wifi: rsi: Do not set MMC_PM_KEEP_POWER in shutdown
| * b2aeb97fd4 wifi: rsi: Do not configure WoWlan in shutdown hook if not enabled
| * 1044187e72 wifi: ath9k: don't allow to overwrite ENDPOINT0 attributes
| * c10c6ea9b3 wifi: ray_cs: Fix an error handling path in ray_probe()
| * 8825991838 wifi: ray_cs: Drop useless status variable in parse_addr()
| * a66e3fd380 wifi: ray_cs: Utilize strnlen() in parse_addr()
| * 18d71562f7 wifi: wl3501_cs: Fix an error handling path in wl3501_probe()
| * b6f793de61 wl3501_cs: use eth_hw_addr_set()
| * cbd44a9e1c net: create netdev->dev_addr assignment helpers
| * 13cf0e3894 wl3501_cs: Fix misspelling and provide missing documentation
| * 5512db9bd4 wifi: atmel: Fix an error handling path in atmel_probe()
| * 86ebbcbdc7 wifi: orinoco: Fix an error handling path in orinoco_cs_probe()
| * fb7d78feb5 wifi: orinoco: Fix an error handling path in spectrum_cs_probe()
| * 8782dc2504 regulator: core: Streamline debugfs operations
| * 92bcd84941 regulator: core: Fix more error checking for debugfs_create_dir()
| * 78f390aa0e bpftool: JIT limited misreported as negative value on aarch64
| * 107e849f3c nfc: llcp: fix possible use of uninitialized variable in nfc_llcp_send_connect()
| * 0be9de2ea0 nfc: constify several pointers to u8, char and sk_buff
| * ef7fe1b5c4 libbpf: fix offsetof() and container_of() to work with CO-RE
| * b190ced50a sctp: add bpf_bypass_getsockopt proto callback
| * 08f61a3491 bpf: Remove extra lock_sock for TCP_ZEROCOPY_RECEIVE
| * c62e2ac02e wifi: mwifiex: Fix the size of a memory allocation in mwifiex_ret_802_11_scan()
| * 3ae910a375 wifi: wilc1000: fix for absent RSN capabilities WFA testcase
| * 795ef55030 spi: spi-geni-qcom: Correct CS_TOGGLE bit in SPI_TRANS_CFG
| * bd3e880dce samples/bpf: Fix buffer overflow in tcp_basertt
| * 250efb4d3f wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx
| * 0f3f41b475 wifi: ath9k: fix AR9003 mac hardware hang check register offset calculation
| * cbd0f41a53 igc: Enable and fix RX hash usage by netstack
| * a14cb30726 pstore/ram: Add check for kstrdup
| * 628709a057 ima: Fix build warnings
| * 16ec59c03a evm: Complete description of evm_inode_setattr()
| * cba85e1cb7 x86/mm: Fix __swp_entry_to_pte() for Xen PV guests
| * 365f546de5 perf/ibs: Fix interface via core pmu events
| * 604d6a5ff7 rcu/rcuscale: Stop kfree_scale_thread thread(s) after unloading rcuscale
| * d414e24d15 rcu/rcuscale: Move rcu_scale_*() after kfree_scale_cleanup()
| * ecc5e6dbc2 rcuscale: Move shutdown from wait_event() to wait_event_idle()
| * b62c816bdb rcuscale: Always log error message
| * 8cd9917c13 rcuscale: Console output claims too few grace periods
| * 456f783b83 thermal/drivers/sun8i: Fix some error handling paths in sun8i_ths_probe()
| * bacc49b2d5 cpufreq: intel_pstate: Fix energy_performance_preference for passive
| * a8bfe52755 ARM: 9303/1: kprobes: avoid missing-declaration warnings
| * a50b75c13d powercap: RAPL: Fix CONFIG_IOSF_MBI dependency
| * 23f6efd226 perf/arm-cmn: Fix DTC reset
| * b69868d50d PM: domains: fix integer overflow issues in genpd_parse_state()
| * ebdff09865 clocksource/drivers/cadence-ttc: Fix memory leak in ttc_timer_probe
| * a2f83a4c7c tracing/timer: Add missing hrtimer modes to decode_hrtimer_mode().
| * f1be1ed32d posix-timers: Prevent RT livelock in itimer_delete()
| * b315d57da4 irqchip/jcore-aic: Fix missing allocation of IRQ descriptors
| * 495cee0e14 irqchip/jcore-aic: Kill use of irq_create_strict_mappings()
| * 9d1cccdad0 md/raid10: fix io loss while replacement replace rdev
| * 2990e2ece1 md/raid10: fix null-ptr-deref of mreplace in raid10_sync_request
| * b1d8f38310 md/raid10: fix wrong setting of max_corr_read_errors
| * b3a0bc4a01 md/raid10: fix overflow of md/safe_mode_delay
| * 39fa14e824 md/raid10: check slab-out-of-bounds in md_bitmap_get_counter
| * 8563b58a43 blk-iocost: use spin_lock_irqsave in adjust_inuse_and_calc_cost
| * 3db97cc79b x86/resctrl: Only show tasks' pid in current pid namespace
| * 1a82005f3f fs: pipe: reveal missing function protoypes
| * f70407e8e0 nubus: Partially revert proc_create_single_data() conversion
| * 0336c8f072 drm/amdgpu: Validate VM ioctl flags.
| * c484b65f93 scripts/tags.sh: Resolve gtags empty index generation
| * 649104c834 Revert "thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in mtk_thermal_probe"
| * 02a4c4e225 HID: logitech-hidpp: add HIDPP_QUIRK_DELAYED_INIT for the T651.
| * 9598a647ec HID: wacom: Use ktime_t rather than int when dealing with timestamps
| * 2bf70b88cc fbdev: imsttfb: Fix use after free bug in imsttfb_probe
| * 5b813734a0 video: imsttfb: check for ioremap() failures
| * 02fbf62df9 can: isotp: isotp_sendmsg(): fix return error fix on TX path
| * 8667f71131 x86/smp: Use dedicated cache-line for mwait_play_dead()
| * 1d0fe3fb5d media: atomisp: fix "variable dereferenced before check 'asd'"
* | 9710ae86ef Merge branch 'android12-5.10' into branch 'android12-5.10-lts'
* | db023c4bb0 Merge 5.10.187 into android12-5.10-lts
|\|
| * 140d69b4e4 Linux 5.10.187
| * 93df00f9d4 x86/cpu/amd: Add a Zenbleed fix
| * 191b8f9b0e x86/cpu/amd: Move the errata checking functionality up
| * 113ce5ed59 x86/microcode/AMD: Load late on both threads too
* | 44da38b39c ANDROID: GKI: fix up sysctl_vals ABI change.
* | c9606079a5 Revert "gpio: Allow per-parent interrupt data"
* | fc3985cbee Revert "gpiolib: Fix GPIO chip IRQ initialization restriction"
* | 02a1b32243 Merge 5.10.186 into android12-5.10-lts
|/
* 381518b4a9 Linux 5.10.186
* 29917a20be bpf/btf: Accept function names that contain dots
* 8b7454dd98 netfilter: nf_tables: hold mutex on netns pre_exit path
* 9e8d927cfa netfilter: nf_tables: validate registers coming from userspace.
* f19a4818a9 netfilter: nftables: statify nft_parse_register()
* 42997367cb i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle
* 5a257f3553 x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys
* d8efc77f23 drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
* 485fe16508 drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
* 0b0fdc43b2 drm/exynos: vidi: fix a wrong error return
* 32134e7a0f ARM: dts: Fix erroneous ADS touchscreen polarities
* 79cf5657be s390/purgatory: disable branch profiling
* a819de62ec ASoC: nau8824: Add quirk to active-high jack-detect
* fa08753c2d ASoC: simple-card: Add missing of_node_put() in case of error
* 9138ed7e2b spi: lpspi: disable lpspi module irq in DMA mode
* 97b6c4c1d1 s390/cio: unregister device when the only path is gone
* fe949c1662 Input: soc_button_array - add invalid acpi_index DMI quirk handling
* eaf1fa9452 usb: gadget: udc: fix NULL dereference in remove()
* 7d1a0733a5 nfcsim.c: Fix error checking for debugfs_create_dir
* dc357c0787 media: cec: core: don't set last_initiator if tx in progress
* c13573032b arm64: Add missing Set/Way CMO encodings
* 49a2b18f49 HID: wacom: Add error check to wacom_parse_and_register()
* 2b43198de0 scsi: target: iscsi: Prevent login threads from racing between each other
* 75aa3f255c gpiolib: Fix GPIO chip IRQ initialization restriction
* 304802e5b0 gpio: Allow per-parent interrupt data
* bc75968b49 sch_netem: acquire qdisc lock in netem_change()
* caddeadd0d Revert "net: phy: dp83867: perform soft reset and retain established link"
* 5702afa2c3 netfilter: nfnetlink_osf: fix module autoload
* 3d5c09c782 netfilter: nf_tables: disallow element updates of bound anonymous sets
* 2a90da8e0d netfilter: nft_set_pipapo: .walk does not deal with generations
* 792bfe26a6 be2net: Extend xmit workaround to BE3 chip
* cebb5cee09 net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch
* 7a1ae00005 ipvs: align inner_mac_header for encapsulation
* f2547bc716 mmc: usdhi60rol0: fix deferred probing
* 4a99e35c5a mmc: sh_mmcif: fix deferred probing
* c2278de138 mmc: sdhci-acpi: fix deferred probing
* f6e176ef89 mmc: owl: fix deferred probing
* f29d0ab0e6 mmc: omap_hsmmc: fix deferred probing
* 65d9318e3d mmc: omap: fix deferred probing
* 9ad3c21fb6 mmc: mvsdio: fix deferred probing
* 9b0417fd40 mmc: mtk-sd: fix deferred probing
* ced13bc50e net: qca_spi: Avoid high load if QCA7000 is not available
* b1b9c81e29 xfrm: Linearize the skb after offloading if needed.
* 31cd0d4a44 selftests: net: fcnal-test: check if FIPS mode is enabled
* 2af75a36af selftests: net: vrf-xfrm-tests: change authentication and encryption algos
* 07fbbddae5 xfrm: fix inbound ipv4/udp/esp packets to UDPv6 dualstack sockets
* 562800447f bpf: Fix verifier id tracking of scalars on spill
* 3b0a96db67 bpf: track immediate values written to stack by BPF_ST instruction
* bff7824db6 xfrm: Ensure policies always checked on XFRM-I input path
* 01af67ed83 xfrm: interface: rename xfrm_interface.c to xfrm_interface_core.c
* cdaa6e1105 xfrm: Treat already-verified secpath entries as optional
* 47be2931c4 ieee802154: hwsim: Fix possible memory leaks
* 051d642133 memfd: check for non-NULL file_seals in memfd_create() syscall
* 1ac6e9ee84 sysctl: move some boundary constants from sysctl.c to sysctl_vals
* e1aa3fe3e2 mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30%
* ad10dd2113 x86/mm: Avoid using set_pgd() outside of real PGD pages
* 4de2093674 nilfs2: prevent general protection fault in nilfs_clear_dirty_page()
* 3845c38417 io_uring/net: disable partial retries for recvmsg with cmsg
* 826ee9fa36 io_uring/net: clear msg_controllen on partial sendmsg retry
* 5fdea4468f io_uring/net: save msghdr->msg_control for retries
* 5a7101d8fa writeback: fix dereferencing NULL mapping->host on writeback_page_template
* f00cd687c2 regmap: spi-avmm: Fix regmap_bus max_raw_write
* bc35f93e4b regulator: pca9450: Fix LDO3OUT and LDO4OUT MASK
* 5938470f9c ip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN
* 2e454015ca mmc: mmci: stm32: fix max busy timeout calculation
* 1be288fd3b mmc: meson-gx: remove redundant mmc_request_done() call from irq context
* 1b97630cd9 mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916
* 63608437a8 cgroup: Do not corrupt task iteration when rebinding subsystem
* 988d06f5eb PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic
* 8f2d5ebdfe PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev
* 8b74846769 Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally"
* 79ceb758e3 PCI: hv: Fix a race condition bug in hv_pci_query_relations()
* 8b8c9812c0 Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs
* b435298349 nilfs2: fix buffer corruption due to concurrent device reads
* 524a2c0bcf selftests: mptcp: join: skip check if MIB counter not supported
* e508d9cef8 selftests: mptcp: pm nl: remove hardcoded default limits
* 4c4ca42418 selftests: mptcp: lib: skip if not below kernel version
* 6d20cfbc57 selftests: mptcp: lib: skip if missing symbol
* 3cc7935d32 tick/common: Align tick period during sched_timer setup
* db4ab0c97a tracing: Add tracing_reset_all_online_cpus_unlocked() function
* 9ced730490 net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs
* b1b42fff8a drm/amd/display: fix the system hang while disable PSR

Change-Id: I0c8675eb9b259cf7631e968dd66c31d3e16d31e9
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Signed-off-by: Todd Kjos <tkjos@google.com>
2023-09-27 19:46:11 +00:00
xieliujie
785004172f ANDROID: ABI: Update oplus symbol list
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable

1 Added function:

  [A] 'function int __traceiter_android_vh_percpu_rwsem_wq_add(void*, percpu_rw_semaphore*, bool)'

1 Added variable:

  [A] 'tracepoint __tracepoint_android_vh_percpu_rwsem_wq_add'

Bug: 301066838
Change-Id: Iaa2d29e282e58a1de044f3a8fde5158070163d93
Signed-off-by: xieliujie <xieliujie@oppo.com>
2023-09-27 09:59:02 +08:00
xieliujie
d3961f624b ANDROID: vendor_hooks: Add hooks for oem percpu-rwsem optimaton
Recently we have discovered many lag issues caused by percpu_rwsem
lock-holding tasks not being scheduled for a long time. we need to
identify them and provide appropriate scheduling protection in our
oem scheduler.
To support this, we add one hook below:
    trace_android_vh_percpu_rwsem_wq_add

Bug: 301066838
Change-Id: Id770c1a7978842abfc62d3fa9aeb5ac7a1904972
Signed-off-by: xieliujie <xieliujie@oppo.com>
(cherry picked from commit f451f4a599)
2023-09-27 09:11:18 +08:00
valis
180ea0f6d4 UPSTREAM: net: sched: sch_qfq: Fix UAF in qfq_dequeue()
[ Upstream commit 8fc134fee2 ]

When the plug qdisc is used as a class of the qfq qdisc it could trigger a
UAF. This issue can be reproduced with following commands:

  tc qdisc add dev lo root handle 1: qfq
  tc class add dev lo parent 1: classid 1:1 qfq weight 1 maxpkt 512
  tc qdisc add dev lo parent 1:1 handle 2: plug
  tc filter add dev lo parent 1: basic classid 1:1
  ping -c1 127.0.0.1

and boom:

[  285.353793] BUG: KASAN: slab-use-after-free in qfq_dequeue+0xa7/0x7f0
[  285.354910] Read of size 4 at addr ffff8880bad312a8 by task ping/144
[  285.355903]
[  285.356165] CPU: 1 PID: 144 Comm: ping Not tainted 6.5.0-rc3+ #4
[  285.357112] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
[  285.358376] Call Trace:
[  285.358773]  <IRQ>
[  285.359109]  dump_stack_lvl+0x44/0x60
[  285.359708]  print_address_description.constprop.0+0x2c/0x3c0
[  285.360611]  kasan_report+0x10c/0x120
[  285.361195]  ? qfq_dequeue+0xa7/0x7f0
[  285.361780]  qfq_dequeue+0xa7/0x7f0
[  285.362342]  __qdisc_run+0xf1/0x970
[  285.362903]  net_tx_action+0x28e/0x460
[  285.363502]  __do_softirq+0x11b/0x3de
[  285.364097]  do_softirq.part.0+0x72/0x90
[  285.364721]  </IRQ>
[  285.365072]  <TASK>
[  285.365422]  __local_bh_enable_ip+0x77/0x90
[  285.366079]  __dev_queue_xmit+0x95f/0x1550
[  285.366732]  ? __pfx_csum_and_copy_from_iter+0x10/0x10
[  285.367526]  ? __pfx___dev_queue_xmit+0x10/0x10
[  285.368259]  ? __build_skb_around+0x129/0x190
[  285.368960]  ? ip_generic_getfrag+0x12c/0x170
[  285.369653]  ? __pfx_ip_generic_getfrag+0x10/0x10
[  285.370390]  ? csum_partial+0x8/0x20
[  285.370961]  ? raw_getfrag+0xe5/0x140
[  285.371559]  ip_finish_output2+0x539/0xa40
[  285.372222]  ? __pfx_ip_finish_output2+0x10/0x10
[  285.372954]  ip_output+0x113/0x1e0
[  285.373512]  ? __pfx_ip_output+0x10/0x10
[  285.374130]  ? icmp_out_count+0x49/0x60
[  285.374739]  ? __pfx_ip_finish_output+0x10/0x10
[  285.375457]  ip_push_pending_frames+0xf3/0x100
[  285.376173]  raw_sendmsg+0xef5/0x12d0
[  285.376760]  ? do_syscall_64+0x40/0x90
[  285.377359]  ? __static_call_text_end+0x136578/0x136578
[  285.378173]  ? do_syscall_64+0x40/0x90
[  285.378772]  ? kasan_enable_current+0x11/0x20
[  285.379469]  ? __pfx_raw_sendmsg+0x10/0x10
[  285.380137]  ? __sock_create+0x13e/0x270
[  285.380673]  ? __sys_socket+0xf3/0x180
[  285.381174]  ? __x64_sys_socket+0x3d/0x50
[  285.381725]  ? entry_SYSCALL_64_after_hwframe+0x6e/0xd8
[  285.382425]  ? __rcu_read_unlock+0x48/0x70
[  285.382975]  ? ip4_datagram_release_cb+0xd8/0x380
[  285.383608]  ? __pfx_ip4_datagram_release_cb+0x10/0x10
[  285.384295]  ? preempt_count_sub+0x14/0xc0
[  285.384844]  ? __list_del_entry_valid+0x76/0x140
[  285.385467]  ? _raw_spin_lock_bh+0x87/0xe0
[  285.386014]  ? __pfx__raw_spin_lock_bh+0x10/0x10
[  285.386645]  ? release_sock+0xa0/0xd0
[  285.387148]  ? preempt_count_sub+0x14/0xc0
[  285.387712]  ? freeze_secondary_cpus+0x348/0x3c0
[  285.388341]  ? aa_sk_perm+0x177/0x390
[  285.388856]  ? __pfx_aa_sk_perm+0x10/0x10
[  285.389441]  ? check_stack_object+0x22/0x70
[  285.390032]  ? inet_send_prepare+0x2f/0x120
[  285.390603]  ? __pfx_inet_sendmsg+0x10/0x10
[  285.391172]  sock_sendmsg+0xcc/0xe0
[  285.391667]  __sys_sendto+0x190/0x230
[  285.392168]  ? __pfx___sys_sendto+0x10/0x10
[  285.392727]  ? kvm_clock_get_cycles+0x14/0x30
[  285.393328]  ? set_normalized_timespec64+0x57/0x70
[  285.393980]  ? _raw_spin_unlock_irq+0x1b/0x40
[  285.394578]  ? __x64_sys_clock_gettime+0x11c/0x160
[  285.395225]  ? __pfx___x64_sys_clock_gettime+0x10/0x10
[  285.395908]  ? _copy_to_user+0x3e/0x60
[  285.396432]  ? exit_to_user_mode_prepare+0x1a/0x120
[  285.397086]  ? syscall_exit_to_user_mode+0x22/0x50
[  285.397734]  ? do_syscall_64+0x71/0x90
[  285.398258]  __x64_sys_sendto+0x74/0x90
[  285.398786]  do_syscall_64+0x64/0x90
[  285.399273]  ? exit_to_user_mode_prepare+0x1a/0x120
[  285.399949]  ? syscall_exit_to_user_mode+0x22/0x50
[  285.400605]  ? do_syscall_64+0x71/0x90
[  285.401124]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
[  285.401807] RIP: 0033:0x495726
[  285.402233] Code: ff ff ff f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 11 b8 2c 00 00 00 0f 09
[  285.404683] RSP: 002b:00007ffcc25fb618 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[  285.405677] RAX: ffffffffffffffda RBX: 0000000000000040 RCX: 0000000000495726
[  285.406628] RDX: 0000000000000040 RSI: 0000000002518750 RDI: 0000000000000000
[  285.407565] RBP: 00000000005205ef R08: 00000000005f8838 R09: 000000000000001c
[  285.408523] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000002517634
[  285.409460] R13: 00007ffcc25fb6f0 R14: 0000000000000003 R15: 0000000000000000
[  285.410403]  </TASK>
[  285.410704]
[  285.410929] Allocated by task 144:
[  285.411402]  kasan_save_stack+0x1e/0x40
[  285.411926]  kasan_set_track+0x21/0x30
[  285.412442]  __kasan_slab_alloc+0x55/0x70
[  285.412973]  kmem_cache_alloc_node+0x187/0x3d0
[  285.413567]  __alloc_skb+0x1b4/0x230
[  285.414060]  __ip_append_data+0x17f7/0x1b60
[  285.414633]  ip_append_data+0x97/0xf0
[  285.415144]  raw_sendmsg+0x5a8/0x12d0
[  285.415640]  sock_sendmsg+0xcc/0xe0
[  285.416117]  __sys_sendto+0x190/0x230
[  285.416626]  __x64_sys_sendto+0x74/0x90
[  285.417145]  do_syscall_64+0x64/0x90
[  285.417624]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
[  285.418306]
[  285.418531] Freed by task 144:
[  285.418960]  kasan_save_stack+0x1e/0x40
[  285.419469]  kasan_set_track+0x21/0x30
[  285.419988]  kasan_save_free_info+0x27/0x40
[  285.420556]  ____kasan_slab_free+0x109/0x1a0
[  285.421146]  kmem_cache_free+0x1c2/0x450
[  285.421680]  __netif_receive_skb_core+0x2ce/0x1870
[  285.422333]  __netif_receive_skb_one_core+0x97/0x140
[  285.423003]  process_backlog+0x100/0x2f0
[  285.423537]  __napi_poll+0x5c/0x2d0
[  285.424023]  net_rx_action+0x2be/0x560
[  285.424510]  __do_softirq+0x11b/0x3de
[  285.425034]
[  285.425254] The buggy address belongs to the object at ffff8880bad31280
[  285.425254]  which belongs to the cache skbuff_head_cache of size 224
[  285.426993] The buggy address is located 40 bytes inside of
[  285.426993]  freed 224-byte region [ffff8880bad31280, ffff8880bad31360)
[  285.428572]
[  285.428798] The buggy address belongs to the physical page:
[  285.429540] page:00000000f4b77674 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0xbad31
[  285.430758] flags: 0x100000000000200(slab|node=0|zone=1)
[  285.431447] page_type: 0xffffffff()
[  285.431934] raw: 0100000000000200 ffff88810094a8c0 dead000000000122 0000000000000000
[  285.432757] raw: 0000000000000000 00000000800c000c 00000001ffffffff 0000000000000000
[  285.433562] page dumped because: kasan: bad access detected
[  285.434144]
[  285.434320] Memory state around the buggy address:
[  285.434828]  ffff8880bad31180: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[  285.435580]  ffff8880bad31200: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[  285.436264] >ffff8880bad31280: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
[  285.436777]                                   ^
[  285.437106]  ffff8880bad31300: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
[  285.437616]  ffff8880bad31380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[  285.438126] ==================================================================
[  285.438662] Disabling lock debugging due to kernel taint

Fix this by:
1. Changing sch_plug's .peek handler to qdisc_peek_dequeued(), a
function compatible with non-work-conserving qdiscs
2. Checking the return value of qdisc_dequeue_peeked() in sch_qfq.

Bug: 300131820
Fixes: 462dbc9101 ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost")
Reported-by: valis <sec@valis.email>
Signed-off-by: valis <sec@valis.email>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20230901162237.11525-1-jhs@mojatatu.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit a18349dc8d)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I2be4a7b7eb1448df8281c145ee2ca441bd746c9a
2023-09-25 12:28:14 +00:00
Budimir Markovic
6b6202b762 UPSTREAM: net/sched: sch_hfsc: Ensure inner classes have fsc curve
[ Upstream commit b3d26c5702 ]

HFSC assumes that inner classes have an fsc curve, but it is currently
possible for classes without an fsc curve to become parents. This leads
to bugs including a use-after-free.

Don't allow non-root classes without HFSC_FSC to become parents.

Bug: 299921101
Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Reported-by: Budimir Markovic <markovicbudimir@gmail.com>
Signed-off-by: Budimir Markovic <markovicbudimir@gmail.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20230824084905.422-1-markovicbudimir@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 4cf994d3f4)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I5b44ae6bb340b978372ed9657ba2e23f75b850e5
2023-09-25 11:22:00 +01:00
Jaegeuk Kim
ff86e87c7e FROMGIT: f2fs: split initial and dynamic conditions for extent_cache
Let's allocate the extent_cache tree without dynamic conditions to avoid a
missing condition causing a panic as below.

 # create a file w/ a compressed flag
 # disable the compression
 # panic while updating extent_cache

F2FS-fs (dm-64): Swapfile: last extent is not aligned to section
F2FS-fs (dm-64): Swapfile (3) is not align to section: 1) creat(), 2) ioctl(F2FS_IOC_SET_PIN_FILE), 3) fallocate(2097152 * N)
Adding 124996k swap on ./swap-file.  Priority:0 extents:2 across:17179494468k
==================================================================
BUG: KASAN: null-ptr-deref in instrument_atomic_read_write out/common/include/linux/instrumented.h:101 [inline]
BUG: KASAN: null-ptr-deref in atomic_try_cmpxchg_acquire out/common/include/asm-generic/atomic-instrumented.h:705 [inline]
BUG: KASAN: null-ptr-deref in queued_write_lock out/common/include/asm-generic/qrwlock.h:92 [inline]
BUG: KASAN: null-ptr-deref in __raw_write_lock out/common/include/linux/rwlock_api_smp.h:211 [inline]
BUG: KASAN: null-ptr-deref in _raw_write_lock+0x5a/0x110 out/common/kernel/locking/spinlock.c:295
Write of size 4 at addr 0000000000000030 by task syz-executor154/3327

CPU: 0 PID: 3327 Comm: syz-executor154 Tainted: G           O      5.10.185 #1
Hardware name: emulation qemu-x86/qemu-x86, BIOS 2023.01-21885-gb3cc1cd24d 01/01/2023
Call Trace:
 __dump_stack out/common/lib/dump_stack.c:77 [inline]
 dump_stack_lvl+0x17e/0x1c4 out/common/lib/dump_stack.c:118
 __kasan_report+0x16c/0x260 out/common/mm/kasan/report.c:415
 kasan_report+0x51/0x70 out/common/mm/kasan/report.c:428
 kasan_check_range+0x2f3/0x340 out/common/mm/kasan/generic.c:186
 __kasan_check_write+0x14/0x20 out/common/mm/kasan/shadow.c:37
 instrument_atomic_read_write out/common/include/linux/instrumented.h:101 [inline]
 atomic_try_cmpxchg_acquire out/common/include/asm-generic/atomic-instrumented.h:705 [inline]
 queued_write_lock out/common/include/asm-generic/qrwlock.h:92 [inline]
 __raw_write_lock out/common/include/linux/rwlock_api_smp.h:211 [inline]
 _raw_write_lock+0x5a/0x110 out/common/kernel/locking/spinlock.c:295
 __drop_extent_tree+0xdf/0x2f0 out/common/fs/f2fs/extent_cache.c:1155
 f2fs_drop_extent_tree+0x17/0x30 out/common/fs/f2fs/extent_cache.c:1172
 f2fs_insert_range out/common/fs/f2fs/file.c:1600 [inline]
 f2fs_fallocate+0x19fd/0x1f40 out/common/fs/f2fs/file.c:1764
 vfs_fallocate+0x514/0x9b0 out/common/fs/open.c:310
 ksys_fallocate out/common/fs/open.c:333 [inline]
 __do_sys_fallocate out/common/fs/open.c:341 [inline]
 __se_sys_fallocate out/common/fs/open.c:339 [inline]
 __x64_sys_fallocate+0xb8/0x100 out/common/fs/open.c:339
 do_syscall_64+0x35/0x50 out/common/arch/x86/entry/common.c:46

Bug: 295824459
(cherry picked from commit f803982190f0265fd36cf84670aa6daefc2b0768
 https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-f2fs-devel/20230907210859.3698691-1-jaegeuk@kernel.org/T/#u
Fixes: 72840cccc0 ("f2fs: allocate the extent_cache by default")
Reported-and-tested-by: syzbot+d342e330a37b48c094b7@syzkaller.appspotmail.com
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Change-Id: Ie814c99098487e76b7abdcfdcda342a7e1c1fcf0
2023-09-20 08:50:12 -07:00
Xiaojun Ji
e22810eb27 ANDROID: GKI: Update moto symbols list
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable

1 Added function:

  [A] 'function int __traceiter_android_vh_skip_swapcache(void*, swp_entry_t, bool*)'

1 Added variable:

  [A] 'tracepoint __tracepoint_android_vh_skip_swapcache'

Bug: 300857016
Change-Id: I58877d09416b0277f188445d10c9eef73e664ffb
Signed-off-by: Xiaojun Ji <jixj@motorola.com>
2023-09-18 16:22:06 +08:00
Xiaojun Ji
3718ea1e77 ANDROID: vendor_hook: Add hook to skip swapcache
We want to skip swapcache in some scenarios to reduce
swap cache

Bug: 300857016
Change-Id: I8cbc45733d861be6f56628b40a1ef936cae3b45d
Signed-off-by: Xiaojun Ji <jixj@motorola.com>
2023-09-18 15:46:03 +08:00
Lincheng Yang
909a83a97d ANDROID: GKI: Update symbols to symbol list
Leaf changes summary: 9 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 5 Added functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 4 Added variables

5 Added functions:

  [A] 'function int __traceiter_android_vh___cgroup_throttle_swaprate(void*, int, bool*)'
  [A] 'function int __traceiter_android_vh_add_to_avail_list(void*, swap_info_struct*, bool*)'
  [A] 'function int __traceiter_android_vh_del_from_avail_list(void*, swap_info_struct*, bool*)'
  [A] 'function int __traceiter_android_vh_swap_avail_heads_init(void*, plist_head*)'
  [A] 'function void blkcg_schedule_throttle(request_queue*, bool)'

4 Added variables:

  [A] 'tracepoint __tracepoint_android_vh___cgroup_throttle_swaprate'
  [A] 'tracepoint __tracepoint_android_vh_add_to_avail_list'
  [A] 'tracepoint __tracepoint_android_vh_del_from_avail_list'
  [A] 'tracepoint __tracepoint_android_vh_swap_avail_heads_init'

Bug: 225795494
Change-Id: Iacf77eda13e252c2e9218b0a71cb2884ee3dc5f5
Signed-off-by: Lincheng Yang <lincheng.yang@transsion.com>
2023-09-15 19:58:39 +00:00
Lincheng Yang
6356ed35b9 ANDROID: add vendor hook of add/delete/iterate node for swap_avail_heads
Our Android phones occur Panic as follows:

[77522.303024][ T9734] Call trace:
[77522.303039][ T9734] dump_backtrace.cfi_jt+0x0/0x8
[77522.303052][ T9734] dump_stack_lvl+0xc4/0x140
[77522.303061][ T9734] dump_stack+0x1c/0x2c
[77522.303123][ T9734] mrdump_common_die+0x3a8/0x544 [mrdump]
[77522.303177][ T9734] ipanic_die+0x24/0x38 [mrdump]
[77522.303189][ T9734] die+0x340/0x698
[77522.303199][ T9734] bug_handler+0x48/0x108
[77522.303210][ T9734] brk_handler+0xac/0x1a8
[77522.303221][ T9734] do_debug_exception+0xe0/0x1e0
[77522.303233][ T9734] el1_dbg+0x38/0x54
[77522.303242][ T9734] el1_sync_handler+0x40/0x88
[77522.303255][ T9734] el1_sync+0x8c/0x140
[77522.303264][ T9734] plist_requeue+0xd4/0x110
[77522.303297][ T9734] tran_get_swap_pages+0xc8/0x364 [memfusion]
[77522.303329][ T9734] probe_android_vh_get_swap_page+0x1b4/0x220 [memfusion]
[77522.303342][ T9734] get_swap_page+0x258/0x304
[77522.303352][ T9734] shrink_page_list+0xe00/0x1e0c
[77522.303361][ T9734] shrink_inactive_list+0x2f4/0xac8
[77522.303373][ T9734] shrink_lruvec+0x1a4/0x34c
[77522.303383][ T9734] shrink_node_memcgs+0x84/0x3b0
[77522.303391][ T9734] shrink_node+0x2c4/0x6e4
[77522.303400][ T9734] shrink_zones+0x16c/0x29c
[77522.303410][ T9734] do_try_to_free_pages+0xe4/0x2bc
[77522.303418][ T9734] try_to_free_pages+0x388/0x7b4
[77522.303429][ T9734] __alloc_pages_direct_reclaim+0x88/0x278
[77522.303438][ T9734] __alloc_pages_slowpath+0x464/0xb24
[77522.303447][ T9734] __alloc_pages_nodemask+0x1f4/0x3dc
[77522.303458][ T9734] do_anonymous_page+0x164/0x914
[77522.303466][ T9734] handle_pte_fault+0x15c/0x9f8
[77522.303476][ T9734] ___handle_speculative_fault+0x234/0xe18
[77522.303485][ T9734] __handle_speculative_fault+0x78/0x21c
[77522.303497][ T9734] do_page_fault+0x36c/0x754
[77522.303506][ T9734] do_translation_fault+0x48/0x64
[77522.303514][ T9734] do_mem_abort+0x6c/0x164
[77522.303522][ T9734] el0_da+0x24/0x34
[77522.303531][ T9734] el0_sync_handler+0xc8/0xf0
[77522.303539][ T9734] el0_sync+0x1b4/0x1c0

The analysis shows that when we iterate the swap_avail_heads list, we get
node A, but before we access node A, node A is maybe deleted, and by the time
we actually access node A, it no longer exists, as follows:

            CPU1 thread1                                 CPU2 thread2
plist_for_each_entry_safe()
get si->avail_lists[node] from swap_avail_heads
                                             remove si->avail_lists[node] from swap_avail_heads
plist_requeue(&si->avail_lists[node])
BUG_ON(plist_node_empty(node)); // trigger

Due to when we use vendor hook of get_swap_page, the get_swap_pages() function
is overridden, use our own spin_lock to protect when iterate swap_avail_heads
list, but now use native swap_avail_lock spin_lock protect when the
swap_avail_heads list to add and delete nodes, so there will be concurrent
access.

So add vendor hook of add/delete/iterate node for avail_list, in this way, we
can use our own spin_lock to protect the swap_avail_heads list to add, delete
and iterate node.

Due to enable_swap_info function to call vendor hook of add_to_avail_list,
need first init swap_avail_heads, so also add vendor hook of
swap_avail_heads_init.

Due to the vendor hook of __cgroup_throttle_swaprate need to call
blkcg_schedule_throttle function, so export it also.

Bug: 225795494
Change-Id: I03107cbda6310fa7ae85e41b8cf1fa8225cafe78
Signed-off-by: Lincheng Yang <lincheng.yang@transsion.com>
Suggested-by: Bing Han <bing.han@transsion.com>
2023-09-15 19:58:39 +00:00
Yi Yang
bd34b88730 UPSTREAM: tty: n_gsm: fix the UAF caused by race condition in gsm_cleanup_mux
commit 3c4f8333b5 upstream.

In commit 9b9c8195f3 ("tty: n_gsm: fix UAF in gsm_cleanup_mux"), the UAF
problem is not completely fixed. There is a race condition in
gsm_cleanup_mux(), which caused this UAF.

The UAF problem is triggered by the following race:
task[5046]                     task[5054]
-----------------------        -----------------------
gsm_cleanup_mux();
dlci = gsm->dlci[0];
mutex_lock(&gsm->mutex);
                               gsm_cleanup_mux();
			       dlci = gsm->dlci[0]; //Didn't take the lock
gsm_dlci_release(gsm->dlci[i]);
gsm->dlci[i] = NULL;
mutex_unlock(&gsm->mutex);
                               mutex_lock(&gsm->mutex);
			       dlci->dead = true; //UAF

Fix it by assigning values after mutex_lock().

Bug: 291178675
Link: https://syzkaller.appspot.com/text?tag=CrashReport&x=176188b5a80000
Cc: stable <stable@kernel.org>
Fixes: 9b9c8195f3 ("tty: n_gsm: fix UAF in gsm_cleanup_mux")
Fixes: aa371e96f0 ("tty: n_gsm: fix restart handling via CLD command")
Signed-off-by: Yi Yang <yiyang13@huawei.com>
Co-developed-by: Qiumiao Zhang <zhangqiumiao1@huawei.com>
Signed-off-by: Qiumiao Zhang <zhangqiumiao1@huawei.com>
Link: https://lore.kernel.org/r/20230811031121.153237-1-yiyang13@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 31311a9a4b)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I460a0f21f4121531d7732e09643a451382dfa2da
2023-09-15 09:22:54 +00:00
Thadeu Lima de Souza Cascardo
7ba85ae103 UPSTREAM: netfilter: nf_tables: prevent OOB access in nft_byteorder_eval
commit caf3ef7468 upstream.

When evaluating byteorder expressions with size 2, a union with 32-bit and
16-bit members is used. Since the 16-bit members are aligned to 32-bit,
the array accesses will be out-of-bounds.

It may lead to a stack-out-of-bounds access like the one below:

[   23.095215] ==================================================================
[   23.095625] BUG: KASAN: stack-out-of-bounds in nft_byteorder_eval+0x13c/0x320
[   23.096020] Read of size 2 at addr ffffc90000007948 by task ping/115
[   23.096358]
[   23.096456] CPU: 0 PID: 115 Comm: ping Not tainted 6.4.0+ #413
[   23.096770] Call Trace:
[   23.096910]  <IRQ>
[   23.097030]  dump_stack_lvl+0x60/0xc0
[   23.097218]  print_report+0xcf/0x630
[   23.097388]  ? nft_byteorder_eval+0x13c/0x320
[   23.097577]  ? kasan_addr_to_slab+0xd/0xc0
[   23.097760]  ? nft_byteorder_eval+0x13c/0x320
[   23.097949]  kasan_report+0xc9/0x110
[   23.098106]  ? nft_byteorder_eval+0x13c/0x320
[   23.098298]  __asan_load2+0x83/0xd0
[   23.098453]  nft_byteorder_eval+0x13c/0x320
[   23.098659]  nft_do_chain+0x1c8/0xc50
[   23.098852]  ? __pfx_nft_do_chain+0x10/0x10
[   23.099078]  ? __kasan_check_read+0x11/0x20
[   23.099295]  ? __pfx___lock_acquire+0x10/0x10
[   23.099535]  ? __pfx___lock_acquire+0x10/0x10
[   23.099745]  ? __kasan_check_read+0x11/0x20
[   23.099929]  nft_do_chain_ipv4+0xfe/0x140
[   23.100105]  ? __pfx_nft_do_chain_ipv4+0x10/0x10
[   23.100327]  ? lock_release+0x204/0x400
[   23.100515]  ? nf_hook.constprop.0+0x340/0x550
[   23.100779]  nf_hook_slow+0x6c/0x100
[   23.100977]  ? __pfx_nft_do_chain_ipv4+0x10/0x10
[   23.101223]  nf_hook.constprop.0+0x334/0x550
[   23.101443]  ? __pfx_ip_local_deliver_finish+0x10/0x10
[   23.101677]  ? __pfx_nf_hook.constprop.0+0x10/0x10
[   23.101882]  ? __pfx_ip_rcv_finish+0x10/0x10
[   23.102071]  ? __pfx_ip_local_deliver_finish+0x10/0x10
[   23.102291]  ? rcu_read_lock_held+0x4b/0x70
[   23.102481]  ip_local_deliver+0xbb/0x110
[   23.102665]  ? __pfx_ip_rcv+0x10/0x10
[   23.102839]  ip_rcv+0x199/0x2a0
[   23.102980]  ? __pfx_ip_rcv+0x10/0x10
[   23.103140]  __netif_receive_skb_one_core+0x13e/0x150
[   23.103362]  ? __pfx___netif_receive_skb_one_core+0x10/0x10
[   23.103647]  ? mark_held_locks+0x48/0xa0
[   23.103819]  ? process_backlog+0x36c/0x380
[   23.103999]  __netif_receive_skb+0x23/0xc0
[   23.104179]  process_backlog+0x91/0x380
[   23.104350]  __napi_poll.constprop.0+0x66/0x360
[   23.104589]  ? net_rx_action+0x1cb/0x610
[   23.104811]  net_rx_action+0x33e/0x610
[   23.105024]  ? _raw_spin_unlock+0x23/0x50
[   23.105257]  ? __pfx_net_rx_action+0x10/0x10
[   23.105485]  ? mark_held_locks+0x48/0xa0
[   23.105741]  __do_softirq+0xfa/0x5ab
[   23.105956]  ? __dev_queue_xmit+0x765/0x1c00
[   23.106193]  do_softirq.part.0+0x49/0xc0
[   23.106423]  </IRQ>
[   23.106547]  <TASK>
[   23.106670]  __local_bh_enable_ip+0xf5/0x120
[   23.106903]  __dev_queue_xmit+0x789/0x1c00
[   23.107131]  ? __pfx___dev_queue_xmit+0x10/0x10
[   23.107381]  ? find_held_lock+0x8e/0xb0
[   23.107585]  ? lock_release+0x204/0x400
[   23.107798]  ? neigh_resolve_output+0x185/0x350
[   23.108049]  ? mark_held_locks+0x48/0xa0
[   23.108265]  ? neigh_resolve_output+0x185/0x350
[   23.108514]  neigh_resolve_output+0x246/0x350
[   23.108753]  ? neigh_resolve_output+0x246/0x350
[   23.109003]  ip_finish_output2+0x3c3/0x10b0
[   23.109250]  ? __pfx_ip_finish_output2+0x10/0x10
[   23.109510]  ? __pfx_nf_hook+0x10/0x10
[   23.109732]  __ip_finish_output+0x217/0x390
[   23.109978]  ip_finish_output+0x2f/0x130
[   23.110207]  ip_output+0xc9/0x170
[   23.110404]  ip_push_pending_frames+0x1a0/0x240
[   23.110652]  raw_sendmsg+0x102e/0x19e0
[   23.110871]  ? __pfx_raw_sendmsg+0x10/0x10
[   23.111093]  ? lock_release+0x204/0x400
[   23.111304]  ? __mod_lruvec_page_state+0x148/0x330
[   23.111567]  ? find_held_lock+0x8e/0xb0
[   23.111777]  ? find_held_lock+0x8e/0xb0
[   23.111993]  ? __rcu_read_unlock+0x7c/0x2f0
[   23.112225]  ? aa_sk_perm+0x18a/0x550
[   23.112431]  ? filemap_map_pages+0x4f1/0x900
[   23.112665]  ? __pfx_aa_sk_perm+0x10/0x10
[   23.112880]  ? find_held_lock+0x8e/0xb0
[   23.113098]  inet_sendmsg+0xa0/0xb0
[   23.113297]  ? inet_sendmsg+0xa0/0xb0
[   23.113500]  ? __pfx_inet_sendmsg+0x10/0x10
[   23.113727]  sock_sendmsg+0xf4/0x100
[   23.113924]  ? move_addr_to_kernel.part.0+0x4f/0xa0
[   23.114190]  __sys_sendto+0x1d4/0x290
[   23.114391]  ? __pfx___sys_sendto+0x10/0x10
[   23.114621]  ? __pfx_mark_lock.part.0+0x10/0x10
[   23.114869]  ? lock_release+0x204/0x400
[   23.115076]  ? find_held_lock+0x8e/0xb0
[   23.115287]  ? rcu_is_watching+0x23/0x60
[   23.115503]  ? __rseq_handle_notify_resume+0x6e2/0x860
[   23.115778]  ? __kasan_check_write+0x14/0x30
[   23.116008]  ? blkcg_maybe_throttle_current+0x8d/0x770
[   23.116285]  ? mark_held_locks+0x28/0xa0
[   23.116503]  ? do_syscall_64+0x37/0x90
[   23.116713]  __x64_sys_sendto+0x7f/0xb0
[   23.116924]  do_syscall_64+0x59/0x90
[   23.117123]  ? irqentry_exit_to_user_mode+0x25/0x30
[   23.117387]  ? irqentry_exit+0x77/0xb0
[   23.117593]  ? exc_page_fault+0x92/0x140
[   23.117806]  entry_SYSCALL_64_after_hwframe+0x6e/0xd8
[   23.118081] RIP: 0033:0x7f744aee2bba
[   23.118282] Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 7e c3 0f 1f 44 00 00 41 54 48 83 ec 30 44 89
[   23.119237] RSP: 002b:00007ffd04a7c9f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
[   23.119644] RAX: ffffffffffffffda RBX: 00007ffd04a7e0a0 RCX: 00007f744aee2bba
[   23.120023] RDX: 0000000000000040 RSI: 000056488e9e6300 RDI: 0000000000000003
[   23.120413] RBP: 000056488e9e6300 R08: 00007ffd04a80320 R09: 0000000000000010
[   23.120809] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000040
[   23.121219] R13: 00007ffd04a7dc38 R14: 00007ffd04a7ca00 R15: 00007ffd04a7e0a0
[   23.121617]  </TASK>
[   23.121749]
[   23.121845] The buggy address belongs to the virtual mapping at
[   23.121845]  [ffffc90000000000, ffffc90000009000) created by:
[   23.121845]  irq_init_percpu_irqstack+0x1cf/0x270
[   23.122707]
[   23.122803] The buggy address belongs to the physical page:
[   23.123104] page:0000000072ac19f0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x24a09
[   23.123609] flags: 0xfffffc0001000(reserved|node=0|zone=1|lastcpupid=0x1fffff)
[   23.123998] page_type: 0xffffffff()
[   23.124194] raw: 000fffffc0001000 ffffea0000928248 ffffea0000928248 0000000000000000
[   23.124610] raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000
[   23.125023] page dumped because: kasan: bad access detected
[   23.125326]
[   23.125421] Memory state around the buggy address:
[   23.125682]  ffffc90000007800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[   23.126072]  ffffc90000007880: 00 00 00 00 00 f1 f1 f1 f1 f1 f1 00 00 f2 f2 00
[   23.126455] >ffffc90000007900: 00 00 00 00 00 00 00 00 00 f2 f2 f2 f2 00 00 00
[   23.126840]                                               ^
[   23.127138]  ffffc90000007980: 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 f3 f3
[   23.127522]  ffffc90000007a00: f3 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
[   23.127906] ==================================================================
[   23.128324] Disabling lock debugging due to kernel taint

Using simple s16 pointers for the 16-bit accesses fixes the problem. For
the 32-bit accesses, src and dst can be used directly.

Bug: 291031528
Fixes: 96518518cc ("netfilter: add nftables")
Cc: stable@vger.kernel.org
Reported-by: Tanguy DUBROCA (@SidewayRE) from @Synacktiv working with ZDI
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Reviewed-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 870dcc31c0)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I4a76c2be021867c923684f0034d4564f7797b48b
2023-09-14 12:35:02 +01:00
Pedro Tammela
9f68d2976a UPSTREAM: net/sched: sch_qfq: account for stab overhead in qfq_enqueue
[ Upstream commit 3e337087c3 ]

Lion says:
-------
In the QFQ scheduler a similar issue to CVE-2023-31436
persists.

Consider the following code in net/sched/sch_qfq.c:

static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch,
                struct sk_buff **to_free)
{
     unsigned int len = qdisc_pkt_len(skb), gso_segs;

    // ...

     if (unlikely(cl->agg->lmax < len)) {
         pr_debug("qfq: increasing maxpkt from %u to %u for class %u",
              cl->agg->lmax, len, cl->common.classid);
         err = qfq_change_agg(sch, cl, cl->agg->class_weight, len);
         if (err) {
             cl->qstats.drops++;
             return qdisc_drop(skb, sch, to_free);
         }

    // ...

     }

Similarly to CVE-2023-31436, "lmax" is increased without any bounds
checks according to the packet length "len". Usually this would not
impose a problem because packet sizes are naturally limited.

This is however not the actual packet length, rather the
"qdisc_pkt_len(skb)" which might apply size transformations according to
"struct qdisc_size_table" as created by "qdisc_get_stab()" in
net/sched/sch_api.c if the TCA_STAB option was set when modifying the qdisc.

A user may choose virtually any size using such a table.

As a result the same issue as in CVE-2023-31436 can occur, allowing heap
out-of-bounds read / writes in the kmalloc-8192 cache.
-------

We can create the issue with the following commands:

tc qdisc add dev $DEV root handle 1: stab mtu 2048 tsize 512 mpu 0 \
overhead 999999999 linklayer ethernet qfq
tc class add dev $DEV parent 1: classid 1:1 htb rate 6mbit burst 15k
tc filter add dev $DEV parent 1: matchall classid 1:1
ping -I $DEV 1.1.1.2

This is caused by incorrectly assuming that qdisc_pkt_len() returns a
length within the QFQ_MIN_LMAX < len < QFQ_MAX_LMAX.

Bug: 292249631
Bug: 293987452
Fixes: 462dbc9101 ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost")
Reported-by: Lion <nnamrec@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 8359ee85fd)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I69bec7b092e980fe8e0946c26ed9b5ac7c57bf3d
2023-09-14 09:39:59 +00:00
p-liuqi1
88525fa7d9 ANDROID: GKI update xiaomi symbols list
ABI DIFFERENCES HAVE BEEN DETECTED!

2 Added functions:

  [A] 'function int mmc_set_blocklen(mmc_card*, unsigned int)'
  [A] 'function unsigned long int nr_free_buffer_pages()'

Bug: 299962441
Change-Id: Ic63dc8380ad39ba789efee8e7de63c56db66a085
Signed-off-by: p-liuqi1 <liuqi20328@gmail.com>
2023-09-14 06:23:30 +00:00
Kuniyuki Iwashima
1a6995cf14 UPSTREAM: af_unix: Fix null-ptr-deref in unix_stream_sendpage().
Bing-Jhong Billy Jheng reported null-ptr-deref in unix_stream_sendpage()
with detailed analysis and a nice repro.

unix_stream_sendpage() tries to add data to the last skb in the peer's
recv queue without locking the queue.

If the peer's FD is passed to another socket and the socket's FD is
passed to the peer, there is a loop between them.  If we close both
sockets without receiving FD, the sockets will be cleaned up by garbage
collection.

The garbage collection iterates such sockets and unlinks skb with
FD from the socket's receive queue under the queue's lock.

So, there is a race where unix_stream_sendpage() could access an skb
locklessly that is being released by garbage collection, resulting in
use-after-free.

To avoid the issue, unix_stream_sendpage() must lock the peer's recv
queue.

Note the issue does not exist in 6.5+ thanks to the recent sendpage()
refactoring.

This patch is originally written by Linus Torvalds.

BUG: unable to handle page fault for address: ffff988004dd6870
PF: supervisor read access in kernel mode
PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
PREEMPT SMP PTI
CPU: 4 PID: 297 Comm: garbage_uaf Not tainted 6.1.46 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
RIP: 0010:kmem_cache_alloc_node+0xa2/0x1e0
Code: c0 0f 84 32 01 00 00 41 83 fd ff 74 10 48 8b 00 48 c1 e8 3a 41 39 c5 0f 85 1c 01 00 00 41 8b 44 24 28 49 8b 3c 24 48 8d 4a 40 <49> 8b 1c 06 4c 89 f0 65 48 0f c7 0f 0f 94 c0 84 c0 74 a1 41 8b 44
RSP: 0018:ffffc9000079fac0 EFLAGS: 00000246
RAX: 0000000000000070 RBX: 0000000000000005 RCX: 000000000001a284
RDX: 000000000001a244 RSI: 0000000000400cc0 RDI: 000000000002eee0
RBP: 0000000000400cc0 R08: 0000000000400cc0 R09: 0000000000000003
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888003970f00
R13: 00000000ffffffff R14: ffff988004dd6800 R15: 00000000000000e8
FS:  00007f174d6f3600(0000) GS:ffff88807db00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff988004dd6870 CR3: 00000000092be000 CR4: 00000000007506e0
PKRU: 55555554
Call Trace:
 <TASK>
 ? __die_body.cold+0x1a/0x1f
 ? page_fault_oops+0xa9/0x1e0
 ? fixup_exception+0x1d/0x310
 ? exc_page_fault+0xa8/0x150
 ? asm_exc_page_fault+0x22/0x30
 ? kmem_cache_alloc_node+0xa2/0x1e0
 ? __alloc_skb+0x16c/0x1e0
 __alloc_skb+0x16c/0x1e0
 alloc_skb_with_frags+0x48/0x1e0
 sock_alloc_send_pskb+0x234/0x270
 unix_stream_sendmsg+0x1f5/0x690
 sock_sendmsg+0x5d/0x60
 ____sys_sendmsg+0x210/0x260
 ___sys_sendmsg+0x83/0xd0
 ? kmem_cache_alloc+0xc6/0x1c0
 ? avc_disable+0x20/0x20
 ? percpu_counter_add_batch+0x53/0xc0
 ? alloc_empty_file+0x5d/0xb0
 ? alloc_file+0x91/0x170
 ? alloc_file_pseudo+0x94/0x100
 ? __fget_light+0x9f/0x120
 __sys_sendmsg+0x54/0xa0
 do_syscall_64+0x3b/0x90
 entry_SYSCALL_64_after_hwframe+0x69/0xd3
RIP: 0033:0x7f174d639a7d
Code: 28 89 54 24 1c 48 89 74 24 10 89 7c 24 08 e8 8a c1 f4 ff 8b 54 24 1c 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 44 24 08 e8 de c1 f4 ff 48
RSP: 002b:00007ffcb563ea50 EFLAGS: 00000293 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f174d639a7d
RDX: 0000000000000000 RSI: 00007ffcb563eab0 RDI: 0000000000000007
RBP: 00007ffcb563eb10 R08: 0000000000000000 R09: 00000000ffffffff
R10: 00000000004040a0 R11: 0000000000000293 R12: 00007ffcb563ec28
R13: 0000000000401398 R14: 0000000000403e00 R15: 00007f174d72c000
 </TASK>

Bug: 299922588
Fixes: 869e7c6248 ("net: af_unix: implement stream sendpage support")
Reported-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Reviewed-by: Bing-Jhong Billy Jheng <billy@starlabs.sg>
Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 790c2f9d15)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ied4a40e6ae0e594ef84f36287bc6194602935585
2023-09-12 15:45:51 +01:00
Johan Hovold
37d958fa88 UPSTREAM: USB: dwc3: fix use-after-free on core driver unbind
Some dwc3 glue drivers are currently accessing the driver data of the
child core device directly, which is clearly a bad idea as the child may
not have probed yet or may have been unbound from its driver.

As a workaround until the glue drivers have been fixed, clear the driver
data pointer before allowing the glue parent device to runtime suspend
to prevent its driver from accessing data that has been freed during
unbind.

Bug: 254441685
Fixes: 6dd2565989 ("usb: dwc3: add imx8mp dwc3 glue layer driver")
Fixes: 6895ea55c3 ("usb: dwc3: qcom: Configure wakeup interrupts during suspend")
Cc: stable@vger.kernel.org      # 5.12
Cc: Li Jun <jun.li@nxp.com>
Cc: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
Cc: Krishna Kurapati <quic_kriskura@quicinc.com>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Message-ID: <20230607100540.31045-3-johan+linaro@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit e3dbb65757)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I9c546e159867e0a9271c56d8340daa1506436855
2023-09-08 12:39:57 +01:00
Mathias Nyman
6388400ba5 UPSTREAM: xhci: Fix incorrect tracking of free space on transfer rings
This incorrect tracking caused unnecessary ring expansion in some
usecases which over days of use consume a lot of memory.

xhci driver tries to keep track of free transfer blocks (TRBs) on the
ring buffer, but failed to add back some cancelled transfers that were
turned into no-op operations instead of just moving past them.

This can happen if there are several queued pending transfers which
then are cancelled in reverse order.

Solve this by counting the numer of steps we move the dequeue pointer
once we complete a transfer, and add it to the number of free trbs
instead of just adding the trb number of the current transfer.
This way we ensure we count the no-op trbs on the way as well.

Bug: 254441685
Fixes: 55f6153d8c ("xhci: remove extra loop in interrupt context")
Cc: stable@vger.kernel.org
Reported-by: Miller Hunter <MillerH@hearthnhome.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217242
Tested-by: Miller Hunter <MillerH@hearthnhome.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20230515134059.161110-3-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit fe82f16aaf)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Iba6c2cfad83029fcd567b5064f8ce80ccda0a701
2023-09-08 12:39:57 +01:00
Marco Elver
bc78acae08 UPSTREAM: kfence: avoid passing -g for test
Nathan reported that when building with GNU as and a version of clang that
defaults to DWARF5:

  $ make -skj"$(nproc)" ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- \
			LLVM=1 LLVM_IAS=0 O=build \
			mrproper allmodconfig mm/kfence/kfence_test.o
  /tmp/kfence_test-08a0a0.s: Assembler messages:
  /tmp/kfence_test-08a0a0.s:14627: Error: non-constant .uleb128 is not supported
  /tmp/kfence_test-08a0a0.s:14628: Error: non-constant .uleb128 is not supported
  /tmp/kfence_test-08a0a0.s:14632: Error: non-constant .uleb128 is not supported
  /tmp/kfence_test-08a0a0.s:14633: Error: non-constant .uleb128 is not supported
  /tmp/kfence_test-08a0a0.s:14639: Error: non-constant .uleb128 is not supported
  ...

This is because `-g` defaults to the compiler debug info default.  If the
assembler does not support some of the directives used, the above errors
occur.  To fix, remove the explicit passing of `-g`.

All the test wants is that stack traces print valid function names, and
debug info is not required for that.  (I currently cannot recall why I
added the explicit `-g`.)

Bug: 254441685
Link: https://lkml.kernel.org/r/20230316224705.709984-1-elver@google.com
Fixes: bc8fbc5f30 ("kfence: add test suite")
Signed-off-by: Marco Elver <elver@google.com>
Reported-by: Nathan Chancellor <nathan@kernel.org>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 2e08ca1802)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I79d57b803087295e1f07087a1bb855a6d6bce108
2023-09-08 12:39:57 +01:00
Suzuki K Poulose
b3bad92280 UPSTREAM: coresight: etm4x: Do not access TRCIDR1 for identification
CoreSight ETM4x architecture clearly provides ways to identify a device
via registers in the "Management" class, TRCDEVARCH and TRCDEVTYPE. These
registers can be accessed without the Trace domain being powered on.
We additionally added TRCIDR1 as fallback in order to cover for any
ETMs that may not have implemented TRCDEVARCH. So far, nobody has
reported hitting a WARNING we placed to catch such systems.

Also, more importantly it is problematic to access TRCIDR1, which is a
"Trace" register via MMIO access, without clearing the OSLK. But we cannot
mess with the OSLK until we know for sure that this is an ETMv4 device.
Thus, this kind of creates a chicken and egg problem unnecessarily for
systems "which are compliant" to the ETMv4 architecture.

Let us remove the TRCIDR1 fall back check and rely only on TRCDEVARCH.

Bug: 254441685
Fixes: 8b94db1eda ("coresight: etm4x: Use TRCDEVARCH for component discovery")
Cc: stable@vger.kernel.org
Reported-by: Steve Clevenger <scclevenger@os.amperecomputing.com>
Link: https://lore.kernel.org/all/143540e5623d4c7393d24833f2b80600d8d745d2.1677881753.git.scclevenger@os.amperecomputing.com/
Cc: Mike Leach <mike.leach@linaro.org>
Cc: James Clark <james.clark@arm.com>
Reviewed-by: Mike Leach <mike.leach@linaro.org>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20230321104530.1547136-1-suzuki.poulose@arm.com
(cherry picked from commit 735e7b30a5)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ic4bdaf1f2669951437ef8e540c8a61b6a96196ab
2023-09-08 12:39:57 +01:00
Xu Yang
b155bf3086 UPSTREAM: usb: typec: tcpm: fix warning when handle discover_identity message
Since both source and sink device can send discover_identity message in
PD3, kernel may dump below warning:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 169 at drivers/usb/typec/tcpm/tcpm.c:1446 tcpm_queue_vdm+0xe0/0xf0
Modules linked in:
CPU: 0 PID: 169 Comm: 1-0050 Not tainted 6.1.1-00038-g6a3c36cf1da2-dirty #567
Hardware name: NXP i.MX8MPlus EVK board (DT)
pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : tcpm_queue_vdm+0xe0/0xf0
lr : tcpm_queue_vdm+0x2c/0xf0
sp : ffff80000c19bcd0
x29: ffff80000c19bcd0 x28: 0000000000000001 x27: ffff0000d11c8ab8
x26: ffff0000d11cc000 x25: 0000000000000000 x24: 00000000ff008081
x23: 0000000000000001 x22: 00000000ff00a081 x21: ffff80000c19bdbc
x20: 0000000000000000 x19: ffff0000d11c8080 x18: ffffffffffffffff
x17: 0000000000000000 x16: 0000000000000000 x15: ffff0000d716f580
x14: 0000000000000001 x13: ffff0000d716f507 x12: 0000000000000001
x11: 0000000000000000 x10: 0000000000000020 x9 : 00000000000ee098
x8 : 00000000ffffffff x7 : 000000000000001c x6 : ffff0000d716f580
x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
x2 : ffff80000c19bdbc x1 : 00000000ff00a081 x0 : 0000000000000004
Call trace:
tcpm_queue_vdm+0xe0/0xf0
tcpm_pd_rx_handler+0x340/0x1ab0
kthread_worker_fn+0xcc/0x18c
kthread+0x10c/0x110
ret_from_fork+0x10/0x20
---[ end trace 0000000000000000 ]---

Below sequences may trigger this warning:

tcpm_send_discover_work(work)
  tcpm_send_vdm(port, USB_SID_PD, CMD_DISCOVER_IDENT, NULL, 0);
   tcpm_queue_vdm(port, header, data, count);
    port->vdm_state = VDM_STATE_READY;

vdm_state_machine_work(work);
			<-- received discover_identity from partner
 vdm_run_state_machine(port);
  port->vdm_state = VDM_STATE_SEND_MESSAGE;
   mod_vdm_delayed_work(port, x);

tcpm_pd_rx_handler(work);
 tcpm_pd_data_request(port, msg);
  tcpm_handle_vdm_request(port, msg->payload, cnt);
   tcpm_queue_vdm(port, response[0], &response[1], rlen - 1);
--> WARN_ON(port->vdm_state > VDM_STATE_DONE);

For this case, the state machine could still send out discover
identity message later if we skip current discover_identity message.
So we should handle the received message firstly and override the pending
discover_identity message without warning in this case. Then, a delayed
send_discover work will send discover_identity message again.

Bug: 254441685
Fixes: e00943e916 ("usb: typec: tcpm: PD3.0 sinks can send Discover Identity even in device mode")
cc: <stable@vger.kernel.org>
Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20230216031515.4151117-1-xu.yang_2@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit abfc4fa28f)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I6989a29a09a10393b97bc5a5d5e3c055bb397e05
2023-09-08 12:39:57 +01:00
Chao Yu
72a7bbb4a3 UPSTREAM: f2fs: fix to update age extent in f2fs_do_zero_range()
We should update age extent in f2fs_do_zero_range() like we
did in f2fs_truncate_data_blocks_range().

Bug: 254441685
Fixes: 71644dff48 ("f2fs: add block_age-based extent cache")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit a84153f939)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I775351141745194b08c5f149be36cd275ab84e4c
2023-09-08 12:39:57 +01:00
Chao Yu
1e1986dd44 UPSTREAM: f2fs: fix to update age extent correctly during truncation
nr_free may be less than len, we should update age extent cache
w/ range [fofs, len] rather than [fofs, nr_free].

Bug: 254441685
Fixes: 71644dff48 ("f2fs: add block_age-based extent cache")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 8c0ed062ce)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I86dccb39f6e844b180046dc8560e3904700fb4e1
2023-09-08 12:39:57 +01:00
Chao Yu
3e9ba88034 BACKPORT: f2fs: fix to do sanity check on extent cache correctly
In do_read_inode(), sanity_check_inode() should be called after
f2fs_init_read_extent_tree(), fix it.

Fixes: 72840cccc0 ("f2fs: allocate the extent_cache by default")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit d48a7b3a72)
[Lee: Removed call to f2fs_handle_error() - not in original hunk]
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I1a8695fc5eda522e010468093ad78ffebd7dada5
2023-09-08 12:39:56 +01:00
Pedro Tammela
e95427763f UPSTREAM: net/sched: sch_qfq: refactor parsing of netlink parameters
[ Upstream commit 25369891fc ]

Two parameters can be transformed into netlink policies and
validated while parsing the netlink message.

Bug: 2675079
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: 3e337087c3 ("net/sched: sch_qfq: account for stab overhead in qfq_enqueue")
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 8e0326cbc4)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ia7e9430b223b9c0149b7be4d9c57735d427c72d5
2023-09-06 15:14:34 +01:00
Chao Yu
216e24b08c BACKPORT: f2fs: don't reset unchangable mount option in f2fs_remount()
syzbot reports a bug as below:

general protection fault, probably for non-canonical address 0xdffffc0000000009: 0000 [#1] PREEMPT SMP KASAN
RIP: 0010:__lock_acquire+0x69/0x2000 kernel/locking/lockdep.c:4942
Call Trace:
 lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5691
 __raw_write_lock include/linux/rwlock_api_smp.h:209 [inline]
 _raw_write_lock+0x2e/0x40 kernel/locking/spinlock.c:300
 __drop_extent_tree+0x3ac/0x660 fs/f2fs/extent_cache.c:1100
 f2fs_drop_extent_tree+0x17/0x30 fs/f2fs/extent_cache.c:1116
 f2fs_insert_range+0x2d5/0x3c0 fs/f2fs/file.c:1664
 f2fs_fallocate+0x4e4/0x6d0 fs/f2fs/file.c:1838
 vfs_fallocate+0x54b/0x6b0 fs/open.c:324
 ksys_fallocate fs/open.c:347 [inline]
 __do_sys_fallocate fs/open.c:355 [inline]
 __se_sys_fallocate fs/open.c:353 [inline]
 __x64_sys_fallocate+0xbd/0x100 fs/open.c:353
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

The root cause is race condition as below:
- since it tries to remount rw filesystem, so that do_remount won't
call sb_prepare_remount_readonly to block fallocate, there may be race
condition in between remount and fallocate.
- in f2fs_remount(), default_options() will reset mount option to default
one, and then update it based on result of parse_options(), so there is
a hole which race condition can happen.

Thread A			Thread B
- f2fs_fill_super
 - parse_options
  - clear_opt(READ_EXTENT_CACHE)

- f2fs_remount
 - default_options
  - set_opt(READ_EXTENT_CACHE)
				- f2fs_fallocate
				 - f2fs_insert_range
				  - f2fs_drop_extent_tree
				   - __drop_extent_tree
				    - __may_extent_tree
				     - test_opt(READ_EXTENT_CACHE) return true
				    - write_lock(&et->lock) access NULL pointer
 - parse_options
  - clear_opt(READ_EXTENT_CACHE)

Bug: 295824459
Cc: <stable@vger.kernel.org>
Reported-by: syzbot+d015b6c2fbb5c383bf08@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/20230522124203.3838360-1-chao@kernel.org
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 458c15dfbc)
Change-Id: I933beab715c85836b98e8b4cb85223000714176f
2023-09-06 09:56:37 +00:00
Amit Pundir
a96eb7c2ca ANDROID: arm64: dts: qcom: sdm845-db845c: Do not point MDSS to the boot splash memory region
MSM display subsystem is not happy with this new reserved
memory-region assigned to it and DB845c is running into hard
crashes on boot.

Bug: 146449535
Fixes: a8b58500cb ("FROMGIT: arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved")
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: Ie5c2cf0cf02e941c0bd1ba653277c89db0afd90a
2023-09-05 21:19:09 +00:00
Lin Ma
ad067abfe1 BACKPORT: net: nfc: Fix use-after-free caused by nfc_llcp_find_local
[ Upstream commit 6709d4b7bc ]

This commit fixes several use-after-free that caused by function
nfc_llcp_find_local(). For example, one UAF can happen when below buggy
time window occurs.

// nfc_genl_llc_get_params   | // nfc_unregister_device
                             |
dev = nfc_get_device(idx);   | device_lock(...)
if (!dev)                    | dev->shutting_down = true;
    return -ENODEV;          | device_unlock(...);
                             |
device_lock(...);            |   // nfc_llcp_unregister_device
                             |   nfc_llcp_find_local()
nfc_llcp_find_local(...);    |
                             |   local_cleanup()
if (!local) {                |
    rc = -ENODEV;            |     // nfc_llcp_local_put
    goto exit;               |     kref_put(.., local_release)
}                            |
                             |       // local_release
                             |       list_del(&local->list)
  // nfc_genl_send_params    |       kfree()
  local->dev->idx !!!UAF!!!  |
                             |

and the crash trace for the one of the discussed UAF like:

BUG: KASAN: slab-use-after-free in nfc_genl_llc_get_params+0x72f/0x780  net/nfc/netlink.c:1045
Read of size 8 at addr ffff888105b0e410 by task 20114

Call Trace:
 <TASK>
 __dump_stack  lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x72/0xa0  lib/dump_stack.c:106
 print_address_description  mm/kasan/report.c:319 [inline]
 print_report+0xcc/0x620  mm/kasan/report.c:430
 kasan_report+0xb2/0xe0  mm/kasan/report.c:536
 nfc_genl_send_params  net/nfc/netlink.c:999 [inline]
 nfc_genl_llc_get_params+0x72f/0x780  net/nfc/netlink.c:1045
 genl_family_rcv_msg_doit.isra.0+0x1ee/0x2e0  net/netlink/genetlink.c:968
 genl_family_rcv_msg  net/netlink/genetlink.c:1048 [inline]
 genl_rcv_msg+0x503/0x7d0  net/netlink/genetlink.c:1065
 netlink_rcv_skb+0x161/0x430  net/netlink/af_netlink.c:2548
 genl_rcv+0x28/0x40  net/netlink/genetlink.c:1076
 netlink_unicast_kernel  net/netlink/af_netlink.c:1339 [inline]
 netlink_unicast+0x644/0x900  net/netlink/af_netlink.c:1365
 netlink_sendmsg+0x934/0xe70  net/netlink/af_netlink.c:1913
 sock_sendmsg_nosec  net/socket.c:724 [inline]
 sock_sendmsg+0x1b6/0x200  net/socket.c:747
 ____sys_sendmsg+0x6e9/0x890  net/socket.c:2501
 ___sys_sendmsg+0x110/0x1b0  net/socket.c:2555
 __sys_sendmsg+0xf7/0x1d0  net/socket.c:2584
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc
RIP: 0033:0x7f34640a2389
RSP: 002b:00007f3463415168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007f34641c1f80 RCX: 00007f34640a2389
RDX: 0000000000000000 RSI: 0000000020000240 RDI: 0000000000000006
RBP: 00007f34640ed493 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ffe38449ecf R14: 00007f3463415300 R15: 0000000000022000
 </TASK>

Allocated by task 20116:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 kasan_set_track+0x25/0x30  mm/kasan/common.c:52
 ____kasan_kmalloc  mm/kasan/common.c:374 [inline]
 __kasan_kmalloc+0x7f/0x90  mm/kasan/common.c:383
 kmalloc  include/linux/slab.h:580 [inline]
 kzalloc  include/linux/slab.h:720 [inline]
 nfc_llcp_register_device+0x49/0xa40  net/nfc/llcp_core.c:1567
 nfc_register_device+0x61/0x260  net/nfc/core.c:1124
 nci_register_device+0x776/0xb20  net/nfc/nci/core.c:1257
 virtual_ncidev_open+0x147/0x230  drivers/nfc/virtual_ncidev.c:148
 misc_open+0x379/0x4a0  drivers/char/misc.c:165
 chrdev_open+0x26c/0x780  fs/char_dev.c:414
 do_dentry_open+0x6c4/0x12a0  fs/open.c:920
 do_open  fs/namei.c:3560 [inline]
 path_openat+0x24fe/0x37e0  fs/namei.c:3715
 do_filp_open+0x1ba/0x410  fs/namei.c:3742
 do_sys_openat2+0x171/0x4c0  fs/open.c:1356
 do_sys_open  fs/open.c:1372 [inline]
 __do_sys_openat  fs/open.c:1388 [inline]
 __se_sys_openat  fs/open.c:1383 [inline]
 __x64_sys_openat+0x143/0x200  fs/open.c:1383
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Freed by task 20115:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 kasan_set_track+0x25/0x30  mm/kasan/common.c:52
 kasan_save_free_info+0x2e/0x50  mm/kasan/generic.c:521
 ____kasan_slab_free  mm/kasan/common.c:236 [inline]
 ____kasan_slab_free  mm/kasan/common.c:200 [inline]
 __kasan_slab_free+0x10a/0x190  mm/kasan/common.c:244
 kasan_slab_free  include/linux/kasan.h:162 [inline]
 slab_free_hook  mm/slub.c:1781 [inline]
 slab_free_freelist_hook  mm/slub.c:1807 [inline]
 slab_free  mm/slub.c:3787 [inline]
 __kmem_cache_free+0x7a/0x190  mm/slub.c:3800
 local_release  net/nfc/llcp_core.c:174 [inline]
 kref_put  include/linux/kref.h:65 [inline]
 nfc_llcp_local_put  net/nfc/llcp_core.c:182 [inline]
 nfc_llcp_local_put  net/nfc/llcp_core.c:177 [inline]
 nfc_llcp_unregister_device+0x206/0x290  net/nfc/llcp_core.c:1620
 nfc_unregister_device+0x160/0x1d0  net/nfc/core.c:1179
 virtual_ncidev_close+0x52/0xa0  drivers/nfc/virtual_ncidev.c:163
 __fput+0x252/0xa20  fs/file_table.c:321
 task_work_run+0x174/0x270  kernel/task_work.c:179
 resume_user_mode_work  include/linux/resume_user_mode.h:49 [inline]
 exit_to_user_mode_loop  kernel/entry/common.c:171 [inline]
 exit_to_user_mode_prepare+0x108/0x110  kernel/entry/common.c:204
 __syscall_exit_to_user_mode_work  kernel/entry/common.c:286 [inline]
 syscall_exit_to_user_mode+0x21/0x50  kernel/entry/common.c:297
 do_syscall_64+0x4c/0x90  arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Last potentially related work creation:
 kasan_save_stack+0x22/0x50  mm/kasan/common.c:45
 __kasan_record_aux_stack+0x95/0xb0  mm/kasan/generic.c:491
 kvfree_call_rcu+0x29/0xa80  kernel/rcu/tree.c:3328
 drop_sysctl_table+0x3be/0x4e0  fs/proc/proc_sysctl.c:1735
 unregister_sysctl_table.part.0+0x9c/0x190  fs/proc/proc_sysctl.c:1773
 unregister_sysctl_table+0x24/0x30  fs/proc/proc_sysctl.c:1753
 neigh_sysctl_unregister+0x5f/0x80  net/core/neighbour.c:3895
 addrconf_notify+0x140/0x17b0  net/ipv6/addrconf.c:3684
 notifier_call_chain+0xbe/0x210  kernel/notifier.c:87
 call_netdevice_notifiers_info+0xb5/0x150  net/core/dev.c:1937
 call_netdevice_notifiers_extack  net/core/dev.c:1975 [inline]
 call_netdevice_notifiers  net/core/dev.c:1989 [inline]
 dev_change_name+0x3c3/0x870  net/core/dev.c:1211
 dev_ifsioc+0x800/0xf70  net/core/dev_ioctl.c:376
 dev_ioctl+0x3d9/0xf80  net/core/dev_ioctl.c:542
 sock_do_ioctl+0x160/0x260  net/socket.c:1213
 sock_ioctl+0x3f9/0x670  net/socket.c:1316
 vfs_ioctl  fs/ioctl.c:51 [inline]
 __do_sys_ioctl  fs/ioctl.c:870 [inline]
 __se_sys_ioctl  fs/ioctl.c:856 [inline]
 __x64_sys_ioctl+0x19e/0x210  fs/ioctl.c:856
 do_syscall_x64  arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90  arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

The buggy address belongs to the object at ffff888105b0e400
 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 16 bytes inside of
 freed 1024-byte region [ffff888105b0e400, ffff888105b0e800)

The buggy address belongs to the physical page:
head:ffffea000416c200 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
flags: 0x200000000010200(slab|head|node=0|zone=2)
raw: 0200000000010200 ffff8881000430c0 ffffea00044c7010 ffffea0004510e10
raw: 0000000000000000 00000000000a000a 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff888105b0e300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff888105b0e380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff888105b0e400: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                         ^
 ffff888105b0e480: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888105b0e500: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb

In summary, this patch solves those use-after-free by

1. Re-implement the nfc_llcp_find_local(). The current version does not
grab the reference when getting the local from the linked list.  For
example, the llcp_sock_bind() gets the reference like below:

// llcp_sock_bind()

    local = nfc_llcp_find_local(dev); // A
    ..... \
           | raceable
    ..... /
    llcp_sock->local = nfc_llcp_local_get(local); // B

There is an apparent race window that one can  drop the reference
and free the local object fetched in (A) before (B) gets the reference.

2. Some callers of the nfc_llcp_find_local() do not grab the reference
at all. For example, the nfc_genl_llc_{{get/set}_params/sdreq} functions.
We add the nfc_llcp_local_put() for them. Moreover, we add the necessary
error handling function to put the reference.

3. Add the nfc_llcp_remove_local() helper. The local object is removed
from the linked list in local_release() when all reference is gone. This
patch removes it when nfc_llcp_unregister_device() is called.

Therefore, every caller of nfc_llcp_find_local() will get a reference
even when the nfc_llcp_unregister_device() is called. This promises no
use-after-free for the local object is ever possible.

Bug: 294167961
Fixes: 52feb444a9 ("NFC: Extend netlink interface for LTO, RW, and MIUX parameters support")
Fixes: c7aa12252f ("NFC: Take a reference on the LLCP local pointer when creating a socket")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 425d9d3a92)
[Lee: Fix merge conflict - patch should render the same resulting diff added]
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I8e7e7101ce0d5c81da9b8febd4ad78dd1affc4a5
2023-09-04 12:44:21 +01:00
wangyongqiang
00c7bec87c ANDROID: ABI: Update oplus symbol list
ashmem: is_ashmem_file
Export is_ashmem_file function which will be used
by the minidump module to get ashmem info.

Bug: 193397560
Change-Id: I5a54fba62dc28b04ae5c93f359709297c39ebbaa
Signed-off-by: wangyongqiang1@oppo.com
2023-09-01 12:27:10 +00:00
Pratyush Brahma
300d1ff660 ANDROID: GKI: Update abi_gki_aarch64_qcom for page_owner symbols
Update abi_gki_aarch64_qcom to include __set_page_owner
and page_owner_inited symbols.

Bug: 296348400
Change-Id: I3dec65fb596764e51897dd0251aada539a34feca
Signed-off-by: Pratyush Brahma <quic_pbrahma@quicinc.com>
2023-08-29 23:10:07 +00:00
Pratyush Brahma
a9c0f62260 ANDROID: mm: Export page_owner_inited and __set_page_owner
Export page_owner_inited and __set_page_owner symbol
for loadable vendor modules.

Bug: 296348400
Change-Id: I220ec1b94326ca3c6cc809d54646c51194645197
Signed-off-by: Pratyush Brahma <quic_pbrahma@quicinc.com>
2023-08-29 23:09:59 +00:00
Enlin Mu
d26e92d681 FROMGIT: pstore/ram: Check start of empty przs during init
After commit 30696378f6 ("pstore/ram: Do not treat empty buffers as
valid"), initialization would assume a prz was valid after seeing that
the buffer_size is zero (regardless of the buffer start position). This
unchecked start value means it could be outside the bounds of the buffer,
leading to future access panics when written to:

 sysdump_panic_event+0x3b4/0x5b8
 atomic_notifier_call_chain+0x54/0x90
 panic+0x1c8/0x42c
 die+0x29c/0x2a8
 die_kernel_fault+0x68/0x78
 __do_kernel_fault+0x1c4/0x1e0
 do_bad_area+0x40/0x100
 do_translation_fault+0x68/0x80
 do_mem_abort+0x68/0xf8
 el1_da+0x1c/0xc0
 __raw_writeb+0x38/0x174
 __memcpy_toio+0x40/0xac
 persistent_ram_update+0x44/0x12c
 persistent_ram_write+0x1a8/0x1b8
 ramoops_pstore_write+0x198/0x1e8
 pstore_console_write+0x94/0xe0
 ...

To avoid this, also check if the prz start is 0 during the initialization
phase. If not, the next prz sanity check case will discover it (start >
size) and zap the buffer back to a sane state.

Bug: 293538531
Fixes: 30696378f6 ("pstore/ram: Do not treat empty buffers as valid")
Cc: Yunlong Xing <yunlong.xing@unisoc.com>
Cc: stable@vger.kernel.org
Change-Id: I6ff3a11b8b21f6f5ab37d8432751e5d33a441d8c
Signed-off-by: Enlin Mu <enlin.mu@unisoc.com>
Link: https://lore.kernel.org/r/20230801060432.1307717-1-yunlong.xing@unisoc.com
[kees: update commit log with backtrace and clarifications]
(cherry picked from commit fe8c3623ab
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore)
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Chunhui Li <chunhui.li@mediatek.com>
(cherry picked from commit cd018c99fa)
2023-08-29 21:43:07 +00:00
Namjae Jeon
966df87a17 UPSTREAM: exfat: check if filename entries exceeds max filename length
[ Upstream commit d42334578e ]

exfat_extract_uni_name copies characters from a given file name entry into
the 'uniname' variable. This variable is actually defined on the stack of
the exfat_readdir() function. According to the definition of
the 'exfat_uni_name' type, the file name should be limited 255 characters
(+ null teminator space), but the exfat_get_uniname_from_ext_entry()
function can write more characters because there is no check if filename
entries exceeds max filename length. This patch add the check not to copy
filename characters when exceeding max filename length.

Bug: 296393077
Cc: stable@vger.kernel.org
Cc: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reported-by: Maxim Suhanov <dfirblog@gmail.com>
Reviewed-by: Sungjong Seo <sj1557.seo@samsung.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit c2fdf827f8)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I57a9ab007a5eac9c3415aa460df324c9044908c0
2023-08-29 16:03:13 +01:00
Maciej Żenczykowski
dcb17f36f3 BACKPORT: FROMGIT: netfilter: nfnetlink_log: always add a timestamp
Compared to all the other work we're already doing to deliver
an skb to userspace this is very cheap - at worse an extra
call to ktime_get_real() - and very useful.

(and indeed it may even be cheaper if we're running from other hooks)

(background: Android occasionally logs packets which
caused wake from sleep/suspend and we'd like to have
timestamps reliably associated with these events)

Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Martin KaFai Lau <kafai@fb.com>
Cc: Florian Westphal <fw@strlen.de>
Signed-off-by: Maciej Żenczykowski <maze@google.com>
(cherry picked from commit 1d85594fd3 https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git main)
Bug: 276360178
Change-Id: I254a8d39cb7a232d47865a04cd6e0279606fa40e
2023-08-25 22:46:59 +00:00
Amit Pundir
a8b58500cb FROMGIT: arm64: dts: qcom: sdm845-db845c: Mark cont splash memory region as reserved
Adding a reserved memory region for the framebuffer memory
(the splash memory region set up by the bootloader).

It fixes a kernel panic (arm-smmu: Unhandled context fault
at this particular memory region) reported on DB845c running
v5.10.y.

Cc: stable@vger.kernel.org # v5.10+
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230726132719.2117369-2-amit.pundir@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

Bug: 146449535
(cherry picked from commit 110e70fccc https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git tags/qcom-arm64-for-6.6)
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: Ib369b94c3bacc694a4ecf70a9bc4b85355d4c32a
2023-08-25 19:13:34 +00:00
Duoming Zhou
8001debfc1 UPSTREAM: media: usb: siano: Fix warning due to null work_func_t function pointer
[ Upstream commit 6f489a966f ]

The previous commit ebad8e731c ("media: usb: siano: Fix use after
free bugs caused by do_submit_urb") adds cancel_work_sync() in
smsusb_stop_streaming(). But smsusb_stop_streaming() may be called,
even if the work_struct surb->wq has not been initialized. As a result,
the warning will occur. One of the processes that could lead to warning
is shown below:

smsusb_probe()
  smsusb_init_device()
    if (!dev->in_ep || !dev->out_ep || align < 0) {
         smsusb_term_device(intf);
           smsusb_stop_streaming()
             cancel_work_sync(&dev->surbs[i].wq);
               __cancel_work_timer()
                 __flush_work()
                   if (WARN_ON(!work->func)) // work->func is null

The log reported by syzbot is shown below:

WARNING: CPU: 0 PID: 897 at kernel/workqueue.c:3066 __flush_work+0x798/0xa80 kernel/workqueue.c:3063
Modules linked in:
CPU: 0 PID: 897 Comm: kworker/0:2 Not tainted 6.2.0-rc1-syzkaller #0
RIP: 0010:__flush_work+0x798/0xa80 kernel/workqueue.c:3066
...
RSP: 0018:ffffc9000464ebf8 EFLAGS: 00010246
RAX: 1ffff11002dbb420 RBX: 0000000000000021 RCX: 1ffffffff204fa4e
RDX: dffffc0000000000 RSI: 0000000000000001 RDI: ffff888016dda0e8
RBP: ffffc9000464ed98 R08: 0000000000000001 R09: ffffffff90253b2f
R10: 0000000000000001 R11: 0000000000000000 R12: ffff888016dda0e8
R13: ffff888016dda0e8 R14: ffff888016dda100 R15: 0000000000000001
FS:  0000000000000000(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffd4331efe8 CR3: 000000000b48e000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 __cancel_work_timer+0x315/0x460 kernel/workqueue.c:3160
 smsusb_stop_streaming drivers/media/usb/siano/smsusb.c:182 [inline]
 smsusb_term_device+0xda/0x2d0 drivers/media/usb/siano/smsusb.c:344
 smsusb_init_device+0x400/0x9ce drivers/media/usb/siano/smsusb.c:419
 smsusb_probe+0xbbd/0xc55 drivers/media/usb/siano/smsusb.c:567
...

This patch adds check before cancel_work_sync(). If surb->wq has not
been initialized, the cancel_work_sync() will not be executed.

Bug: 295075980
Reported-by: syzbot+27b0b464864741b18b99@syzkaller.appspotmail.com
Fixes: ebad8e731c ("media: usb: siano: Fix use after free bugs caused by do_submit_urb")
Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 8abb53c516)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ie2946408cfde466d0138c23093ec6738b7e51161
2023-08-23 16:53:01 +00:00
Greg Kroah-Hartman
f50fa8d8ce Merge 5.10.189 into android12-5.10-lts
Changes in 5.10.189
	init: Provide arch_cpu_finalize_init()
	x86/cpu: Switch to arch_cpu_finalize_init()
	ARM: cpu: Switch to arch_cpu_finalize_init()
	ia64/cpu: Switch to arch_cpu_finalize_init()
	m68k/cpu: Switch to arch_cpu_finalize_init()
	mips/cpu: Switch to arch_cpu_finalize_init()
	sh/cpu: Switch to arch_cpu_finalize_init()
	sparc/cpu: Switch to arch_cpu_finalize_init()
	um/cpu: Switch to arch_cpu_finalize_init()
	init: Remove check_bugs() leftovers
	init: Invoke arch_cpu_finalize_init() earlier
	init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init()
	x86/fpu: Remove cpuinfo argument from init functions
	x86/fpu: Mark init functions __init
	x86/fpu: Move FPU initialization into arch_cpu_finalize_init()
	x86/speculation: Add Gather Data Sampling mitigation
	x86/speculation: Add force option to GDS mitigation
	x86/speculation: Add Kconfig option for GDS
	KVM: Add GDS_NO support to KVM
	x86/xen: Fix secondary processors' FPU initialization
	x86/mm: fix poking_init() for Xen PV guests
	x86/mm: Use mm_alloc() in poking_init()
	mm: Move mm_cachep initialization to mm_init()
	x86/mm: Initialize text poking earlier
	Documentation/x86: Fix backwards on/off logic about YMM support
	x86/cpu: Add VM page flush MSR availablility as a CPUID feature
	x86/cpufeatures: Assign dedicated feature word for CPUID_0x8000001F[EAX]
	tools headers cpufeatures: Sync with the kernel sources
	x86/bugs: Increase the x86 bugs vector size to two u32s
	x86/cpu, kvm: Add support for CPUID_80000021_EAX
	x86/srso: Add a Speculative RAS Overflow mitigation
	x86/srso: Add IBPB_BRTYPE support
	x86/srso: Add SRSO_NO support
	x86/srso: Add IBPB
	x86/srso: Add IBPB on VMEXIT
	x86/srso: Fix return thunks in generated code
	x86/srso: Tie SBPB bit setting to microcode patch detection
	xen/netback: Fix buffer overrun triggered by unusual packet
	x86: fix backwards merge of GDS/SRSO bit
	Linux 5.10.189

Change-Id: Ibaf2cd3f0542d497374bcf135e9faf1791e9af5d
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-08-23 15:12:23 +00:00
Sungwoo Kim
8e682bb18a UPSTREAM: Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb
commit 1728137b33 upstream.

l2cap_sock_release(sk) frees sk. However, sk's children are still alive
and point to the already free'd sk's address.
To fix this, l2cap_sock_release(sk) also cleans sk's children.

==================================================================
BUG: KASAN: use-after-free in l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650
Read of size 8 at addr ffff888104617aa8 by task kworker/u3:0/276

CPU: 0 PID: 276 Comm: kworker/u3:0 Not tainted 6.2.0-00001-gef397bd4d5fb-dirty #59
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Workqueue: hci2 hci_rx_work
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x72/0x95 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:306 [inline]
 print_report+0x175/0x478 mm/kasan/report.c:417
 kasan_report+0xb1/0x130 mm/kasan/report.c:517
 l2cap_sock_ready_cb+0xb7/0x100 net/bluetooth/l2cap_sock.c:1650
 l2cap_chan_ready+0x10e/0x1e0 net/bluetooth/l2cap_core.c:1386
 l2cap_config_req+0x753/0x9f0 net/bluetooth/l2cap_core.c:4480
 l2cap_bredr_sig_cmd net/bluetooth/l2cap_core.c:5739 [inline]
 l2cap_sig_channel net/bluetooth/l2cap_core.c:6509 [inline]
 l2cap_recv_frame+0xe2e/0x43c0 net/bluetooth/l2cap_core.c:7788
 l2cap_recv_acldata+0x6ed/0x7e0 net/bluetooth/l2cap_core.c:8506
 hci_acldata_packet net/bluetooth/hci_core.c:3813 [inline]
 hci_rx_work+0x66e/0xbc0 net/bluetooth/hci_core.c:4048
 process_one_work+0x4ea/0x8e0 kernel/workqueue.c:2289
 worker_thread+0x364/0x8e0 kernel/workqueue.c:2436
 kthread+0x1b9/0x200 kernel/kthread.c:376
 ret_from_fork+0x2c/0x50 arch/x86/entry/entry_64.S:308
 </TASK>

Allocated by task 288:
 kasan_save_stack+0x22/0x50 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 ____kasan_kmalloc mm/kasan/common.c:374 [inline]
 __kasan_kmalloc+0x82/0x90 mm/kasan/common.c:383
 kasan_kmalloc include/linux/kasan.h:211 [inline]
 __do_kmalloc_node mm/slab_common.c:968 [inline]
 __kmalloc+0x5a/0x140 mm/slab_common.c:981
 kmalloc include/linux/slab.h:584 [inline]
 sk_prot_alloc+0x113/0x1f0 net/core/sock.c:2040
 sk_alloc+0x36/0x3c0 net/core/sock.c:2093
 l2cap_sock_alloc.constprop.0+0x39/0x1c0 net/bluetooth/l2cap_sock.c:1852
 l2cap_sock_create+0x10d/0x220 net/bluetooth/l2cap_sock.c:1898
 bt_sock_create+0x183/0x290 net/bluetooth/af_bluetooth.c:132
 __sock_create+0x226/0x380 net/socket.c:1518
 sock_create net/socket.c:1569 [inline]
 __sys_socket_create net/socket.c:1606 [inline]
 __sys_socket_create net/socket.c:1591 [inline]
 __sys_socket+0x112/0x200 net/socket.c:1639
 __do_sys_socket net/socket.c:1652 [inline]
 __se_sys_socket net/socket.c:1650 [inline]
 __x64_sys_socket+0x40/0x50 net/socket.c:1650
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x3f/0x90 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

Freed by task 288:
 kasan_save_stack+0x22/0x50 mm/kasan/common.c:45
 kasan_set_track+0x25/0x30 mm/kasan/common.c:52
 kasan_save_free_info+0x2e/0x50 mm/kasan/generic.c:523
 ____kasan_slab_free mm/kasan/common.c:236 [inline]
 ____kasan_slab_free mm/kasan/common.c:200 [inline]
 __kasan_slab_free+0x10a/0x190 mm/kasan/common.c:244
 kasan_slab_free include/linux/kasan.h:177 [inline]
 slab_free_hook mm/slub.c:1781 [inline]
 slab_free_freelist_hook mm/slub.c:1807 [inline]
 slab_free mm/slub.c:3787 [inline]
 __kmem_cache_free+0x88/0x1f0 mm/slub.c:3800
 sk_prot_free net/core/sock.c:2076 [inline]
 __sk_destruct+0x347/0x430 net/core/sock.c:2168
 sk_destruct+0x9c/0xb0 net/core/sock.c:2183
 __sk_free+0x82/0x220 net/core/sock.c:2194
 sk_free+0x7c/0xa0 net/core/sock.c:2205
 sock_put include/net/sock.h:1991 [inline]
 l2cap_sock_kill+0x256/0x2b0 net/bluetooth/l2cap_sock.c:1257
 l2cap_sock_release+0x1a7/0x220 net/bluetooth/l2cap_sock.c:1428
 __sock_release+0x80/0x150 net/socket.c:650
 sock_close+0x19/0x30 net/socket.c:1368
 __fput+0x17a/0x5c0 fs/file_table.c:320
 task_work_run+0x132/0x1c0 kernel/task_work.c:179
 resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
 exit_to_user_mode_prepare+0x113/0x120 kernel/entry/common.c:203
 __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
 syscall_exit_to_user_mode+0x21/0x50 kernel/entry/common.c:296
 do_syscall_64+0x4c/0x90 arch/x86/entry/common.c:86
 entry_SYSCALL_64_after_hwframe+0x72/0xdc

The buggy address belongs to the object at ffff888104617800
 which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 680 bytes inside of
 1024-byte region [ffff888104617800, ffff888104617c00)

The buggy address belongs to the physical page:
page:00000000dbca6a80 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff888104614000 pfn:0x104614
head:00000000dbca6a80 order:2 compound_mapcount:0 subpages_mapcount:0 compound_pincount:0
flags: 0x200000000010200(slab|head|node=0|zone=2)
raw: 0200000000010200 ffff888100041dc0 ffffea0004212c10 ffffea0004234b10
raw: ffff888104614000 0000000000080002 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff888104617980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888104617a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888104617a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                  ^
 ffff888104617b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff888104617b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Bug: 297025149
Ack: This bug is found by FuzzBT with a modified Syzkaller. Other
contributors are Ruoyu Wu and Hui Peng.
Signed-off-by: Sungwoo Kim <iam@sung-woo.kim>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 29fac18499)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I1f4cf5a928b4825c63488bde0d5589517cc84ef8
2023-08-23 14:41:47 +01:00
Zichun Zheng
14ce45e3c7 ANDROID: ABI: Update oplus symbol list
Leaf changes summary: 4 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 3 Added functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable

3 Added functions:

  [A] 'function void __mod_lruvec_state(lruvec*, node_stat_item, int)'
  [A] 'function void mem_cgroup_update_lru_size(lruvec*, lru_list, int, int)'
  [A] 'function int page_referenced(page*, int, mem_cgroup*, unsigned long int*)'

1 Added variable:

  [A] 'mem_cgroup* root_mem_cgroup'

Bug: 296526618
Change-Id: I519edbc96555a7156863c5f4507cf8335fa5cb96
Signed-off-by: Zichun Zheng <zhengzichun@oppo.com>
2023-08-23 12:33:26 +00:00
Zichun Zheng
98a66e87c1 ANDROID: Export symbols to do reverse mapping within memcg in kernel modules.
Export the symbols below to do reverse mapping within memcg:
  root_mem_cgroup
  page_referenced

Bug: 296526618
Change-Id: Ia9c5876bd97d3f13c92b28af2ca5e74b3f91bd5a
Signed-off-by: Zichun Zheng <zhengzichun@oppo.com>
2023-08-23 12:33:26 +00:00
Zichun Zheng
8af1bc5622 ANDROID: GKI: export symbols to modify lru stats
Export the symbols below to modify LRU state:
  __mod_lruvec_state
  mem_cgroup_update_lru_size

Bug: 296526618
Change-Id: Ie05a2d21fa6ad400877b1c41d732346232452f78
Signed-off-by: Lianjun Huang <huanglianjun@xiaomi.corp-partner.google.com>
(cherry picked from commit I7804b30282b865a004f5a7193537aea688901043)
Signed-off-by: Zichun Zheng <zhengzichun@oppo.com>
2023-08-23 12:33:26 +00:00
Laszlo Ersek
b019a989a2 UPSTREAM: net: tap_open(): set sk_uid from current_fsuid()
commit 5c9241f3ce upstream.

Commit 66b2c338ad initializes the "sk_uid" field in the protocol socket
(struct sock) from the "/dev/tapX" device node's owner UID. Per original
commit 86741ec254 ("net: core: Add a UID field to struct sock.",
2016-11-04), that's wrong: the idea is to cache the UID of the userspace
process that creates the socket. Commit 86741ec254 mentions socket() and
accept(); with "tap", the action that creates the socket is
open("/dev/tapX").

Therefore the device node's owner UID is irrelevant. In most cases,
"/dev/tapX" will be owned by root, so in practice, commit 66b2c338ad has
no observable effect:

- before, "sk_uid" would be zero, due to undefined behavior
  (CVE-2023-1076),

- after, "sk_uid" would be zero, due to "/dev/tapX" being owned by root.

What matters is the (fs)UID of the process performing the open(), so cache
that in "sk_uid".

Bug: 295995961
Cc: Eric Dumazet <edumazet@google.com>
Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Pietro Borrello <borrello@diag.uniroma1.it>
Cc: netdev@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: 66b2c338ad ("tap: tap_open(): correctly initialize socket uid")
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2173435
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 767800fc40)
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ib5f80015e5c0280acf9f35124d3ff267ff0420f0
2023-08-22 16:28:24 +00:00