Merge branch 'android12-5.10' into android12-5.10-lts

Sync up with android12-5.10 for the following commits:

dd139186ef ANDROID: usb: gadget: fix NULL pointer dereference in android_setup
07f65598af ANDROID: GKI: Disable kmem cgroup accounting
309aa7e7a2 FROMLIST: mm, memcg: inline swap-related functions to improve disabled memcg config
3ae8e2f183 BACKPORT: FROMLIST: mm, memcg: inline mem_cgroup_{charge/uncharge} to improve disabled memcg config
f73d029485 FROMLIST: mm, memcg: add mem_cgroup_disabled checks in vmpressure and swap-related functions
669df367a9 UPSTREAM: mm/memcg: bail early from swap accounting if memcg disabled
1f0c32a667 UPSTREAM: procfs/dmabuf: add inode number to /proc/*/fdinfo
0c8c125f57 UPSTREAM: procfs: allow reading fdinfo with PTRACE_MODE_READ
2e0476a465 Revert "FROMLIST: procfs: Allow reading fdinfo with PTRACE_MODE_READ"
5ded961aa2 Revert "FROMLIST: BACKPORT: procfs/dmabuf: Add inode number to /..."
3ee5565017 UPSTREAM: f2fs: initialize page->private when using for our internal use
dba79c3af3 ANDROID: mm: page_pinner: report test_page_isolation_failure
13362ab28e ANDROID: mm: page_pinner: add state of page_pinner
3254948484 ANDROID: mm: page_pinner: add more struct page fields
0445b67bee ANDROID: mm: page_pinner: change timestamp format
71da06728c ANDROID: mm: page_pinner: print_page_pinner refactoring
b83e564914 ANDROID: mm: page_pinner: remove shared_count
849f048050 ANDROID: mm: page_pinner: remove WARN_ON_ONCE
9a453100fc ANDROID: mm: page_pinner: fix typos
d012783a86 ANDROID: mm: page_pinner: reset migration failed page
470cce5085 ANDROID: mm: page_pinner: record every put_page
9f47e5fdda ANDROID: mm: page_pinner: change function names
a8385d61f2 ANDROID: Allow vendor module to reclaim a memcg
f41a95eadc ANDROID: Export memcg functions to allow module to add new files
46bf3b94e7 FROMGIT: dt-bindings: usb: dwc3: Update dwc3 TX fifo properties
b36b813e39 UPSTREAM: dt-bindings: usb: Convert DWC USB3 bindings to DT schema
9a80b7b728 FROMGIT: of: Add stub for of_add_property()
2742be5903 ANDROID: fips140: define fips_enabled to 1 to enable FIPS behavior
e886dd4c33 ANDROID: fips140: unregister existing DRBG algorithms
634445a640 ANDROID: fips140: fix deadlock in unregister_existing_fips140_algos()
0af06624ea ANDROID: fips140: check for errors from initcalls
92de53472e ANDROID: fips140: log already-live algorithms
0a7da21583 ANDROID: Update new mtk gki symbol
98085b5dd8 ANDROID: usb: Add vendor hook for usb suspend and resume
956db89e71 BACKPORT: FROMLIST: dma-heap: Let dma heap use dma_map_attrs to map & unmap iova
749d6e7f2c ANDROID: abi_gki_aarch64_qcom: Add vendor hook for shmem_alloc_page
b05bbe48be ANDROID: abi_gki_aarch64_qcom: Add reclaim_shmem_address_space
d80c70d7a8 ANDROID: android: export kernel function arch_mmap_rnd
25c7eb4932 ANDROID: mm: shmem: Fix build break with allnoconfig
1cdcf76b15 ANDROID: vendor_hooks: add hooks in mem_cgroup subsystem
726468dd4a ANDROID: GKI: add vendor padding variable in struct skb_shared_info
fc79c93657 FROMLIST: scsi: ufs: add quirk to enable host controller without interface configuration
2d5ae6b787 FROMLIST: scsi: ufs: add quirk to handle broken UIC command
38abaebab7 ANDROID: syscall_check: add vendor hook for bpf syscall
a7a3b31d58 ANDROID: syscall_check: add vendor hook for open syscall
a5543c9cd7 ANDROID: syscall_check: add vendor hook for mmap syscall
1f0769279f ANDROID: GKI: Add symbol to symbol list
2cff74e08c ANDROID: vendor_hooks: Add vendor hook to the net
25edba0d4d FROMLIST: scsi: ufs: Fix the SCSI abort handler
c0efdc4a5e ANDROID: android: export kernel function vm_unmapped_area
964220d080 ANDROID: shmem: vendor hook in shmem_alloc_page
bd2ca0ba5b FROMLIST: pstore/ram: Rework logic for detecting ramoops reserved memory region
daeabfe7fa ANDROID: mm: add reclaim_shmem_address_space() for faster reclaims
4c3dddf408 ANDROID: Update the generic ABI symbol list
4c4d8cbdef ANDROID: GKI: refresh ABI XML
01e4a037d8 ANDROID: GKI: turn on TIDY_ABI
edf973fd24 ANDROID: Update symbol list for VIVO
1702d2c8b7 FROMGIT: net: cdc_ncm: switch to eth%d interface naming
f4d6e8324c ANDROID: GKI: add allowed GKI symbol for Exynosauto SoC
444a0b7752 ANDROID: mm: add vendor hook for vmpressure
c799c6644b ANDROID: fips140: adjust some log messages
091338cb39 ANDROID: fips140: add missing static keyword to fips140_init()
70bfd6a7e0 ANDROID: GKI: update allowed list for exynosauto SoC
3e3147b280 UPSTREAM: scsi: ufs: ufshcd: Fix some function doc-rot
2c553e754f UPSTREAM: scsi: ufs: Adjust ufshcd_hold() during sending attribute requests
52ccdf90b9 FROMLIST: lockdep: Remove console_verbose when disable lock debugging
4458494476 ANDROID: ABI: qcom: Add symbols for 80211
5c51579fde ANDROID: fork: Export task_newtask tracepoint
e2a90797e8 ANDROID: Fix kernelci warnings for indentation in smp.c
bac33eaebf ANDROID: irqchip: gic-v3: Move struct gic_chip_data to header
bdac4418bf ANDROID: abi_gki_aarch64_qcom: Add android_vh_ufs_clock_scaling
65c1de0f06 ANDROID: Update symbol list for mtk
d4d02ab9b0 UPSTREAM: swiotlb: manipulate orig_addr when tlb_addr has offset
58aa0f2832 ANDROID: qcom: Add net related symbol
2f9f816445 ANDROID: Update the exynos symbol list
b2a9471239 ANDROID: Update symbol list for mtk
7c9599e204 FROMGIT: usb: dwc3: Create helper function getting MDWIDTH
0a24affb86 ANDROID: vendor_hooks: modify the function name
d686d5ffc6 ANDROID: GKI: Add some symbols to symbol list
bdfb11230b ANDROID: cpuidle: Allow for an early exit from cpuidle_enter_state()
f0b280c395 ANDROID: cpuidle: Update cpuidle_uninstall_idle_handler() to wakeup all online CPUs
14dd90ab37 ANDROID: scsi: ufs: Add hook to influence the UFS clock scaling policy
00aec39e2e FROMGIT: bpf: Support all gso types in bpf_skb_change_proto()

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I6e5be89f3f02c420237a549f4c6a08b5ed434581
This commit is contained in:
Greg Kroah-Hartman 2021-07-13 15:00:11 +02:00
commit b1a6760ddf
63 changed files with 118666 additions and 172877 deletions

View File

@ -1,128 +0,0 @@
synopsys DWC3 CORE
DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties
as described in 'usb/generic.txt'
Required properties:
- compatible: must be "snps,dwc3"
- reg : Address and length of the register set for the device
- interrupts: Interrupts used by the dwc3 controller.
- clock-names: list of clock names. Ideally should be "ref",
"bus_early", "suspend" but may be less or more.
- clocks: list of phandle and clock specifier pairs corresponding to
entries in the clock-names property.
Exception for clocks:
clocks are optional if the parent node (i.e. glue-layer) is compatible to
one of the following:
"cavium,octeon-7130-usb-uctl"
"qcom,dwc3"
"samsung,exynos5250-dwusb3"
"samsung,exynos5433-dwusb3"
"samsung,exynos7-dwusb3"
"sprd,sc9860-dwc3"
"st,stih407-dwc3"
"ti,am437x-dwc3"
"ti,dwc3"
"ti,keystone-dwc3"
"rockchip,rk3399-dwc3"
"xlnx,zynqmp-dwc3"
Optional properties:
- usb-phy : array of phandle for the PHY device. The first element
in the array is expected to be a handle to the USB2/HS PHY and
the second element is expected to be a handle to the USB3/SS PHY
- phys: from the *Generic PHY* bindings
- phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy"
or "usb3-phy".
- resets: set of phandle and reset specifier pairs
- snps,usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM
- snps,usb3_lpm_capable: determines if platform is USB3 LPM capable
- snps,dis-start-transfer-quirk: when set, disable isoc START TRANSFER command
failure SW work-around for DWC_usb31 version 1.70a-ea06
and prior.
- snps,disable_scramble_quirk: true when SW should disable data scrambling.
Only really useful for FPGA builds.
- snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum enabled
- snps,lpm-nyet-threshold: LPM NYET threshold
- snps,u2exit_lfps_quirk: set if we want to enable u2exit lfps quirk
- snps,u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk
- snps,req_p1p2p3_quirk: when set, the core will always request for
P1/P2/P3 transition sequence.
- snps,del_p1p2p3_quirk: when set core will delay P1/P2/P3 until a certain
amount of 8B10B errors occur.
- snps,del_phy_power_chg_quirk: when set core will delay PHY power change
from P0 to P1/P2/P3.
- snps,lfps_filter_quirk: when set core will filter LFPS reception.
- snps,rx_detect_poll_quirk: when set core will disable a 400us delay to start
Polling LFPS after RX.Detect.
- snps,tx_de_emphasis_quirk: when set core will set Tx de-emphasis value.
- snps,tx_de_emphasis: the value driven to the PHY is controlled by the
LTSSM during USB3 Compliance mode.
- snps,dis_u3_susphy_quirk: when set core will disable USB3 suspend phy.
- snps,dis_u2_susphy_quirk: when set core will disable USB2 suspend phy.
- snps,dis_enblslpm_quirk: when set clears the enblslpm in GUSB2PHYCFG,
disabling the suspend signal to the PHY.
- snps,dis-u1-entry-quirk: set if link entering into U1 needs to be disabled.
- snps,dis-u2-entry-quirk: set if link entering into U2 needs to be disabled.
- snps,dis_rxdet_inp3_quirk: when set core will disable receiver detection
in PHY P3 power state.
- snps,dis-u2-freeclk-exists-quirk: when set, clear the u2_freeclk_exists
in GUSB2PHYCFG, specify that USB2 PHY doesn't provide
a free-running PHY clock.
- snps,dis-del-phy-power-chg-quirk: when set core will change PHY power
from P0 to P1/P2/P3 without delay.
- snps,dis-tx-ipgap-linecheck-quirk: when set, disable u2mac linestate check
during HS transmit.
- snps,parkmode-disable-ss-quirk: when set, all SuperSpeed bus instances in
park mode are disabled.
- snps,dis_metastability_quirk: when set, disable metastability workaround.
CAUTION: use only if you are absolutely sure of it.
- snps,dis-split-quirk: when set, change the way URBs are handled by the
driver. Needed to avoid -EPROTO errors with usbhid
on some devices (Hikey 970).
- snps,is-utmi-l1-suspend: true when DWC3 asserts output signal
utmi_l1_suspend_n, false when asserts utmi_sleep_n
- snps,hird-threshold: HIRD threshold
- snps,hsphy_interface: High-Speed PHY interface selection between "utmi" for
UTMI+ and "ulpi" for ULPI when the DWC_USB3_HSPHY_INTERFACE has value 3.
- snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
register for post-silicon frame length adjustment when the
fladj_30mhz_sdbnd signal is invalid or incorrect.
- snps,rx-thr-num-pkt-prd: periodic ESS RX packet threshold count - host mode
only. Set this and rx-max-burst-prd to a valid,
non-zero value 1-16 (DWC_usb31 programming guide
section 1.2.4) to enable periodic ESS RX threshold.
- snps,rx-max-burst-prd: max periodic ESS RX burst size - host mode only. Set
this and rx-thr-num-pkt-prd to a valid, non-zero value
1-16 (DWC_usb31 programming guide section 1.2.4) to
enable periodic ESS RX threshold.
- snps,tx-thr-num-pkt-prd: periodic ESS TX packet threshold count - host mode
only. Set this and tx-max-burst-prd to a valid,
non-zero value 1-16 (DWC_usb31 programming guide
section 1.2.3) to enable periodic ESS TX threshold.
- snps,tx-max-burst-prd: max periodic ESS TX burst size - host mode only. Set
this and tx-thr-num-pkt-prd to a valid, non-zero value
1-16 (DWC_usb31 programming guide section 1.2.3) to
enable periodic ESS TX threshold.
- <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated.
- snps,incr-burst-type-adjustment: Value for INCR burst type of GSBUSCFG0
register, undefined length INCR burst type enable and INCRx type.
When just one value, which means INCRX burst mode enabled. When
more than one value, which means undefined length INCR burst type
enabled. The values can be 1, 4, 8, 16, 32, 64, 128 and 256.
- in addition all properties from usb-xhci.txt from the current directory are
supported as well
This is usually a subnode to DWC3 glue to which it is connected.
dwc3@4a030000 {
compatible = "snps,dwc3";
reg = <0x4a030000 0xcfff>;
interrupts = <0 92 4>
usb-phy = <&usb2_phy>, <&usb3,phy>;
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
};

View File

@ -0,0 +1,323 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/snps,dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Synopsys DesignWare USB3 Controller
maintainers:
- Felipe Balbi <balbi@kernel.org>
description:
This is usually a subnode to DWC3 glue to which it is connected, but can also
be presented as a standalone DT node with an optional vendor-specific
compatible string.
allOf:
- $ref: usb-drd.yaml#
- if:
properties:
dr_mode:
const: peripheral
required:
- dr_mode
then:
$ref: usb.yaml#
else:
$ref: usb-xhci.yaml#
properties:
compatible:
contains:
const: snps,dwc3
interrupts:
minItems: 1
maxItems: 3
clocks:
description:
In general the core supports three types of clocks. bus_early is a
SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
PHY is suspended. suspend clocks a small part of the USB3 core when
SS PHY in P3. But particular cases may differ from that having less
or more clock sources with another names.
clock-names:
contains:
anyOf:
- enum: [bus_early, ref, suspend]
- true
usb-phy:
minItems: 1
items:
- description: USB2/HS PHY
- description: USB3/SS PHY
phys:
minItems: 1
items:
- description: USB2/HS PHY
- description: USB3/SS PHY
phy-names:
minItems: 1
items:
- const: usb2-phy
- const: usb3-phy
resets:
minItems: 1
snps,usb2-lpm-disable:
description: Indicate if we don't want to enable USB2 HW LPM
type: boolean
snps,usb3_lpm_capable:
description: Determines if platform is USB3 LPM capable
type: boolean
snps,dis-start-transfer-quirk:
description:
When set, disable isoc START TRANSFER command failure SW work-around
for DWC_usb31 version 1.70a-ea06 and prior.
type: boolean
snps,disable_scramble_quirk:
description:
True when SW should disable data scrambling. Only really useful for FPGA
builds.
type: boolean
snps,has-lpm-erratum:
description: True when DWC3 was configured with LPM Erratum enabled
type: boolean
snps,lpm-nyet-threshold:
description: LPM NYET threshold
$ref: /schemas/types.yaml#/definitions/uint8
snps,u2exit_lfps_quirk:
description: Set if we want to enable u2exit lfps quirk
type: boolean
snps,u2ss_inp3_quirk:
description: Set if we enable P3 OK for U2/SS Inactive quirk
type: boolean
snps,req_p1p2p3_quirk:
description:
When set, the core will always request for P1/P2/P3 transition sequence.
type: boolean
snps,del_p1p2p3_quirk:
description:
When set core will delay P1/P2/P3 until a certain amount of 8B10B errors
occur.
type: boolean
snps,del_phy_power_chg_quirk:
description: When set core will delay PHY power change from P0 to P1/P2/P3.
type: boolean
snps,lfps_filter_quirk:
description: When set core will filter LFPS reception.
type: boolean
snps,rx_detect_poll_quirk:
description:
when set core will disable a 400us delay to start Polling LFPS after
RX.Detect.
type: boolean
snps,tx_de_emphasis_quirk:
description: When set core will set Tx de-emphasis value
type: boolean
snps,tx_de_emphasis:
description:
The value driven to the PHY is controlled by the LTSSM during USB3
Compliance mode.
$ref: /schemas/types.yaml#/definitions/uint8
snps,dis_u3_susphy_quirk:
description: When set core will disable USB3 suspend phy
type: boolean
snps,dis_u2_susphy_quirk:
description: When set core will disable USB2 suspend phy
type: boolean
snps,dis_enblslpm_quirk:
description:
When set clears the enblslpm in GUSB2PHYCFG, disabling the suspend signal
to the PHY.
type: boolean
snps,dis-u1-entry-quirk:
description: Set if link entering into U1 needs to be disabled
type: boolean
snps,dis-u2-entry-quirk:
description: Set if link entering into U2 needs to be disabled
type: boolean
snps,dis_rxdet_inp3_quirk:
description:
When set core will disable receiver detection in PHY P3 power state.
type: boolean
snps,dis-u2-freeclk-exists-quirk:
description:
When set, clear the u2_freeclk_exists in GUSB2PHYCFG, specify that USB2
PHY doesn't provide a free-running PHY clock.
type: boolean
snps,dis-del-phy-power-chg-quirk:
description:
When set core will change PHY power from P0 to P1/P2/P3 without delay.
type: boolean
snps,dis-tx-ipgap-linecheck-quirk:
description: When set, disable u2mac linestate check during HS transmit
type: boolean
snps,parkmode-disable-ss-quirk:
description:
When set, all SuperSpeed bus instances in park mode are disabled.
type: boolean
snps,dis_metastability_quirk:
description:
When set, disable metastability workaround. CAUTION! Use only if you are
absolutely sure of it.
type: boolean
snps,dis-split-quirk:
description:
When set, change the way URBs are handled by the driver. Needed to
avoid -EPROTO errors with usbhid on some devices (Hikey 970).
type: boolean
snps,is-utmi-l1-suspend:
description:
True when DWC3 asserts output signal utmi_l1_suspend_n, false when
asserts utmi_sleep_n.
type: boolean
snps,hird-threshold:
description: HIRD threshold
$ref: /schemas/types.yaml#/definitions/uint8
snps,hsphy_interface:
description:
High-Speed PHY interface selection between UTMI+ and ULPI when the
DWC_USB3_HSPHY_INTERFACE has value 3.
$ref: /schemas/types.yaml#/definitions/uint8
enum: [utmi, ulpi]
snps,quirk-frame-length-adjustment:
description:
Value for GFLADJ_30MHZ field of GFLADJ register for post-silicon frame
length adjustment when the fladj_30mhz_sdbnd signal is invalid or
incorrect.
$ref: /schemas/types.yaml#/definitions/uint32
snps,rx-thr-num-pkt-prd:
description:
Periodic ESS RX packet threshold count (host mode only). Set this and
snps,rx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
programming guide section 1.2.4) to enable periodic ESS RX threshold.
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 1
maximum: 16
snps,rx-max-burst-prd:
description:
Max periodic ESS RX burst size (host mode only). Set this and
snps,rx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
programming guide section 1.2.4) to enable periodic ESS RX threshold.
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 1
maximum: 16
snps,tx-thr-num-pkt-prd:
description:
Periodic ESS TX packet threshold count (host mode only). Set this and
snps,tx-max-burst-prd to a valid, non-zero value 1-16 (DWC_usb31
programming guide section 1.2.3) to enable periodic ESS TX threshold.
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 1
maximum: 16
snps,tx-max-burst-prd:
description:
Max periodic ESS TX burst size (host mode only). Set this and
snps,tx-thr-num-pkt-prd to a valid, non-zero value 1-16 (DWC_usb31
programming guide section 1.2.3) to enable periodic ESS TX threshold.
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 1
maximum: 16
tx-fifo-resize:
description: Determines if the TX fifos can be dynamically resized depending
on the number of IN endpoints used and if bursting is supported. This
may help improve bandwidth on platforms with higher system latencies, as
increased fifo space allows for the controller to prefetch data into its
internal memory.
type: boolean
tx-fifo-max-num:
description: Specifies the max number of packets the txfifo resizing logic
can account for when higher endpoint bursting is used. (bMaxBurst > 6) The
higher the number, the more fifo space the txfifo resizing logic will
allocate for that endpoint.
$ref: /schemas/types.yaml#/definitions/uint8
minimum: 3
snps,incr-burst-type-adjustment:
description:
Value for INCR burst type of GSBUSCFG0 register, undefined length INCR
burst type enable and INCRx type. A single value means INCRX burst mode
enabled. If more than one value specified, undefined length INCR burst
type will be enabled with burst lengths utilized up to the maximum
of the values passed in this property.
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 8
uniqueItems: true
items:
enum: [1, 4, 8, 16, 32, 64, 128, 256]
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
examples:
- |
usb@4a030000 {
compatible = "snps,dwc3";
reg = <0x4a030000 0xcfff>;
interrupts = <0 92 4>;
usb-phy = <&usb2_phy>, <&usb3_phy>;
snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
};
- |
usb@4a000000 {
compatible = "snps,dwc3";
reg = <0x4a000000 0xcfff>;
interrupts = <0 92 4>;
clocks = <&clk 1>, <&clk 2>, <&clk 3>;
clock-names = "bus_early", "ref", "suspend";
phys = <&usb2_phy>, <&usb3_phy>;
phy-names = "usb2-phy", "usb3-phy";
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
};
...

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,13 +3,16 @@
add_wait_queue
alloc_chrdev_region
__alloc_pages_nodemask
__alloc_percpu
alloc_workqueue
__arch_copy_from_user
__arch_copy_to_user
arm64_const_caps_ready
arm64_use_ng_mappings
__arm_smccc_smc
atomic_notifier_call_chain
atomic_notifier_chain_register
atomic_notifier_chain_unregister
__bitmap_and
blocking_notifier_call_chain
blocking_notifier_chain_register
@ -49,6 +52,8 @@
cpumask_next
cpu_number
__cpu_online_mask
cpu_pm_register_notifier
__cpu_possible_mask
crc32_le
__crypto_memneq
debugfs_create_dir
@ -60,7 +65,9 @@
del_timer
del_timer_sync
destroy_workqueue
_dev_crit
dev_driver_string
_dev_emerg
_dev_err
device_create
device_create_file
@ -172,6 +179,7 @@
free_irq
__free_pages
free_pages
free_percpu
freezing_slow_path
generic_file_llseek
generic_handle_irq
@ -197,6 +205,10 @@
handle_edge_irq
handle_level_irq
handle_nested_irq
hrtimer_cancel
hrtimer_forward
hrtimer_init
hrtimer_start_range_ns
i2c_add_numbered_adapter
i2c_del_driver
i2c_register_driver
@ -224,6 +236,7 @@
irq_set_chip_and_handler_name
irq_set_chip_data
irq_set_irq_wake
irq_to_desc
is_vmalloc_addr
jiffies
kasan_flag_enabled
@ -337,6 +350,7 @@
param_ops_int
param_ops_uint
PDE_DATA
__per_cpu_offset
perf_trace_buf_alloc
perf_trace_run_bpf_submit
phy_power_off
@ -439,11 +453,13 @@
simple_write_to_buffer
single_open
single_release
smp_call_function
snd_pcm_format_width
snd_soc_component_update_bits
snd_soc_component_write
snd_soc_dai_set_fmt
snd_soc_dai_set_tdm_slot
snd_soc_dai_set_tristate
snd_soc_info_volsw
snd_soc_of_get_dai_link_codecs
snd_soc_of_get_dai_name
@ -468,12 +484,14 @@
strncpy
strnlen
strstr
__sw_hweight64
sync_file_create
sync_file_get_fence
synchronize_irq
syscon_regmap_lookup_by_phandle
sysfs_create_file_ns
sysfs_create_group
sysfs_create_groups
sysfs_remove_file_ns
sysfs_remove_group
system_freezing_cnt
@ -581,12 +599,8 @@
kernel_kobj
# required by dss.ko
__alloc_percpu
android_debug_symbol
arch_timer_read_counter
atomic_notifier_call_chain
__cpu_possible_mask
_dev_emerg
dump_backtrace
init_task
input_close_device
@ -594,18 +608,14 @@
input_register_handle
input_register_handler
input_unregister_handle
irq_to_desc
kmsg_dump_get_line
kmsg_dump_rewind
kstat
nr_irqs
__per_cpu_offset
proc_create
register_die_notifier
return_address
rtc_time64_to_tm
smp_call_function
sysfs_create_groups
sys_tz
time64_to_tm
__traceiter_android_vh_ipi_stop
@ -664,6 +674,21 @@
soc_device_register
subsys_system_register
# required by exynos-coresight.ko
__cpuhp_setup_state_cpuslocked
cpu_pm_unregister_notifier
of_prop_next_u32
# required by exynos-debug-test.ko
_ctype
kstrtoll
remove_cpu
smp_call_function_single
strsep
# required by exynos-ehld.ko
sprint_symbol
# required by exynos-pd.ko
of_genpd_add_provider_simple
pm_genpd_add_subdomain
@ -867,6 +892,12 @@
mod_delayed_work_on
put_vaddr_frames
# required by hardlockup-watchdog.ko
__cpuhp_setup_state
cpus_read_lock
cpus_read_unlock
smp_call_on_cpu
# required by i2c-exynosauto.ko
i2c_del_adapter
@ -900,10 +931,6 @@
get_user_pages_fast
get_user_pages_remote
hrtimer_active
hrtimer_cancel
hrtimer_forward
hrtimer_init
hrtimer_start_range_ns
kstrtobool_from_user
ktime_get_raw
kvfree_call_rcu
@ -928,7 +955,6 @@
static_key_slow_inc
strncasecmp
__sw_hweight32
__sw_hweight64
synchronize_rcu
sysfs_streq
system_highpri_wq
@ -970,6 +996,15 @@
drm_panel_remove
# required by pcie-exynos-dw-ep.ko
dw_pcie_ep_init
dw_pcie_read_dbi
dw_pcie_write_dbi
pci_epc_clear_bar
pci_epc_map_addr
pci_epc_mem_alloc_addr
pci_epc_mem_free_addr
pci_epc_set_bar
pci_epc_unmap_addr
# required by pcie-exynos-dw-rc.ko
bitmap_find_free_region
@ -987,6 +1022,7 @@
irq_domain_set_info
irq_domain_update_bus_token
pcie_get_mps
pcie_set_mps
pci_find_bus
pci_generic_config_read
pci_generic_config_write
@ -995,12 +1031,15 @@
pci_msi_create_irq_domain
pci_msi_mask_irq
pci_msi_unmask_irq
pci_num_vf
pci_rescan_bus
pci_restore_state
pci_save_state
pci_store_saved_state
# required by pcs-xpcs.ko
mdiobus_read
mdiobus_write
# required by pinctrl-samsung-core.ko
devm_gpiochip_add_data_with_key
@ -1056,6 +1095,9 @@
kthread_destroy_worker
kthread_mod_delayed_work
kthread_queue_delayed_work
ktime_get_snapshot
posix_clock_register
posix_clock_unregister
# required by reboot-mode.ko
devres_free
@ -1074,7 +1116,6 @@
watchdog_unregister_device
# required by sam-is.ko
atomic_notifier_chain_unregister
get_task_pid
i2c_get_adapter
i2c_new_client_device
@ -1113,10 +1154,13 @@
__bitmap_andnot
consume_skb
dev_close
device_get_phy_mode
device_set_wakeup_capable
device_set_wakeup_enable
__dev_kfree_skb_any
dev_open
dql_completed
dql_reset
eth_mac_addr
ethtool_op_get_link
ethtool_op_get_ts_info
@ -1127,13 +1171,16 @@
jiffies_to_usecs
mdiobus_alloc_size
mdiobus_free
mdiobus_get_phy
__mdiobus_register
mdiobus_unregister
napi_complete_done
napi_disable
napi_gro_receive
__napi_schedule
__napi_schedule_irqoff
napi_schedule_prep
netdev_alert
__netdev_alloc_skb
netdev_err
netdev_info
@ -1149,9 +1196,32 @@
netif_set_real_num_tx_queues
netif_tx_wake_queue
net_ratelimit
of_get_mac_address
of_mdiobus_register
of_phy_deregister_fixed_link
of_phy_is_fixed_link
of_phy_register_fixed_link
phy_attached_info
phy_disconnect
phy_ethtool_get_eee
phy_ethtool_ksettings_get
phy_ethtool_ksettings_set
phy_ethtool_nway_reset
phy_ethtool_set_eee
phy_get_eee_err
phy_init_eee
phylink_connect_phy
phylink_create
phylink_destroy
phylink_of_phy_connect
phylink_set_port_modes
phylink_start
phy_mac_interrupt
phy_mii_ioctl
phy_resume
phy_start_aneg
phy_stop
phy_suspend
pinctrl_pm_select_default_state
pinctrl_pm_select_sleep_state
platform_get_irq_byname
@ -1262,6 +1332,7 @@
snd_pcm_lib_preallocate_free_for_all
snd_pcm_lib_preallocate_pages
snd_pcm_period_elapsed
snd_pcm_release_substream
snd_soc_component_init_regmap
snd_soc_component_read
snd_soc_dapm_add_routes
@ -1274,7 +1345,6 @@
snd_soc_unregister_component
# required by snd-soc-tas6424.ko
_dev_crit
regcache_cache_only
snd_soc_get_volsw
snd_soc_put_volsw
@ -1308,6 +1378,7 @@
ufshcd_config_pwr_mode
ufshcd_dme_get_attr
ufshcd_dme_set_attr
ufshcd_init
ufshcd_link_recovery
ufshcd_pltfrm_init
ufshcd_remove

View File

@ -544,9 +544,11 @@
drm_atomic_normalize_zpos
drm_atomic_private_obj_fini
drm_atomic_private_obj_init
drm_atomic_set_crtc_for_connector
drm_atomic_set_crtc_for_plane
drm_atomic_set_fb_for_plane
drm_atomic_set_mode_for_crtc
drm_atomic_set_mode_prop_for_crtc
drm_atomic_state_alloc
drm_atomic_state_clear
__drm_atomic_state_free

View File

@ -15,18 +15,15 @@
__alloc_disk_node
alloc_etherdev_mqs
alloc_io_pgtable_ops
alloc_netdev_mqs
alloc_pages_exact
__alloc_pages_nodemask
__alloc_percpu
__alloc_skb
alloc_workqueue
all_vm_events
android_debug_symbol
android_rvh_probe_register
anon_inode_getfd
anon_inode_getfile
__arch_clear_user
__arch_copy_from_user
__arch_copy_to_user
arch_timer_read_counter
@ -45,12 +42,10 @@
bio_endio
__bitmap_andnot
__bitmap_clear
__bitmap_equal
bitmap_find_free_region
bitmap_find_next_zero_area_off
bitmap_free
bitmap_from_arr32
__bitmap_or
bitmap_print_to_pagebuf
bitmap_release_region
__bitmap_set
@ -70,6 +65,7 @@
blocking_notifier_call_chain
blocking_notifier_chain_register
blocking_notifier_chain_unregister
bpf_trace_run12
bpf_trace_run1
bpf_trace_run2
bpf_trace_run3
@ -82,7 +78,6 @@
bus_register
bus_set_iommu
bus_unregister
cache_line_size
cancel_delayed_work
cancel_delayed_work_sync
cancel_work_sync
@ -93,6 +88,8 @@
cdev_device_del
cdev_init
__cfi_slowpath
cgroup_taskset_first
cgroup_taskset_next
__check_object_size
check_preempt_curr
__class_create
@ -101,7 +98,6 @@
class_for_each_device
__class_register
class_unregister
clear_page
__ClearPageMovable
clk_bulk_disable
clk_bulk_enable
@ -209,8 +205,6 @@
cpumask_next_and
cpu_number
__cpu_online_mask
cpu_pm_register_notifier
cpu_pm_unregister_notifier
__cpu_possible_mask
__cpu_present_mask
cpu_scale
@ -247,12 +241,12 @@
debugfs_create_file
debugfs_create_regset32
debugfs_create_symlink
debugfs_create_u16
debugfs_create_u32
debugfs_create_u64
debugfs_create_x32
debugfs_lookup
debugfs_remove
debug_locks_off
dec_zone_page_state
default_llseek
deferred_free
@ -266,24 +260,19 @@
_dev_emerg
_dev_err
dev_err_probe
devfreq_add_device
devfreq_add_governor
devfreq_cooling_unregister
devfreq_get_devfreq_by_phandle
devfreq_monitor_resume
devfreq_monitor_start
devfreq_monitor_stop
devfreq_monitor_suspend
devfreq_recommended_opp
devfreq_register_opp_notifier
devfreq_remove_device
devfreq_remove_governor
devfreq_resume_device
devfreq_suspend_device
devfreq_unregister_opp_notifier
devfreq_update_interval
dev_fwnode
dev_get_by_name
dev_get_regmap
dev_get_stats
device_add
@ -365,7 +354,6 @@
devm_phy_create
devm_phy_get
devm_pinctrl_get
devm_pinctrl_put
devm_pinctrl_register_and_init
devm_platform_ioremap_resource
devm_platform_ioremap_resource_byname
@ -393,12 +381,13 @@
devm_thermal_zone_of_sensor_register
devm_watchdog_register_device
_dev_notice
dev_pm_domain_attach_by_name
dev_pm_domain_detach
dev_pm_genpd_add_notifier
dev_pm_genpd_set_performance_state
dev_pm_opp_add
dev_pm_opp_find_freq_ceil
dev_pm_opp_find_freq_ceil_by_volt
dev_pm_opp_find_freq_exact
dev_pm_opp_find_freq_floor
dev_pm_opp_get_freq
dev_pm_opp_get_level
@ -410,9 +399,7 @@
dev_pm_opp_of_remove_table
dev_pm_opp_put
dev_pm_opp_put_opp_table
dev_pm_opp_put_regulators
dev_pm_opp_remove_all_dynamic
dev_pm_opp_set_regulators
dev_pm_qos_update_request
dev_printk
dev_queue_xmit
@ -439,7 +426,6 @@
dma_buf_fd
dma_buf_get
dma_buf_map_attachment
dma_buf_mmap
dmabuf_page_pool_alloc
dmabuf_page_pool_create
dmabuf_page_pool_destroy
@ -452,10 +438,8 @@
dma_fence_context_alloc
dma_fence_default_wait
dma_fence_free
dma_fence_get_status
dma_fence_init
dma_fence_release
dma_fence_remove_callback
dma_fence_signal
dma_fence_signal_locked
dma_fence_signal_timestamp_locked
@ -487,17 +471,14 @@
dma_sync_sg_for_cpu
dma_sync_sg_for_device
dma_sync_single_for_cpu
dma_sync_single_for_device
dma_unmap_page_attrs
dma_unmap_resource
dma_unmap_sg_attrs
do_exit
do_wait_intr_irq
down
downgrade_write
down_interruptible
down_read
down_read_trylock
down_timeout
down_trylock
down_write
@ -630,12 +611,15 @@
em_dev_register_perf_domain
enable_irq
enable_percpu_irq
ether_setup
eth_header
eth_header_cache
eth_header_cache_update
eth_header_parse
eth_type_trans
eth_mac_addr
eth_platform_get_mac_address
ethtool_op_get_link
ethtool_op_get_ts_info
eth_validate_addr
event_triggers_call
extcon_get_edev_by_phandle
extcon_get_state
@ -682,13 +666,11 @@
fwnode_property_present
fwnode_property_read_string
fwnode_property_read_u32_array
gcd
generic_file_llseek
generic_handle_irq
generic_iommu_put_resv_regions
genlmsg_put
genl_register_family
genl_unregister_family
generic_mii_ioctl
genphy_resume
gen_pool_add_owner
gen_pool_alloc_algo_owner
gen_pool_avail
@ -707,7 +689,6 @@
get_cpu_iowait_time_us
get_device
get_each_dmabuf
get_freelist_nr_pages
__get_free_pages
get_governor_parent_kobj
get_kernel_pages
@ -719,7 +700,6 @@
get_task_mm
get_unused_fd_flags
get_user_pages
get_user_pages_fast
get_user_pages_remote
get_vaddr_frames
get_zeroed_page
@ -738,8 +718,8 @@
gpiod_direction_output
gpiod_direction_output_raw
gpiod_get_raw_value
gpiod_get_value_cansleep
gpiod_set_debounce
gpiod_set_raw_value
gpiod_set_value
gpiod_set_value_cansleep
gpiod_to_irq
@ -752,13 +732,7 @@
handle_simple_irq
hashlen_string
have_governor_per_policy
hci_alloc_dev
hci_free_dev
hci_recv_frame
hci_register_dev
hci_unregister_dev
hex_asc
hex_dump_to_buffer
hrtimer_active
hrtimer_cancel
hrtimer_forward
@ -833,7 +807,6 @@
input_set_abs_params
input_set_capability
input_unregister_device
iomem_resource
iommu_alloc_resv_region
iommu_device_register
iommu_device_sysfs_add
@ -878,12 +851,10 @@
irq_set_parent
irq_to_desc
irq_work_queue
irq_work_run
irq_work_sync
is_dma_buf_file
is_vmalloc_addr
iterate_fd
jiffies_64_to_clock_t
jiffies
jiffies_to_msecs
jiffies_to_usecs
@ -900,7 +871,6 @@
__kfifo_alloc
__kfifo_free
__kfifo_in
__kfifo_init
__kfifo_out
__kfifo_to_user
kfree
@ -920,7 +890,6 @@
kmem_cache_free
kobject_add
kobject_create_and_add
kobject_del
kobject_init
kobject_init_and_add
kobject_put
@ -932,7 +901,6 @@
kstrdup_const
kstrndup
kstrtobool
kstrtobool_from_user
kstrtoint
kstrtoint_from_user
kstrtol_from_user
@ -963,7 +931,6 @@
kthread_worker_fn
ktime_get
ktime_get_mono_fast_ns
ktime_get_raw
ktime_get_raw_ts64
ktime_get_real_ts64
ktime_get_ts64
@ -1006,6 +973,10 @@
mbox_free_channel
mbox_request_channel
mbox_send_message
mdiobus_alloc_size
mdiobus_free
__mdiobus_register
mdiobus_unregister
media_create_intf_link
media_create_pad_link
media_device_cleanup
@ -1024,7 +995,6 @@
memcpy
__memcpy_fromio
__memcpy_toio
memdup_user
memmove
memory_read_from_buffer
memparse
@ -1035,6 +1005,12 @@
memstart_addr
memunmap
migrate_swap
mii_check_media
mii_ethtool_get_link_ksettings
mii_ethtool_gset
mii_ethtool_set_link_ksettings
mii_link_ok
mii_nway_restart
mipi_dsi_attach
mipi_dsi_dcs_read
mipi_dsi_dcs_write
@ -1065,13 +1041,11 @@
mmc_remove_host
mmc_request_done
mmc_send_tuning
__mmdrop
mmput
mod_delayed_work_on
mod_timer
mod_timer_pending
module_layout
module_put
__msecs_to_jiffies
msleep
msleep_interruptible
@ -1090,6 +1064,9 @@
nd_tbl
netdev_alloc_frag
__netdev_alloc_skb
netdev_err
netdev_info
netdev_warn
netif_carrier_off
netif_carrier_on
netif_napi_add
@ -1097,24 +1074,18 @@
netif_receive_skb_list
netif_rx
netif_rx_ni
netif_tx_stop_all_queues
netif_tx_wake_queue
__netlink_kernel_create
netlink_kernel_release
netlink_unicast
net_namespace_list
nf_register_net_hooks
nf_unregister_net_hooks
__nla_parse
nla_put
nla_put_nohdr
__nlmsg_put
no_llseek
nonseekable_open
nr_cpu_ids
nsecs_to_jiffies
ns_to_timespec64
n_tty_ioctl_helper
__num_online_cpus
nvmem_cell_get
nvmem_cell_put
@ -1135,7 +1106,6 @@
of_clk_src_simple_get
of_count_phandle_with_args
of_cpu_node_to_id
of_devfreq_cooling_register_power
of_device_get_match_data
of_device_is_available
of_device_is_compatible
@ -1204,7 +1174,6 @@
of_remove_property
of_reserved_mem_device_init_by_idx
of_reserved_mem_lookup
of_root
of_thermal_get_trip_points
of_translate_address
on_each_cpu
@ -1214,17 +1183,14 @@
__page_pinner_migration_failed
panic
panic_notifier_list
param_array_ops
param_get_bool
param_get_charp
param_get_int
param_get_uint
param_get_ulong
param_ops_bool
param_ops_byte
param_ops_charp
param_ops_int
param_ops_string
param_ops_uint
param_set_bool
param_set_charp
@ -1238,20 +1204,28 @@
perf_event_enable
perf_event_release_kernel
perf_event_update_userpage
perf_num_counters
perf_pmu_migrate_context
perf_pmu_register
perf_pmu_unregister
perf_trace_buf_alloc
perf_trace_run_bpf_submit
pfn_valid
phy_connect
phy_disconnect
phy_do_ioctl_running
phy_ethtool_get_link_ksettings
phy_ethtool_nway_reset
phy_ethtool_set_link_ksettings
phy_exit
phy_get
phy_init
phy_power_off
phy_power_on
phy_print_status
phy_put
phy_set_mode_ext
phy_start
phy_stop
pid_task
pinconf_generic_parse_dt_config
pinctrl_dev_get_drvdata
@ -1330,6 +1304,7 @@
proc_mkdir
proc_remove
proc_set_user
pskb_expand_head
put_device
put_disk
__put_page
@ -1372,8 +1347,6 @@
rb_first
rb_insert_color
rb_next
rb_prev
rb_replace_node
rcu_idle_enter
rcu_idle_exit
__rcu_read_lock
@ -1391,12 +1364,9 @@
__register_chrdev
register_chrdev_region
register_die_notifier
register_inetaddr_notifier
register_kprobe
register_module_notifier
register_netdev
register_netdevice
register_netdevice_notifier
register_oom_notifier
register_pernet_subsys
register_pm_notifier
@ -1449,16 +1419,13 @@
regulator_sync_voltage
release_firmware
release_pages
__release_region
remap_pfn_range
remap_vmalloc_range
remove_proc_entry
remove_proc_subtree
remove_wait_queue
request_firmware
request_firmware_nowait
__request_percpu_irq
__request_region
request_threaded_irq
reset_control_assert
reset_control_deassert
@ -1487,9 +1454,6 @@
rtc_tm_to_time64
rtc_update_irq
rtc_valid_tm
rtnl_is_locked
rtnl_lock
rtnl_unlock
runqueues
sched_clock
sched_feat_keys
@ -1507,26 +1471,7 @@
scnprintf
scsi_device_quiesce
__scsi_iterate_devices
sdio_claim_host
sdio_claim_irq
sdio_disable_func
sdio_enable_func
sdio_f0_readb
sdio_f0_writeb
sdio_get_host_pm_caps
sdio_readb
sdio_readl
sdio_readsb
sdio_register_driver
sdio_release_host
sdio_release_irq
sdio_set_block_size
sdio_set_host_pm_flags
sdio_signal_irq
sdio_unregister_driver
sdio_writeb
sdio_writel
sdio_writesb
send_sig
seq_hex_dump
seq_lseek
@ -1566,9 +1511,7 @@
sg_next
__sg_page_iter_next
__sg_page_iter_start
shmem_file_setup
si_mem_available
si_meminfo
simple_attr_open
simple_attr_read
simple_attr_release
@ -1579,17 +1522,15 @@
single_open
single_release
skb_add_rx_frag
skb_clone
skb_copy
skb_dequeue
skb_copy_expand
skb_pull
skb_pull_rcsum
skb_push
skb_put
skb_queue_head
skb_queue_purge
skb_queue_tail
skb_realloc_headroom
skb_trim
smp_call_function
smp_call_function_single
snd_card_add_dev_attr
snd_ctl_boolean_mono_info
@ -1611,9 +1552,13 @@
snd_soc_card_jack_new
snd_soc_component_exit_regmap
snd_soc_component_init_regmap
snd_soc_component_read
snd_soc_component_update_bits
snd_soc_component_write
snd_soc_dai_set_sysclk
snd_soc_dapm_add_routes
snd_soc_dapm_disable_pin
snd_soc_dapm_enable_pin
snd_soc_dapm_get_enum_double
snd_soc_dapm_get_pin_switch
snd_soc_dapm_get_volsw
@ -1623,6 +1568,7 @@
snd_soc_dapm_put_enum_double
snd_soc_dapm_put_pin_switch
snd_soc_dapm_put_volsw
snd_soc_dapm_sync
snd_soc_get_volsw
snd_soc_info_enum_double
snd_soc_info_volsw
@ -1658,7 +1604,6 @@
spmi_register_write
spmi_register_zero_write
sprintf
sprint_symbol_no_offset
srcu_init_notifier_head
srcu_notifier_call_chain
srcu_notifier_chain_register
@ -1669,6 +1614,7 @@
stack_trace_save
static_key_slow_dec
static_key_slow_inc
stop_one_cpu_nowait
strcasecmp
strchr
strcmp
@ -1684,12 +1630,10 @@
strncpy_from_user
strnlen
strnstr
strpbrk
strrchr
strreplace
strscpy
strsep
strspn
strstr
suspend_set_ops
__sw_hweight32
@ -1716,7 +1660,6 @@
system_freezable_power_efficient_wq
system_freezing_cnt
system_highpri_wq
system_long_wq
system_power_efficient_wq
system_state
system_unbound_wq
@ -1733,7 +1676,6 @@
__task_rq_lock
thermal_cooling_device_unregister
thermal_of_cooling_device_register
thermal_zone_device_update
thermal_zone_get_temp
thermal_zone_get_zone_by_name
tick_nohz_get_idle_calls_cpu
@ -1771,6 +1713,7 @@
__traceiter_android_vh_binder_restore_priority
__traceiter_android_vh_binder_set_priority
__traceiter_android_vh_binder_transaction_init
__traceiter_android_vh_cgroup_attach
__traceiter_android_vh_cgroup_set_task
__traceiter_android_vh_commit_creds
__traceiter_android_vh_em_cpu_energy
@ -1778,6 +1721,7 @@
__traceiter_android_vh_finish_update_load_avg_se
__traceiter_android_vh_iommu_alloc_iova
__traceiter_android_vh_iommu_free_iova
__traceiter_android_vh_is_fpsimd_save
__traceiter_android_vh_logbuf
__traceiter_android_vh_override_creds
__traceiter_android_vh_prepare_update_load_avg_se
@ -1800,13 +1744,12 @@
__traceiter_android_vh_set_wake_flags
__traceiter_android_vh_syscall_prctl_finished
__traceiter_cpu_frequency
__traceiter_gpu_mem_total
__traceiter_pelt_se_tp
__traceiter_rwmmio_post_read
__traceiter_rwmmio_read
__traceiter_rwmmio_write
__traceiter_sched_update_nr_running_tp
trace_output_call
__traceiter_task_newtask
__tracepoint_android_rvh_cpu_overutilized
__tracepoint_android_rvh_dequeue_task
__tracepoint_android_rvh_dequeue_task_fair
@ -1828,6 +1771,7 @@
__tracepoint_android_vh_binder_restore_priority
__tracepoint_android_vh_binder_set_priority
__tracepoint_android_vh_binder_transaction_init
__tracepoint_android_vh_cgroup_attach
__tracepoint_android_vh_cgroup_set_task
__tracepoint_android_vh_commit_creds
__tracepoint_android_vh_em_cpu_energy
@ -1835,6 +1779,7 @@
__tracepoint_android_vh_finish_update_load_avg_se
__tracepoint_android_vh_iommu_alloc_iova
__tracepoint_android_vh_iommu_free_iova
__tracepoint_android_vh_is_fpsimd_save
__tracepoint_android_vh_logbuf
__tracepoint_android_vh_override_creds
__tracepoint_android_vh_prepare_update_load_avg_se
@ -1857,7 +1802,6 @@
__tracepoint_android_vh_set_wake_flags
__tracepoint_android_vh_syscall_prctl_finished
__tracepoint_cpu_frequency
__tracepoint_gpu_mem_total
__tracepoint_pelt_se_tp
tracepoint_probe_register
tracepoint_probe_unregister
@ -1866,23 +1810,19 @@
__tracepoint_rwmmio_write
__tracepoint_sched_update_nr_running_tp
tracepoint_srcu
__tracepoint_task_newtask
trace_print_array_seq
trace_print_flags_seq
trace_print_symbols_seq
__trace_puts
trace_raw_output_prep
trace_seq_printf
trace_seq_putc
tracing_off
try_module_get
try_wait_for_completion
tty_driver_flush_buffer
tty_flip_buffer_push
tty_insert_flip_string_fixed_flag
tty_register_ldisc
tty_termios_baud_rate
tty_termios_encode_baud_rate
tty_unregister_ldisc
typec_get_drvdata
typec_mux_get_drvdata
typec_mux_register
@ -1921,30 +1861,25 @@
ufshcd_pltfrm_runtime_idle
ufshcd_pltfrm_runtime_resume
ufshcd_pltfrm_runtime_suspend
ufshcd_pltfrm_shutdown
ufshcd_pltfrm_suspend
ufshcd_remove
ufshcd_shutdown
ufshcd_uic_hibern8_exit
unlock_page
unmap_mapping_range
unpin_user_pages
unregister_blkdev
__unregister_chrdev
unregister_chrdev_region
unregister_die_notifier
unregister_inetaddr_notifier
unregister_kprobe
unregister_module_notifier
unregister_netdev
unregister_netdevice_notifier
unregister_netdevice_queue
unregister_oom_notifier
unregister_pernet_subsys
unregister_pm_notifier
unregister_reboot_notifier
unregister_rpmsg_driver
unregister_shrinker
unregister_syscore_ops
unregister_virtio_device
unregister_virtio_driver
up
@ -1960,6 +1895,7 @@
usb_create_shared_hcd
usb_debug_root
usb_del_gadget_udc
usb_deregister
usb_disabled
usb_ep_alloc_request
usb_ep_autoconfig
@ -1981,8 +1917,36 @@
usb_hcd_is_primary_hcd
usb_hcd_poll_rh_status
usb_interface_id
usbnet_change_mtu
usbnet_disconnect
usbnet_get_drvinfo
usbnet_get_endpoints
usbnet_get_link
usbnet_get_link_ksettings
usbnet_get_msglevel
usbnet_get_stats64
usbnet_link_change
usbnet_nway_reset
usbnet_open
usbnet_probe
usbnet_read_cmd
usbnet_read_cmd_nopm
usbnet_resume
usbnet_set_link_ksettings
usbnet_set_msglevel
usbnet_skb_return
usbnet_start_xmit
usbnet_stop
usbnet_suspend
usbnet_tx_timeout
usbnet_unlink_rx_urbs
usbnet_update_max_qlen
usbnet_write_cmd
usbnet_write_cmd_async
usbnet_write_cmd_nopm
usb_put_function_instance
usb_put_hcd
usb_register_driver
usb_remove_hcd
usb_role_switch_get
usb_role_switch_get_drvdata
@ -2112,7 +2076,6 @@
vmalloc_user
vmap
vm_event_states
vmf_insert_pfn_prot
vm_map_ram
vm_node_stat
vm_unmap_ram
@ -2129,7 +2092,6 @@
wait_for_completion_interruptible
wait_for_completion_interruptible_timeout
wait_for_completion_killable
wait_for_completion_killable_timeout
wait_for_completion_timeout
wait_woken
__wake_up
@ -2143,11 +2105,10 @@
__warn_printk
watchdog_init_timeout
watchdog_set_restart_priority
wireless_send_event
woken_wake_function
work_busy
work_on_cpu
ww_mutex_lock
ww_mutex_lock_interruptible
ww_mutex_unlock
xhci_add_endpoint
xhci_check_bandwidth
@ -2157,19 +2118,175 @@
xhci_get_ep_ctx
xhci_init_driver
xhci_reset_bandwidth
# preserved by --additions-only
alloc_netdev_mqs
all_vm_events
__arch_clear_user
bio_add_pc_page
bio_reset
__bitmap_equal
__bitmap_or
blk_insert_cloned_request
blk_mq_sched_mark_restart_hctx
blk_rq_append_bio
cache_line_size
class_create_file_ns
class_remove_file_ns
clear_page
cpu_pm_register_notifier
cpu_pm_unregister_notifier
debugfs_create_u8
debug_locks_off
devfreq_add_device
devfreq_cooling_unregister
devfreq_register_opp_notifier
devfreq_unregister_opp_notifier
dev_get_by_name
devm_of_pwm_get
devm_pinctrl_put
devm_rc_allocate_device
devm_rc_register_device
dev_pm_opp_find_freq_exact
dev_pm_opp_put_regulators
dev_pm_opp_set_regulators
dma_buf_mmap
dma_fence_get_status
dma_fence_remove_callback
dma_sync_single_for_device
downgrade_write
down_read_trylock
ether_setup
eth_type_trans
fsg_common_create_luns
fsg_common_set_cdev
fsg_common_set_inquiry_string
fsg_common_set_sysfs
fsg_config_from_params
gcd
genlmsg_put
genl_register_family
genl_unregister_family
get_freelist_nr_pages
get_user_pages_fast
gpiod_set_raw_value
hci_alloc_dev
hci_free_dev
hci_recv_frame
hci_register_dev
hci_unregister_dev
hex_dump_to_buffer
iomem_resource
irq_work_run
jiffies_64_to_clock_t
__kfifo_init
kobject_del
kstrtobool_from_user
ktime_get_raw
led_classdev_unregister
memdup_user
__mmdrop
module_put
netif_tx_stop_all_queues
netlink_kernel_release
__nla_parse
nla_put
nla_put_nohdr
n_tty_ioctl_helper
of_devfreq_cooling_register_power
of_root
param_array_ops
param_ops_byte
param_ops_string
perf_num_counters
pin_user_pages_remote
rb_prev
rb_replace_node
register_inetaddr_notifier
register_netdevice
register_netdevice_notifier
__release_region
request_firmware_nowait
__request_region
rtnl_is_locked
rtnl_lock
rtnl_unlock
__sbitmap_queue_get
sdio_claim_host
sdio_claim_irq
sdio_disable_func
sdio_enable_func
sdio_f0_readb
sdio_f0_writeb
sdio_get_host_pm_caps
sdio_readb
sdio_readl
sdio_readsb
sdio_register_driver
sdio_release_host
sdio_release_irq
sdio_set_block_size
sdio_set_host_pm_flags
sdio_unregister_driver
sdio_writeb
sdio_writel
sdio_writesb
send_sig_info
shmem_file_setup
si_meminfo
skb_dequeue
skb_pull_rcsum
skb_queue_head
skb_queue_purge
skb_realloc_headroom
snd_soc_component_test_bits
sprint_symbol_no_offset
stpcpy
strim
strpbrk
strspn
syscore_resume
syscore_suspend
system_long_wq
thermal_zone_device_update
__traceiter_gpu_mem_total
trace_output_call
__tracepoint_android_vh_ufs_update_sdev
__tracepoint_gpu_mem_total
trace_print_flags_seq
try_module_get
tty_driver_flush_buffer
tty_register_ldisc
tty_unregister_ldisc
ufshcd_pltfrm_shutdown
unmap_mapping_range
unpin_user_page
unregister_inetaddr_notifier
unregister_netdevice_notifier
unregister_netdevice_queue
unregister_syscore_ops
usb_add_config
usb_composite_probe
usb_composite_unregister
usb_gadget_connect
usb_gadget_disconnect
usb_gadget_probe_driver
usb_gadget_set_selfpowered
usb_get_function
usb_get_function_instance
usb_put_function
usb_remove_function
v4l2_m2m_buf_copy_metadata
v4l2_m2m_buf_remove_by_buf
v4l2_m2m_register_media_controller
v4l2_m2m_request_queue
v4l2_m2m_unregister_media_controller
vmf_insert_pfn_prot
wait_for_completion_killable_timeout
wireless_send_event
ww_mutex_lock
zlib_deflate
zlib_deflateEnd
zlib_deflateInit2
zlib_deflateReset
zlib_deflate_workspacesize
# preserved by --additions-only
debugfs_create_u8
devm_of_pwm_get
led_classdev_unregister
pin_user_pages_remote
send_sig_info
syscore_resume
syscore_suspend
unpin_user_page
v4l2_m2m_buf_remove_by_buf

View File

@ -24,6 +24,7 @@
alloc_netdev_mqs
__alloc_pages_nodemask
__alloc_percpu
__alloc_percpu_gfp
__alloc_skb
alloc_skb_with_frags
alloc_workqueue
@ -34,6 +35,8 @@
android_debug_symbol
android_rvh_probe_register
anon_inode_getfile
arc4_crypt
arc4_setkey
__arch_clear_user
__arch_copy_from_user
__arch_copy_in_user
@ -263,8 +266,11 @@
cpus_read_unlock
cpu_subsys
cpu_topology
crc32_be
crc32_le
crc8
crc8_populate_msb
crypto_aead_decrypt
crypto_aead_encrypt
crypto_aead_setauthsize
crypto_aead_setkey
@ -285,6 +291,7 @@
crypto_enqueue_request
crypto_has_alg
crypto_init_queue
__crypto_memneq
crypto_register_aead
crypto_register_ahash
crypto_register_alg
@ -292,7 +299,9 @@
crypto_register_rngs
crypto_register_scomp
crypto_register_skcipher
crypto_shash_digest
crypto_shash_final
crypto_shash_finup
crypto_shash_setkey
crypto_shash_update
crypto_skcipher_decrypt
@ -305,6 +314,7 @@
crypto_unregister_rngs
crypto_unregister_scomp
crypto_unregister_skcipher
__crypto_xor
css_next_child
csum_ipv6_magic
csum_partial
@ -335,6 +345,7 @@
debugfs_lookup
debugfs_print_regs32
debugfs_remove
debugfs_rename
dec_zone_page_state
default_llseek
deferred_free
@ -345,6 +356,8 @@
desc_to_gpio
destroy_workqueue
dev_alloc_name
dev_change_net_namespace
dev_close
dev_coredumpv
_dev_crit
__dev_direct_xmit
@ -352,6 +365,7 @@
_dev_emerg
_dev_err
dev_err_probe
dev_fetch_sw_netstats
devfreq_add_device
devfreq_add_governor
devfreq_cooling_unregister
@ -391,6 +405,7 @@
device_property_read_u8_array
device_register
device_remove_file
device_rename
device_set_wakeup_capable
device_show_int
device_store_int
@ -849,6 +864,7 @@
enable_percpu_irq
ether_setup
eth_mac_addr
ethtool_op_get_link
eth_type_trans
eventfd_ctx_fdget
eventfd_ctx_fileget
@ -865,6 +881,7 @@
extcon_register_notifier
extcon_set_state_sync
extcon_unregister_notifier
failure_tracking
fasync_helper
__fdget
fd_install
@ -915,6 +932,7 @@
generic_file_llseek
generic_handle_irq
generic_iommu_put_resv_regions
genlmsg_multicast_allns
genlmsg_put
genl_register_family
genl_unregister_family
@ -937,6 +955,8 @@
get_each_object_track
__get_free_pages
get_governor_parent_kobj
get_net_ns_by_fd
get_net_ns_by_pid
get_option
get_page_owner_handle
get_pfnblock_flags_mask
@ -1013,6 +1033,9 @@
hvc_kick
hvc_poll
hvc_remove
__hw_addr_init
__hw_addr_sync
__hw_addr_unsync
hwrng_register
hwrng_unregister
hwspin_lock_free
@ -1061,6 +1084,7 @@
inc_node_page_state
inc_zone_page_state
in_egroup_p
inet_csk_get_port
inet_proto_csum_replace4
init_dummy_netdev
init_iova_domain
@ -1210,6 +1234,8 @@
kernel_connect
kernel_getsockname
kernel_kobj
kernel_param_lock
kernel_param_unlock
kernel_power_off
kernel_recvmsg
kernel_restart
@ -1219,6 +1245,9 @@
kernfs_put
kern_mount
kern_unmount
key_create_or_update
key_put
keyring_alloc
__kfifo_alloc
__kfifo_free
__kfifo_in
@ -1301,6 +1330,7 @@
kthread_unpark
kthread_worker_fn
ktime_get
ktime_get_coarse_with_offset
ktime_get_mono_fast_ns
ktime_get_real_seconds
ktime_get_real_ts64
@ -1390,6 +1420,7 @@
mmc_send_tuning
mmput
mod_delayed_work_on
__mod_node_page_state
mod_node_page_state
mod_timer
__module_get
@ -1416,8 +1447,11 @@
neigh_lookup
neigh_xmit
__netdev_alloc_skb
netdev_err
netdev_info
netdev_rx_handler_register
netdev_rx_handler_unregister
netdev_set_default_ethtool_ops
netdev_update_features
netif_carrier_off
netif_carrier_on
@ -1426,6 +1460,7 @@
netif_napi_add
__netif_napi_del
netif_receive_skb
netif_receive_skb_core
netif_receive_skb_list
netif_rx
netif_rx_ni
@ -1436,7 +1471,11 @@
netlink_capable
__netlink_kernel_create
netlink_kernel_release
netlink_register_notifier
netlink_unicast
netlink_unregister_notifier
net_ns_type_operations
net_ratelimit
__next_zones_zonelist
nla_find
nla_memcpy
@ -1752,6 +1791,7 @@
power_supply_set_property
power_supply_unregister
power_supply_unreg_notifier
prandom_bytes
prandom_u32
preempt_schedule
preempt_schedule_notrace
@ -1777,6 +1817,7 @@
put_device
put_disk
put_iova_domain
__put_net
__put_page
put_pid
put_sg_io_hdr
@ -1860,6 +1901,7 @@
rcuwait_wake_up
rdev_get_drvdata
reboot_mode
reclaim_shmem_address_space
refcount_dec_and_lock
refcount_dec_not_one
refcount_warn_saturate
@ -1884,6 +1926,7 @@
register_netdevice_notifier
register_netevent_notifier
register_oom_notifier
register_pernet_device
register_pm_notifier
register_reboot_notifier
register_restart_handler
@ -1952,10 +1995,20 @@
return_address
revalidate_disk_size
rfkill_alloc
rfkill_blocked
rfkill_destroy
rfkill_init_sw_state
rfkill_pause_polling
rfkill_register
rfkill_resume_polling
rfkill_set_hw_state
rfkill_unregister
rhashtable_free_and_destroy
rhashtable_insert_slow
rhltable_init
__rht_bucket_nested
rht_bucket_nested
rht_bucket_nested_insert
rndis_deregister
rndis_free_response
rndis_get_next_response
@ -1968,7 +2021,9 @@
rndis_signal_connect
rndis_uninit
root_task_group
round_jiffies
round_jiffies_relative
round_jiffies_up
rpmsg_get_signals
rpmsg_poll
rpmsg_register_device
@ -2122,8 +2177,11 @@
skb_add_rx_frag
skb_append_pagefrags
skb_checksum
skb_checksum_help
skb_clone
skb_clone_sk
skb_coalesce_rx_frag
skb_complete_wifi_ack
skb_copy
skb_copy_bits
skb_copy_datagram_iter
@ -2214,6 +2272,7 @@
soc_device_register
soc_device_unregister
sock_alloc_send_skb
__sock_create
sock_create_kern
sock_gettstamp
sock_init_data
@ -2292,6 +2351,7 @@
strscpy
strsep
strstr
__sw_hweight16
__sw_hweight32
__sw_hweight64
__sw_hweight8
@ -2468,6 +2528,7 @@
__traceiter_android_vh_show_suspend_epoch_val
__traceiter_android_vh_timer_calc_index
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_clock_scaling
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_fill_prdt
__traceiter_android_vh_ufs_prepare_command
@ -2575,11 +2636,13 @@
__tracepoint_android_vh_psi_group
__tracepoint_android_vh_rproc_recovery
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_shmem_alloc_page
__tracepoint_android_vh_show_max_freq
__tracepoint_android_vh_show_resume_epoch_val
__tracepoint_android_vh_show_suspend_epoch_val
__tracepoint_android_vh_timer_calc_index
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_clock_scaling
__tracepoint_android_vh_ufs_compl_command
__tracepoint_android_vh_ufs_fill_prdt
__tracepoint_android_vh_ufs_prepare_command
@ -2700,6 +2763,7 @@
unregister_netdevice_queue
unregister_netevent_notifier
unregister_oom_notifier
unregister_pernet_device
unregister_pm_notifier
unregister_reboot_notifier
unregister_restart_handler
@ -2844,6 +2908,7 @@
vchan_init
vchan_tx_desc_free
vchan_tx_submit
verify_pkcs7_signature
vfree
video_devdata
video_device_alloc
@ -2888,6 +2953,7 @@
wakeup_source_register
wakeup_source_unregister
__warn_printk
wireless_nlevent_flush
wireless_send_event
woken_wake_function
work_busy

View File

@ -41,7 +41,9 @@
available_idle_cpu
bdget_disk
bdput
bio_add_pc_page
bio_endio
bio_reset
bitmap_allocate_region
__bitmap_clear
bitmap_find_next_zero_area_off
@ -51,11 +53,16 @@
bitmap_release_region
__bitmap_set
blk_alloc_queue
blk_bio_list_merge
blk_cleanup_queue
blk_execute_rq
blk_execute_rq_nowait
blk_get_request
blk_mq_debugfs_rq_show
blk_mq_rq_cpu
blk_mq_run_hw_queue
blk_mq_sched_mark_restart_hctx
blk_mq_sched_request_inserted
blk_put_request
blk_queue_flag_clear
blk_queue_flag_set
@ -65,17 +72,19 @@
blk_queue_max_discard_sectors
blk_queue_max_write_zeroes_sectors
blk_queue_physical_block_size
blk_rq_append_bio
blk_rq_map_kern
blk_rq_map_user
blk_rq_map_user_iov
blk_rq_unmap_user
blk_stat_enable_accounting
blk_verify_command
blocking_notifier_call_chain
blocking_notifier_chain_register
blocking_notifier_chain_unregister
bpf_trace_run1
bpf_trace_run10
bpf_trace_run12
bpf_trace_run1
bpf_trace_run2
bpf_trace_run3
bpf_trace_run4
@ -494,6 +503,9 @@
edac_device_free_ctl_info
edac_device_handle_ce_count
edac_device_handle_ue_count
elevator_alloc
elv_register
elv_unregister
enable_irq
enable_percpu_irq
eventfd_ctx_fdget
@ -922,8 +934,8 @@
mempool_free
mempool_free_slab
memremap
memset64
memset
memset64
__memset_io
memstart_addr
memunmap
@ -959,8 +971,8 @@
__next_zones_zonelist
nla_find
nla_put
nla_reserve_64bit
nla_reserve
nla_reserve_64bit
__nla_validate
__nlmsg_put
no_llseek
@ -1399,6 +1411,16 @@
rtc_update_irq
rtc_valid_tm
runqueues
sbitmap_add_wait_queue
sbitmap_any_bit_set
sbitmap_del_wait_queue
sbitmap_init_node
sbitmap_queue_clear
__sbitmap_queue_get
sbitmap_queue_init_node
sbitmap_queue_min_shallow_depth
sbitmap_queue_resize
sbitmap_queue_show
sched_clock
sched_feat_keys
sched_feat_names
@ -1444,6 +1466,8 @@
sdhci_set_power_noreg
sdhci_setup_host
seq_buf_printf
seq_list_next
seq_list_start
seq_lseek
seq_open
seq_printf
@ -1548,6 +1572,7 @@
sscanf
__stack_chk_fail
__stack_chk_guard
stack_trace_save_tsk
static_key_disable
stop_machine
stop_one_cpu_nowait
@ -1629,6 +1654,7 @@
thermal_zone_of_sensor_unregister
tick_nohz_get_sleep_length
time64_to_tm
timer_reduce
topology_set_thermal_pressure
total_swapcache_pages
trace_array_get_by_name
@ -1701,6 +1727,7 @@
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_send_command
__traceiter_android_vh_ufs_update_sdev
__traceiter_binder_transaction_received
__traceiter_cpu_frequency_limits
__traceiter_cpu_idle
@ -1771,6 +1798,7 @@
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_compl_command
__tracepoint_android_vh_ufs_send_command
__tracepoint_android_vh_ufs_update_sdev
__tracepoint_binder_transaction_received
__tracepoint_cpu_frequency_limits
__tracepoint_cpu_idle

View File

@ -60,7 +60,7 @@ CONFIG_CP15_BARRIER_EMULATION=y
CONFIG_SETEND_EMULATION=y
CONFIG_RANDOMIZE_BASE=y
# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure"
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure cgroup.memory=nokmem"
CONFIG_CMDLINE_EXTEND=y
# CONFIG_DMI is not set
CONFIG_PM_WAKELOCKS=y

View File

@ -53,7 +53,7 @@ CONFIG_PARAVIRT=y
CONFIG_NR_CPUS=32
CONFIG_EFI=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure"
CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure cgroup.memory=nokmem"
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_WAKELOCKS_LIMIT=0
# CONFIG_PM_WAKELOCKS_GC is not set

View File

@ -7,6 +7,7 @@ Image.lz4
"
ABI_DEFINITION=android/abi_gki_aarch64.xml
TIDY_ABI=1
KMI_SYMBOL_LIST=android/abi_gki_aarch64
ADDITIONAL_KMI_SYMBOL_LISTS="
android/abi_gki_aarch64_core

View File

@ -52,7 +52,7 @@ const u32 *__initcall_start = &__initcall_start_marker;
const u8 *__text_start = &__fips140_text_start;
const u8 *__rodata_start = &__fips140_rodata_start;
static const char fips140_algorithms[][22] __initconst = {
static const char * const fips140_algorithms[] __initconst = {
"aes",
"gcm(aes)",
@ -73,28 +73,7 @@ static const char fips140_algorithms[][22] __initconst = {
"sha384",
"sha512",
"drbg_nopr_ctr_aes256",
"drbg_nopr_ctr_aes192",
"drbg_nopr_ctr_aes128",
"drbg_nopr_hmac_sha512",
"drbg_nopr_hmac_sha384",
"drbg_nopr_hmac_sha256",
"drbg_nopr_hmac_sha1",
"drbg_nopr_sha512",
"drbg_nopr_sha384",
"drbg_nopr_sha256",
"drbg_nopr_sha1",
"drbg_pr_ctr_aes256",
"drbg_pr_ctr_aes192",
"drbg_pr_ctr_aes128",
"drbg_pr_hmac_sha512",
"drbg_pr_hmac_sha384",
"drbg_pr_hmac_sha256",
"drbg_pr_hmac_sha1",
"drbg_pr_sha512",
"drbg_pr_sha384",
"drbg_pr_sha256",
"drbg_pr_sha1",
"stdrng",
};
static bool __init is_fips140_algo(struct crypto_alg *alg)
@ -116,6 +95,38 @@ static bool __init is_fips140_algo(struct crypto_alg *alg)
static LIST_HEAD(unchecked_fips140_algos);
/*
* Release a list of algorithms which have been removed from crypto_alg_list.
*
* Note that even though the list is a private list, we have to hold
* crypto_alg_sem while iterating through it because crypto_unregister_alg() may
* run concurrently (as we haven't taken a reference to the algorithms on the
* list), and crypto_unregister_alg() will remove the algorithm from whichever
* list it happens to be on, while holding crypto_alg_sem. That's okay, since
* in that case crypto_unregister_alg() will handle the crypto_alg_put().
*/
static void fips140_remove_final(struct list_head *list)
{
struct crypto_alg *alg;
struct crypto_alg *n;
/*
* We need to take crypto_alg_sem to safely traverse the list (see
* comment above), but we have to drop it when doing each
* crypto_alg_put() as that may take crypto_alg_sem again.
*/
down_write(&crypto_alg_sem);
list_for_each_entry_safe(alg, n, list, cra_list) {
list_del_init(&alg->cra_list);
up_write(&crypto_alg_sem);
crypto_alg_put(alg);
down_write(&crypto_alg_sem);
}
up_write(&crypto_alg_sem);
}
static void __init unregister_existing_fips140_algos(void)
{
struct crypto_alg *alg, *tmp;
@ -152,25 +163,17 @@ static void __init unregister_existing_fips140_algos(void)
* transformations. We will swap these out
* later with integrity checked versions.
*/
pr_info("found already-live algorithm '%s' ('%s')\n",
alg->cra_name, alg->cra_driver_name);
list_move(&alg->cra_list,
&unchecked_fips140_algos);
}
}
}
/*
* We haven't taken a reference to the algorithms on the remove_list,
* so technically, we may be competing with a concurrent invocation of
* crypto_unregister_alg() here. Fortunately, crypto_unregister_alg()
* just gives up with a warning if the algo that is being unregistered
* has already disappeared, so this happens to be safe. That does mean
* we need to hold on to the lock, to ensure that the algo is either on
* the list or it is not, and not in some limbo state.
*/
crypto_remove_final(&remove_list);
crypto_remove_final(&spawns);
up_write(&crypto_alg_sem);
fips140_remove_final(&remove_list);
fips140_remove_final(&spawns);
}
static void __init unapply_text_relocations(void *section, int section_size,
@ -250,8 +253,8 @@ static bool __init check_fips140_module_hmac(void)
textsize = &__fips140_text_end - &__fips140_text_start;
rodatasize = &__fips140_rodata_end - &__fips140_rodata_start;
pr_warn("text size : 0x%x\n", textsize);
pr_warn("rodata size: 0x%x\n", rodatasize);
pr_info("text size : 0x%x\n", textsize);
pr_info("rodata size: 0x%x\n", rodatasize);
textcopy = kmalloc(textsize + rodatasize, GFP_KERNEL);
if (!textcopy) {
@ -283,7 +286,7 @@ static bool __init check_fips140_module_hmac(void)
return false;
}
pr_warn("using '%s' for integrity check\n",
pr_info("using '%s' for integrity check\n",
crypto_shash_driver_name(desc->tfm));
err = crypto_shash_setkey(desc->tfm, fips140_integ_hmac_key,
@ -523,11 +526,12 @@ static bool update_fips140_library_routines(void)
* let's disable CFI locally when handling the initcall array, to avoid
* surpises.
*/
int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
static int __init __attribute__((__no_sanitize__("cfi")))
fips140_init(void)
{
const u32 *initcall;
pr_info("Loading FIPS 140 module\n");
pr_info("loading module\n");
unregister_existing_fips140_algos();
@ -536,8 +540,17 @@ int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
initcall < &__initcall_end_marker;
initcall++) {
int (*init)(void) = offset_to_ptr(initcall);
int err = init();
init();
/*
* ENODEV is expected from initcalls that only register
* algorithms that depend on non-present CPU features. Besides
* that, errors aren't expected here.
*/
if (err && err != -ENODEV) {
pr_err("initcall %ps() failed: %d\n", init, err);
goto panic;
}
}
if (!update_live_fips140_algos())
@ -563,12 +576,12 @@ int __init __attribute__((__no_sanitize__("cfi"))) fips140_init(void)
*/
if (!check_fips140_module_hmac()) {
pr_crit("FIPS 140 integrity check failed -- giving up!\n");
pr_crit("integrity check failed -- giving up!\n");
goto panic;
}
pr_info("integrity check passed\n");
pr_info("FIPS 140 integrity check successful\n");
pr_info("FIPS 140 module successfully loaded\n");
pr_info("module successfully loaded\n");
return 0;
panic:

View File

@ -64,6 +64,10 @@
#include <trace/hooks/cpuidle_psci.h>
#include <trace/hooks/fips140.h>
#include <trace/hooks/remoteproc.h>
#include <trace/hooks/shmem_fs.h>
#include <trace/hooks/net.h>
#include <trace/hooks/syscall_check.h>
#include <trace/hooks/usb.h>
/*
* Export tracepoints that act as a bare tracehook (ie: have no trace event
@ -106,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_wait_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
@ -207,6 +212,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sdev);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_clock_scaling);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wake_up_sync);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get);
@ -244,9 +250,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_module_permit_after_init);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_est_update);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_proc_show);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_mm);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_unmapped_area_from_anti_fragment_pool);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_from_fragment_pool);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exclude_reserved_zone);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_unmapped_area_include_reserved_zone);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_include_reserved_zone);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_slowpath);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mem);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_print_slabinfo_header);
@ -310,6 +316,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_track_hash);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmpressure);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_task_comm);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log);
@ -339,3 +346,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_force_compatible_post);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_print_transaction_info);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_setscheduler_uclamp);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_file_open);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_suspend);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_resume);

View File

@ -212,6 +212,9 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
* broadcast must be assigned after the vendor hook.
*/
trace_android_vh_cpu_idle_enter(&index, dev);
if (index < 0)
return index;
target_state = &drv->states[index];
broadcast = !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP);
@ -428,7 +431,7 @@ void cpuidle_uninstall_idle_handler(void)
{
if (enabled_devices) {
initialized = 0;
wake_up_all_idle_cpus();
wake_up_all_online_idle_cpus();
}
/*

View File

@ -99,9 +99,10 @@ static struct sg_table *cma_heap_map_dma_buf(struct dma_buf_attachment *attachme
{
struct dma_heap_attachment *a = attachment->priv;
struct sg_table *table = &a->table;
int attrs = attachment->dma_map_attrs;
int ret;
ret = dma_map_sgtable(attachment->dev, table, direction, 0);
ret = dma_map_sgtable(attachment->dev, table, direction, attrs);
if (ret)
return ERR_PTR(-ENOMEM);
a->mapped = true;
@ -113,9 +114,10 @@ static void cma_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
enum dma_data_direction direction)
{
struct dma_heap_attachment *a = attachment->priv;
int attrs = attachment->dma_map_attrs;
a->mapped = false;
dma_unmap_sgtable(attachment->dev, table, direction, 0);
dma_unmap_sgtable(attachment->dev, table, direction, attrs);
}
static int cma_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,

View File

@ -140,11 +140,11 @@ static struct sg_table *system_heap_map_dma_buf(struct dma_buf_attachment *attac
{
struct dma_heap_attachment *a = attachment->priv;
struct sg_table *table = a->table;
int attr = 0;
int attr = attachment->dma_map_attrs;
int ret;
if (a->uncached)
attr = DMA_ATTR_SKIP_CPU_SYNC;
attr |= DMA_ATTR_SKIP_CPU_SYNC;
ret = dma_map_sgtable(attachment->dev, table, direction, attr);
if (ret)
@ -159,10 +159,10 @@ static void system_heap_unmap_dma_buf(struct dma_buf_attachment *attachment,
enum dma_data_direction direction)
{
struct dma_heap_attachment *a = attachment->priv;
int attr = 0;
int attr = attachment->dma_map_attrs;
if (a->uncached)
attr = DMA_ATTR_SKIP_CPU_SYNC;
attr |= DMA_ATTR_SKIP_CPU_SYNC;
a->mapped = false;
dma_unmap_sgtable(attachment->dev, table, direction, attr);
}

View File

@ -50,20 +50,6 @@ struct redist_region {
bool single_redist;
};
struct gic_chip_data {
struct fwnode_handle *fwnode;
void __iomem *dist_base;
struct redist_region *redist_regions;
struct rdists rdists;
struct irq_domain *domain;
u64 redist_stride;
u32 nr_redist_regions;
u64 flags;
bool has_rss;
unsigned int ppi_nr;
struct partition_desc **ppi_descs;
};
static struct gic_chip_data gic_data __read_mostly;
static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key);

View File

@ -1817,6 +1817,7 @@ int of_add_property(struct device_node *np, struct property *prop)
return rc;
}
EXPORT_SYMBOL_GPL(of_add_property);
int __of_remove_property(struct device_node *np, struct property *prop)
{

View File

@ -1288,6 +1288,8 @@ static int ufshcd_devfreq_target(struct device *dev,
struct list_head *clk_list = &hba->clk_list_head;
struct ufs_clk_info *clki;
unsigned long irq_flags;
bool force_out = false;
bool force_scaling = false;
if (!ufshcd_is_clkscaling_supported(hba))
return -EINVAL;
@ -1313,8 +1315,11 @@ static int ufshcd_devfreq_target(struct device *dev,
scale_up = (*freq == clki->max_freq) ? true : false;
if (!scale_up)
*freq = clki->min_freq;
trace_android_vh_ufs_clock_scaling(hba, &force_out, &force_scaling, &scale_up);
/* Update the frequency */
if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) {
if (force_out || (!force_scaling && !ufshcd_is_devfreq_scaling_required(hba, scale_up))) {
spin_unlock_irqrestore(hba->host->host_lock, irq_flags);
ret = 0;
goto out; /* no state change required */
@ -2318,6 +2323,9 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
int ret;
unsigned long flags;
if (hba->quirks & UFSHCD_QUIRK_BROKEN_UIC_CMD)
return 0;
ufshcd_hold(hba, false);
mutex_lock(&hba->uic_cmd_mutex);
ufshcd_add_delay_before_dme_cmd(hba);
@ -2727,15 +2735,6 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
WARN_ON(ufshcd_is_clkgating_allowed(hba) &&
(hba->clk_gating.state != CLKS_ON));
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
if (hba->pm_op_in_progress)
set_host_byte(cmd, DID_BAD_TARGET);
else
err = SCSI_MLQUEUE_HOST_BUSY;
ufshcd_release(hba);
goto out;
}
lrbp = &hba->lrb[tag];
WARN_ON(lrbp->cmd);
lrbp->cmd = cmd;
@ -2948,11 +2947,6 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba,
req->timeout = msecs_to_jiffies(2 * timeout);
blk_mq_start_request(req);
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
err = -EBUSY;
goto out;
}
init_completion(&wait);
lrbp = &hba->lrb[tag];
WARN_ON(lrbp->cmd);
@ -3115,14 +3109,14 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
BUG_ON(!hba);
ufshcd_hold(hba, false);
if (!attr_val) {
dev_err(hba->dev, "%s: attribute value required for opcode 0x%x\n",
__func__, opcode);
err = -EINVAL;
goto out;
return -EINVAL;
}
ufshcd_hold(hba, false);
mutex_lock(&hba->dev_cmd.lock);
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
selector);
@ -3154,7 +3148,6 @@ int ufshcd_query_attr(struct ufs_hba *hba, enum query_opcode opcode,
out_unlock:
mutex_unlock(&hba->dev_cmd.lock);
out:
ufshcd_release(hba);
return err;
}
@ -3208,21 +3201,20 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
BUG_ON(!hba);
ufshcd_hold(hba, false);
if (!desc_buf) {
dev_err(hba->dev, "%s: descriptor buffer required for opcode 0x%x\n",
__func__, opcode);
err = -EINVAL;
goto out;
return -EINVAL;
}
if (*buf_len < QUERY_DESC_MIN_SIZE || *buf_len > QUERY_DESC_MAX_SIZE) {
dev_err(hba->dev, "%s: descriptor buffer size (%d) is out of range\n",
__func__, *buf_len);
err = -EINVAL;
goto out;
return -EINVAL;
}
ufshcd_hold(hba, false);
mutex_lock(&hba->dev_cmd.lock);
ufshcd_init_query(hba, &request, &response, opcode, idn, index,
selector);
@ -3257,7 +3249,6 @@ static int __ufshcd_query_descriptor(struct ufs_hba *hba,
out_unlock:
hba->dev_cmd.query.descriptor = NULL;
mutex_unlock(&hba->dev_cmd.lock);
out:
ufshcd_release(hba);
return err;
}
@ -6668,11 +6659,6 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
tag = req->tag;
WARN_ON_ONCE(!ufshcd_valid_tag(hba, tag));
if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
err = -EBUSY;
goto out;
}
init_completion(&wait);
lrbp = &hba->lrb[tag];
WARN_ON(lrbp->cmd);
@ -6740,7 +6726,6 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
}
}
out:
blk_put_request(req);
out_unlock:
up_read(&hba->clk_scaling_lock);
@ -6879,7 +6864,8 @@ static void ufshcd_set_req_abort_skip(struct ufs_hba *hba, unsigned long bitmap)
/**
* ufshcd_try_to_abort_task - abort a specific task
* @cmd: SCSI command pointer
* @hba: Pointer to adapter instance
* @tag: Task tag/index to be aborted
*
* Abort the pending command in device by sending UFS_ABORT_TASK task management
* command, and in host controller by clearing the door-bell register. There can
@ -6969,7 +6955,7 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
struct ufs_hba *hba;
unsigned long flags;
unsigned int tag;
int err = 0;
int err = FAILED, res;
struct ufshcd_lrb *lrbp;
u32 reg;
@ -6986,12 +6972,12 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
ufshcd_hold(hba, false);
reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
/* If command is already aborted/completed, return SUCCESS */
/* If command is already aborted/completed, return FAILED. */
if (!(test_bit(tag, &hba->outstanding_reqs))) {
dev_err(hba->dev,
"%s: cmd at tag %d already completed, outstanding=0x%lx, doorbell=0x%x\n",
__func__, tag, hba->outstanding_reqs, reg);
goto out;
goto release;
}
/* Print Transfer Request of aborted task */
@ -7020,7 +7006,8 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
dev_err(hba->dev,
"%s: cmd was completed, but without a notifying intr, tag = %d",
__func__, tag);
goto cleanup;
__ufshcd_transfer_req_compl(hba, 1UL << tag);
goto release;
}
/*
@ -7033,36 +7020,32 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
*/
if (lrbp->lun == UFS_UPIU_UFS_DEVICE_WLUN) {
ufshcd_update_evt_hist(hba, UFS_EVT_ABORT, lrbp->lun);
__ufshcd_transfer_req_compl(hba, (1UL << tag));
set_bit(tag, &hba->outstanding_reqs);
spin_lock_irqsave(host->host_lock, flags);
hba->force_reset = true;
ufshcd_schedule_eh_work(hba);
spin_unlock_irqrestore(host->host_lock, flags);
goto out;
goto release;
}
/* Skip task abort in case previous aborts failed and report failure */
if (lrbp->req_abort_skip)
err = -EIO;
else
err = ufshcd_try_to_abort_task(hba, tag);
if (!err) {
cleanup:
__ufshcd_transfer_req_compl(hba, (1UL << tag));
out:
err = SUCCESS;
} else {
dev_err(hba->dev, "%s: failed with err %d\n", __func__, err);
if (lrbp->req_abort_skip) {
dev_err(hba->dev, "%s: skipping abort\n", __func__);
ufshcd_set_req_abort_skip(hba, hba->outstanding_reqs);
err = FAILED;
goto release;
}
/*
* This ufshcd_release() corresponds to the original scsi cmd that got
* aborted here (as we won't get any IRQ for it).
*/
res = ufshcd_try_to_abort_task(hba, tag);
if (res) {
dev_err(hba->dev, "%s: failed with err %d\n", __func__, res);
ufshcd_set_req_abort_skip(hba, hba->outstanding_reqs);
goto release;
}
err = SUCCESS;
release:
/* Matches the ufshcd_hold() call at the start of this function. */
ufshcd_release(hba);
return err;
}
@ -7981,6 +7964,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async)
if (ret)
goto out;
if (hba->quirks & UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION)
goto out;
/* Debug counters initialization */
ufshcd_clear_dbg_ufs_stats(hba);

View File

@ -565,6 +565,18 @@ enum ufshcd_quirks {
*/
UFSHCD_QUIRK_ALIGN_SG_WITH_PAGE_SIZE = 1 << 14,
/*
* This quirk needs to be enabled if the host controller does not
* support UIC command
*/
UFSHCD_QUIRK_BROKEN_UIC_CMD = 1 << 15,
/*
* This quirk needs to be enabled if the host controller cannot
* support interface configuration.
*/
UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION = 1 << 16,
/*
* This quirk needs to be enabled if the host controller supports inline
* encryption, but it needs to initialize the crypto capabilities in a

View File

@ -34,6 +34,7 @@
#include "usb.h"
#include <trace/hooks/usb.h>
/*
* Adds a new dynamic USBdevice ID to this driver,
@ -1403,11 +1404,16 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
int status = 0;
int i = 0, n = 0;
struct usb_interface *intf;
int bypass = 0;
if (udev->state == USB_STATE_NOTATTACHED ||
udev->state == USB_STATE_SUSPENDED)
goto done;
trace_android_vh_usb_dev_suspend(udev, msg, &bypass);
if (bypass)
goto done;
/* Suspend all the interfaces and then udev itself */
if (udev->actconfig) {
n = udev->actconfig->desc.bNumInterfaces;
@ -1504,11 +1510,17 @@ static int usb_resume_both(struct usb_device *udev, pm_message_t msg)
int status = 0;
int i;
struct usb_interface *intf;
int bypass = 0;
if (udev->state == USB_STATE_NOTATTACHED) {
status = -ENODEV;
goto done;
}
trace_android_vh_usb_dev_resume(udev, msg, &bypass);
if (bypass)
goto done;
udev->can_submit = 1;
/* Resume the device */

View File

@ -879,8 +879,6 @@ struct dwc3_hwparams {
/* HWPARAMS0 */
#define DWC3_MODE(n) ((n) & 0x7)
#define DWC3_MDWIDTH(n) (((n) & 0xff00) >> 8)
/* HWPARAMS1 */
#define DWC3_NUM_INT(n) (((n) & (0x3f << 15)) >> 15)
@ -1493,6 +1491,23 @@ u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type);
(!(_ip##_VERSIONTYPE_##_to) || \
dwc->version_type <= _ip##_VERSIONTYPE_##_to))
/**
* dwc3_mdwidth - get MDWIDTH value in bits
* @dwc: pointer to our context structure
*
* Return MDWIDTH configuration value in bits.
*/
static inline u32 dwc3_mdwidth(struct dwc3 *dwc)
{
u32 mdwidth;
mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
return mdwidth;
}
bool dwc3_has_imod(struct dwc3 *dwc);
int dwc3_event_buffers_setup(struct dwc3 *dwc);

View File

@ -638,16 +638,14 @@ static int dwc3_tx_fifo_size_show(struct seq_file *s, void *unused)
struct dwc3_ep *dep = s->private;
struct dwc3 *dwc = dep->dwc;
unsigned long flags;
int mdwidth;
u32 mdwidth;
u32 val;
spin_lock_irqsave(&dwc->lock, flags);
val = dwc3_core_fifo_space(dep, DWC3_TXFIFO);
/* Convert to bytes */
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
mdwidth = dwc3_mdwidth(dwc);
val *= mdwidth;
val >>= 3;
@ -662,16 +660,14 @@ static int dwc3_rx_fifo_size_show(struct seq_file *s, void *unused)
struct dwc3_ep *dep = s->private;
struct dwc3 *dwc = dep->dwc;
unsigned long flags;
int mdwidth;
u32 mdwidth;
u32 val;
spin_lock_irqsave(&dwc->lock, flags);
val = dwc3_core_fifo_space(dep, DWC3_RXFIFO);
/* Convert to bytes */
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
mdwidth = dwc3_mdwidth(dwc);
val *= mdwidth;
val >>= 3;

View File

@ -2367,9 +2367,7 @@ static void dwc3_gadget_setup_nump(struct dwc3 *dwc)
u32 reg;
ram2_depth = DWC3_GHWPARAMS7_RAM2_DEPTH(dwc->hwparams.hwparams7);
mdwidth = DWC3_GHWPARAMS0_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
mdwidth = dwc3_mdwidth(dwc);
nump = ((ram2_depth * mdwidth / 8) - 24 - 16) / 1024;
nump = min_t(u32, nump, 16);
@ -2632,12 +2630,10 @@ static int dwc3_gadget_init_control_endpoint(struct dwc3_ep *dep)
static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
{
struct dwc3 *dwc = dep->dwc;
int mdwidth;
u32 mdwidth;
int size;
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
mdwidth = dwc3_mdwidth(dwc);
/* MDWIDTH is represented in bits, we need it in bytes */
mdwidth /= 8;
@ -2679,12 +2675,10 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
static int dwc3_gadget_init_out_endpoint(struct dwc3_ep *dep)
{
struct dwc3 *dwc = dep->dwc;
int mdwidth;
u32 mdwidth;
int size;
mdwidth = DWC3_MDWIDTH(dwc->hwparams.hwparams0);
if (DWC3_IP_IS(DWC32))
mdwidth += DWC3_GHWPARAMS6_MDWIDTH(dwc->hwparams.hwparams6);
mdwidth = dwc3_mdwidth(dwc);
/* MDWIDTH is represented in bits, convert to bytes */
mdwidth /= 8;

View File

@ -1534,18 +1534,28 @@ static void configfs_composite_unbind(struct usb_gadget *gadget)
static int android_setup(struct usb_gadget *gadget,
const struct usb_ctrlrequest *c)
{
struct usb_composite_dev *cdev = get_gadget_data(gadget);
struct usb_composite_dev *cdev;
unsigned long flags;
struct gadget_info *gi = container_of(cdev, struct gadget_info, cdev);
struct gadget_info *gi;
int value = -EOPNOTSUPP;
struct usb_function_instance *fi;
spin_lock_irqsave(&cdev->lock, flags);
if (!android_device)
return 0;
gi = dev_get_drvdata(android_device);
spin_lock_irqsave(&gi->spinlock, flags);
cdev = get_gadget_data(gadget);
if (!cdev || gi->unbind) {
spin_unlock_irqrestore(&gi->spinlock, flags);
return 0;
}
if (!gi->connected) {
gi->connected = 1;
schedule_work(&gi->work);
}
spin_unlock_irqrestore(&cdev->lock, flags);
list_for_each_entry(fi, &gi->available_func, cfs_list) {
if (fi != NULL && fi->f != NULL && fi->f->setup != NULL) {
value = fi->f->setup(fi->f, c);
@ -1562,12 +1572,11 @@ static int android_setup(struct usb_gadget *gadget,
if (value < 0)
value = composite_setup(gadget, c);
spin_lock_irqsave(&cdev->lock, flags);
if (c->bRequest == USB_REQ_SET_CONFIGURATION &&
cdev->config) {
schedule_work(&gi->work);
}
spin_unlock_irqrestore(&cdev->lock, flags);
spin_unlock_irqrestore(&gi->spinlock, flags);
return value;
}

View File

@ -3876,6 +3876,8 @@ int f2fs_migrate_page(struct address_space *mapping,
get_page(newpage);
}
/* guarantee to start from no stale private field */
set_page_private(newpage, 0);
if (PagePrivate(page)) {
set_page_private(newpage, page_private(page));
SetPagePrivate(newpage);

View File

@ -1329,7 +1329,8 @@ enum {
#define PAGE_PRIVATE_GET_FUNC(name, flagname) \
static inline bool page_private_##name(struct page *page) \
{ \
return test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
return PagePrivate(page) && \
test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
}
@ -1339,6 +1340,7 @@ static inline void set_page_private_##name(struct page *page) \
if (!PagePrivate(page)) { \
get_page(page); \
SetPagePrivate(page); \
set_page_private(page, 0); \
} \
set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
@ -1390,6 +1392,7 @@ static inline void set_page_private_data(struct page *page, unsigned long data)
if (!PagePrivate(page)) {
get_page(page);
SetPagePrivate(page);
set_page_private(page, 0);
}
set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page));
page_private(page) |= data << PAGE_PRIVATE_MAX;

View File

@ -34,6 +34,7 @@
#include <linux/compat.h>
#include "internal.h"
#include <trace/hooks/syscall_check.h>
int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
struct file *filp)
@ -800,6 +801,7 @@ static int do_dentry_open(struct file *f,
error = -ENODEV;
goto cleanup_all;
}
trace_android_vh_check_file_open(f);
error = security_file_open(f);
if (error)

View File

@ -21,6 +21,7 @@
#include <linux/pstore_ram.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_reserved_mem.h>
#include "internal.h"
#define RAMOOPS_KERNMSG_HDR "===="
@ -633,21 +634,21 @@ static int ramoops_parse_dt(struct platform_device *pdev,
{
struct device_node *of_node = pdev->dev.of_node;
struct device_node *parent_node;
struct resource *res;
struct reserved_mem *rmem;
u32 value;
int ret;
dev_dbg(&pdev->dev, "using Device Tree\n");
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
rmem = of_reserved_mem_lookup(of_node);
if (!rmem) {
dev_err(&pdev->dev,
"failed to locate DT /reserved-memory resource\n");
return -EINVAL;
}
pdata->mem_size = resource_size(res);
pdata->mem_address = res->start;
pdata->mem_size = rmem->size;
pdata->mem_address = rmem->base;
/*
* Setting "unbuffered" is deprecated and will be ignored if
* "mem_type" is also specified.

View File

@ -2,7 +2,15 @@
#ifndef _FIPS_H
#define _FIPS_H
#ifdef CONFIG_CRYPTO_FIPS
#ifdef BUILD_FIPS140_KO
/*
* In fips140.ko, enable the behavior that the upstream fips_enabled flag
* controls, such as the XTS weak key check.
*/
#define fips_enabled 1
#define CONFIG_CRYPTO_FIPS 1
#elif defined(CONFIG_CRYPTO_FIPS)
extern int fips_enabled;
extern struct atomic_notifier_head fips_fail_notif_chain;

View File

@ -693,6 +693,20 @@ int its_init(struct fwnode_handle *handle, struct rdists *rdists,
struct irq_domain *domain);
int mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent);
struct gic_chip_data {
struct fwnode_handle *fwnode;
void __iomem *dist_base;
struct redist_region *redist_regions;
struct rdists rdists;
struct irq_domain *domain;
u64 redist_stride;
u32 nr_redist_regions;
u64 flags;
bool has_rss;
unsigned int ppi_nr;
struct partition_desc **ppi_descs;
};
static inline bool gic_enable_sre(void)
{
u32 val;

View File

@ -441,10 +441,31 @@ static inline bool mem_cgroup_below_min(struct mem_cgroup *memcg)
page_counter_read(&memcg->memory);
}
int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask);
int __mem_cgroup_charge(struct page *page, struct mm_struct *mm,
gfp_t gfp_mask);
static inline int mem_cgroup_charge(struct page *page, struct mm_struct *mm,
gfp_t gfp_mask)
{
if (mem_cgroup_disabled())
return 0;
return __mem_cgroup_charge(page, mm, gfp_mask);
}
void mem_cgroup_uncharge(struct page *page);
void mem_cgroup_uncharge_list(struct list_head *page_list);
void __mem_cgroup_uncharge(struct page *page);
static inline void mem_cgroup_uncharge(struct page *page)
{
if (mem_cgroup_disabled())
return;
__mem_cgroup_uncharge(page);
}
void __mem_cgroup_uncharge_list(struct list_head *page_list);
static inline void mem_cgroup_uncharge_list(struct list_head *page_list)
{
if (mem_cgroup_disabled())
return;
__mem_cgroup_uncharge_list(page_list);
}
void mem_cgroup_migrate(struct page *oldpage, struct page *newpage);

View File

@ -756,8 +756,13 @@ struct inode;
*/
static inline int put_page_testzero(struct page *page)
{
int ret;
VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
return page_ref_dec_and_test(page);
ret = page_ref_dec_and_test(page);
page_pinner_put_page(page);
return ret;
}
/*
@ -1233,8 +1238,6 @@ static inline void put_page(struct page *page)
{
page = compound_head(page);
page_pinner_migration_failed(page);
/*
* For devmap managed pages we need to catch refcount transition from
* 2 to 1, when refcount reach one it means the page is free and we
@ -3358,6 +3361,8 @@ unsigned long wp_shared_mapping_range(struct address_space *mapping,
extern int sysctl_nr_trim_pages;
extern bool pte_map_lock_addr(struct vm_fault *vmf, unsigned long addr);
extern int reclaim_shmem_address_space(struct address_space *mapping);
extern int reclaim_pages_from_list(struct list_head *page_list);
/**
* seal_check_future_write - Check for F_SEAL_FUTURE_WRITE flag and handle it

View File

@ -931,6 +931,11 @@ static inline int of_machine_is_compatible(const char *compat)
return 0;
}
static inline int of_add_property(struct device_node *np, struct property *prop)
{
return 0;
}
static inline int of_remove_property(struct device_node *np, struct property *prop)
{
return 0;

View File

@ -39,7 +39,15 @@ static inline void dump_page_pinner(struct page *page)
__dump_page_pinner(page);
}
static inline void page_pinner_migration_failed(struct page *page)
static inline void page_pinner_put_page(struct page *page)
{
if (!static_branch_unlikely(&failure_tracking))
return;
__page_pinner_migration_failed(page);
}
static inline void page_pinner_failure_detect(struct page *page)
{
if (!static_branch_unlikely(&failure_tracking))
return;
@ -67,7 +75,10 @@ static inline void set_page_pinner(struct page *page, unsigned int order)
static inline void dump_page_pinner(struct page *page)
{
}
static inline void page_pinner_migration_failed(struct page *page)
static inline void page_pinner_put_page(struct page *page)
{
}
static inline void page_pinner_failure_detect(struct page *page)
{
}
static inline void page_pinner_mark_migration_failed_pages(struct list_head *page_list)

View File

@ -41,6 +41,7 @@
#include <linux/netfilter/nf_conntrack_common.h>
#endif
#include <linux/android_kabi.h>
#include <linux/android_vendor.h>
/* The interface for checksum offload between the stack and networking drivers
* is as follows...
@ -532,6 +533,8 @@ struct skb_shared_info {
* remains valid until skb destructor */
void * destructor_arg;
ANDROID_OEM_DATA_ARRAY(1, 3);
/* must be last field, see pskb_expand_head() */
skb_frag_t frags[MAX_SKB_FRAGS];
};

View File

@ -127,6 +127,7 @@ int smp_call_function_any(const struct cpumask *mask,
void kick_all_cpus_sync(void);
void wake_up_all_idle_cpus(void);
void wake_up_all_online_idle_cpus(void);
/*
* Generic and arch helpers
@ -182,6 +183,7 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func,
static inline void kick_all_cpus_sync(void) { }
static inline void wake_up_all_idle_cpus(void) { }
static inline void wake_up_all_online_idle_cpus(void) { }
#ifdef CONFIG_UP_LATE_INIT
extern void __init up_late_init(void);

View File

@ -695,7 +695,13 @@ static inline int mem_cgroup_swappiness(struct mem_cgroup *mem)
#endif
#if defined(CONFIG_SWAP) && defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
extern void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask);
extern void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask);
static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
{
if (mem_cgroup_disabled())
return;
__cgroup_throttle_swaprate(page, gfp_mask);
}
#else
static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
{
@ -704,8 +710,22 @@ static inline void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
#ifdef CONFIG_MEMCG_SWAP
extern void mem_cgroup_swapout(struct page *page, swp_entry_t entry);
extern int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry);
extern void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages);
extern int __mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry);
static inline int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
{
if (mem_cgroup_disabled())
return 0;
return __mem_cgroup_try_charge_swap(page, entry);
}
extern void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages);
static inline void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
{
if (mem_cgroup_disabled())
return;
__mem_cgroup_uncharge_swap(entry, nr_pages);
}
extern long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg);
extern bool mem_cgroup_swap_full(struct page *page);
#else

View File

@ -54,14 +54,14 @@ DECLARE_HOOK(android_vh_meminfo_proc_show,
DECLARE_HOOK(android_vh_exit_mm,
TP_PROTO(struct mm_struct *mm),
TP_ARGS(mm));
DECLARE_HOOK(android_vh_get_unmapped_area_from_anti_fragment_pool,
DECLARE_HOOK(android_vh_get_from_fragment_pool,
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
unsigned long *addr),
TP_ARGS(mm, info, addr));
DECLARE_HOOK(android_vh_exclude_reserved_zone,
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info),
TP_ARGS(mm, info));
DECLARE_HOOK(android_vh_get_unmapped_area_include_reserved_zone,
DECLARE_HOOK(android_vh_include_reserved_zone,
TP_PROTO(struct mm_struct *mm, struct vm_unmapped_area_info *info,
unsigned long *addr),
TP_ARGS(mm, info, addr));
@ -97,6 +97,26 @@ DECLARE_HOOK(android_vh_show_stack_hash,
DECLARE_HOOK(android_vh_save_track_hash,
TP_PROTO(bool alloc, unsigned long p),
TP_ARGS(alloc, p));
struct mem_cgroup;
DECLARE_HOOK(android_vh_vmpressure,
TP_PROTO(struct mem_cgroup *memcg, bool *bypass),
TP_ARGS(memcg, bypass));
DECLARE_HOOK(android_vh_mem_cgroup_alloc,
TP_PROTO(struct mem_cgroup *memcg),
TP_ARGS(memcg));
DECLARE_HOOK(android_vh_mem_cgroup_free,
TP_PROTO(struct mem_cgroup *memcg),
TP_ARGS(memcg));
DECLARE_HOOK(android_vh_mem_cgroup_id_remove,
TP_PROTO(struct mem_cgroup *memcg),
TP_ARGS(memcg));
struct cgroup_subsys_state;
DECLARE_HOOK(android_vh_mem_cgroup_css_online,
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
TP_ARGS(css, memcg));
DECLARE_HOOK(android_vh_mem_cgroup_css_offline,
TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg),
TP_ARGS(css, memcg));
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_MM_H */

25
include/trace/hooks/net.h Normal file
View File

@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM net
#define TRACE_INCLUDE_PATH trace/hooks
#if !defined(_TRACE_HOOK_NET_VH_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HOOK_NET_VH_H
#include <linux/tracepoint.h>
#include <trace/hooks/vendor_hooks.h>
struct packet_type;
struct list_head;
struct sk_buff;
DECLARE_HOOK(android_vh_ptype_head,
TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt),
TP_ARGS(pt, vendor_pt));
DECLARE_HOOK(android_vh_kfree_skb,
TP_PROTO(struct sk_buff *skb), TP_ARGS(skb));
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_NET_VH_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@ -0,0 +1,17 @@
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM shmem_fs
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH trace/hooks
#if !defined(_TRACE_HOOK_SHMEM_FS_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HOOK_SHMEM_FS_H
#include <linux/tracepoint.h>
#include <trace/hooks/vendor_hooks.h>
struct page;
DECLARE_HOOK(android_vh_shmem_alloc_page,
TP_PROTO(struct page **page),
TP_ARGS(page));
#endif /* _TRACE_HOOK_SHMEM_FS_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM syscall_check
#define TRACE_INCLUDE_PATH trace/hooks
#if !defined(_TRACE_HOOK_SYSCALL_CHECK_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HOOK_SYSCALL_CHECK_H
#include <linux/tracepoint.h>
#include <trace/hooks/vendor_hooks.h>
/*
* Following tracepoints are not exported in tracefs and provide a
* mechanism for vendor modules to hook and extend functionality
*/
struct file;
union bpf_attr;
DECLARE_HOOK(android_vh_check_mmap_file,
TP_PROTO(const struct file *file, unsigned long prot,
unsigned long flag, unsigned long ret),
TP_ARGS(file, prot, flag, ret));
DECLARE_HOOK(android_vh_check_file_open,
TP_PROTO(const struct file *file),
TP_ARGS(file));
DECLARE_HOOK(android_vh_check_bpf_syscall,
TP_PROTO(int cmd, const union bpf_attr *attr, unsigned int size),
TP_ARGS(cmd, attr, size));
#endif /* _TRACE_HOOK_SYSCALL_CHECK_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@ -55,6 +55,9 @@ DECLARE_HOOK(android_vh_ufs_update_sdev,
TP_PROTO(struct scsi_device *sdev),
TP_ARGS(sdev));
DECLARE_HOOK(android_vh_ufs_clock_scaling,
TP_PROTO(struct ufs_hba *hba, bool *force_out, bool *force_scaling, bool *scale_up),
TP_ARGS(hba, force_out, force_scaling, scale_up));
#endif /* _TRACE_HOOK_UFSHCD_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

27
include/trace/hooks/usb.h Normal file
View File

@ -0,0 +1,27 @@
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM usb
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH trace/hooks
#if !defined(_TRACE_HOOK_USB_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_HOOK_USB_H
#include <linux/tracepoint.h>
#include <linux/usb.h>
#include <trace/hooks/vendor_hooks.h>
/*
* Following tracepoints are not exported in tracefs and provide a
* mechanism for vendor modules to hook and extend functionality
*/
DECLARE_HOOK(android_vh_usb_dev_suspend,
TP_PROTO(struct usb_device *udev, pm_message_t msg, int *bypass),
TP_ARGS(udev, msg, bypass));
DECLARE_HOOK(android_vh_usb_dev_resume,
TP_PROTO(struct usb_device *udev, pm_message_t msg, int *bypass),
TP_ARGS(udev, msg, bypass));
#endif /* _TRACE_HOOK_USB_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@ -32,6 +32,8 @@
#include <linux/bpf-netns.h>
#include <linux/rcupdate_trace.h>
#include <trace/hooks/syscall_check.h>
#define IS_FD_ARRAY(map) ((map)->map_type == BPF_MAP_TYPE_PERF_EVENT_ARRAY || \
(map)->map_type == BPF_MAP_TYPE_CGROUP_ARRAY || \
(map)->map_type == BPF_MAP_TYPE_ARRAY_OF_MAPS)
@ -4374,6 +4376,8 @@ SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, siz
if (copy_from_user(&attr, uattr, size) != 0)
return -EFAULT;
trace_android_vh_check_bpf_syscall(cmd, &attr, size);
err = security_bpf(cmd, &attr, size);
if (err < 0)
return err;

View File

@ -4123,6 +4123,7 @@ int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts)
cft->flags |= __CFTYPE_NOT_ON_DFL;
return cgroup_add_cftypes(ss, cfts);
}
EXPORT_SYMBOL_GPL(cgroup_add_legacy_cftypes);
/**
* cgroup_file_notify - generate a file modified event for a cgroup_file

View File

@ -121,6 +121,8 @@
*/
#define MAX_THREADS FUTEX_TID_MASK
EXPORT_TRACEPOINT_SYMBOL_GPL(task_newtask);
/*
* Protected counters by write_lock_irq(&tasklist_lock)
*/

View File

@ -967,6 +967,27 @@ void wake_up_all_idle_cpus(void)
}
EXPORT_SYMBOL_GPL(wake_up_all_idle_cpus);
/**
* wake_up_all_online_idle_cpus - break all online cpus out of idle
* wake_up_all_online_idle_cpus try to break all online cpus which is in idle
* state even including idle polling cpus, for non-idle cpus, we will do nothing
* for them.
*/
void wake_up_all_online_idle_cpus(void)
{
int cpu;
preempt_disable();
for_each_online_cpu(cpu) {
if (cpu == smp_processor_id())
continue;
wake_up_if_idle(cpu);
}
preempt_enable();
}
EXPORT_SYMBOL_GPL(wake_up_all_online_idle_cpus);
/**
* smp_call_on_cpu - Call a function on a specific cpu
*

View File

@ -38,12 +38,8 @@ EXPORT_SYMBOL_GPL(debug_locks_silent);
*/
int debug_locks_off(void)
{
if (debug_locks && __debug_locks_off()) {
if (!debug_locks_silent) {
console_verbose();
return 1;
}
}
if (debug_locks && __debug_locks_off() && !debug_locks_silent)
return 1;
return 0;
}
EXPORT_SYMBOL_GPL(debug_locks_off);

View File

@ -67,6 +67,7 @@
#include <linux/uaccess.h>
#include <trace/events/vmscan.h>
#include <trace/hooks/mm.h>
struct cgroup_subsys memory_cgrp_subsys __read_mostly;
EXPORT_SYMBOL(memory_cgrp_subsys);
@ -5148,6 +5149,7 @@ static DEFINE_IDR(mem_cgroup_idr);
static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
{
if (memcg->id.id > 0) {
trace_android_vh_mem_cgroup_id_remove(memcg);
idr_remove(&mem_cgroup_idr, memcg->id.id);
memcg->id.id = 0;
}
@ -5185,6 +5187,7 @@ struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
WARN_ON_ONCE(!rcu_read_lock_held());
return idr_find(&mem_cgroup_idr, id);
}
EXPORT_SYMBOL_GPL(mem_cgroup_from_id);
static int alloc_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
{
@ -5244,6 +5247,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
{
int node;
trace_android_vh_mem_cgroup_free(memcg);
for_each_node(node)
free_mem_cgroup_per_node_info(memcg, node);
free_percpu(memcg->vmstats_percpu);
@ -5327,6 +5331,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
memcg->deferred_split_queue.split_queue_len = 0;
#endif
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
trace_android_vh_mem_cgroup_alloc(memcg);
return memcg;
fail:
mem_cgroup_id_remove(memcg);
@ -5416,6 +5421,7 @@ static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
/* Online state pins memcg ID, memcg ID pins CSS */
refcount_set(&memcg->id.ref, 1);
css_get(css);
trace_android_vh_mem_cgroup_css_online(css, memcg);
return 0;
}
@ -5424,6 +5430,7 @@ static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
struct mem_cgroup_event *event, *tmp;
trace_android_vh_mem_cgroup_css_offline(css, memcg);
/*
* Unregister events and notify userspace.
* Notify userspace about cgroup removing only after rmdir of cgroup
@ -6754,7 +6761,7 @@ void mem_cgroup_calculate_protection(struct mem_cgroup *root,
}
/**
* mem_cgroup_charge - charge a newly allocated page to a cgroup
* __mem_cgroup_charge - charge a newly allocated page to a cgroup
* @page: page to charge
* @mm: mm context of the victim
* @gfp_mask: reclaim mode
@ -6764,15 +6771,13 @@ void mem_cgroup_calculate_protection(struct mem_cgroup *root,
*
* Returns 0 on success. Otherwise, an error code is returned.
*/
int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask)
int __mem_cgroup_charge(struct page *page, struct mm_struct *mm,
gfp_t gfp_mask)
{
unsigned int nr_pages = thp_nr_pages(page);
struct mem_cgroup *memcg = NULL;
int ret = 0;
if (mem_cgroup_disabled())
goto out;
if (PageSwapCache(page)) {
swp_entry_t ent = { .val = page_private(page), };
unsigned short id;
@ -6942,18 +6947,15 @@ static void uncharge_list(struct list_head *page_list)
}
/**
* mem_cgroup_uncharge - uncharge a page
* __mem_cgroup_uncharge - uncharge a page
* @page: page to uncharge
*
* Uncharge a page previously charged with mem_cgroup_charge().
* Uncharge a page previously charged with __mem_cgroup_charge().
*/
void mem_cgroup_uncharge(struct page *page)
void __mem_cgroup_uncharge(struct page *page)
{
struct uncharge_gather ug;
if (mem_cgroup_disabled())
return;
/* Don't touch page->lru of any random page, pre-check: */
if (!page->mem_cgroup)
return;
@ -6964,17 +6966,14 @@ void mem_cgroup_uncharge(struct page *page)
}
/**
* mem_cgroup_uncharge_list - uncharge a list of page
* __mem_cgroup_uncharge_list - uncharge a list of page
* @page_list: list of pages to uncharge
*
* Uncharge a list of pages previously charged with
* mem_cgroup_charge().
* __mem_cgroup_charge().
*/
void mem_cgroup_uncharge_list(struct list_head *page_list)
void __mem_cgroup_uncharge_list(struct list_head *page_list)
{
if (mem_cgroup_disabled())
return;
if (!list_empty(page_list))
uncharge_list(page_list);
}
@ -7201,6 +7200,9 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
VM_BUG_ON_PAGE(PageLRU(page), page);
VM_BUG_ON_PAGE(page_count(page), page);
if (mem_cgroup_disabled())
return;
if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
return;
@ -7250,7 +7252,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
}
/**
* mem_cgroup_try_charge_swap - try charging swap space for a page
* __mem_cgroup_try_charge_swap - try charging swap space for a page
* @page: page being added to swap
* @entry: swap entry to charge
*
@ -7258,7 +7260,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
*
* Returns 0 on success, -ENOMEM on failure.
*/
int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
int __mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
{
unsigned int nr_pages = thp_nr_pages(page);
struct page_counter *counter;
@ -7300,11 +7302,11 @@ int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
}
/**
* mem_cgroup_uncharge_swap - uncharge swap space
* __mem_cgroup_uncharge_swap - uncharge swap space
* @entry: swap entry to uncharge
* @nr_pages: the amount of swap space to uncharge
*/
void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
void __mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
{
struct mem_cgroup *memcg;
unsigned short id;

View File

@ -2101,7 +2101,7 @@ static unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
if (length < info->length)
return -ENOMEM;
trace_android_vh_get_unmapped_area_from_anti_fragment_pool(mm, info, &addr);
trace_android_vh_get_from_fragment_pool(mm, info, &addr);
if (addr)
return addr;
@ -2214,6 +2214,7 @@ unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info)
trace_vm_unmapped_area(addr, info);
return addr;
}
EXPORT_SYMBOL_GPL(vm_unmapped_area);
#ifndef arch_get_mmap_end
#define arch_get_mmap_end(addr) (TASK_SIZE)
@ -2324,7 +2325,7 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
addr = vm_unmapped_area(&info);
}
trace_android_vh_get_unmapped_area_include_reserved_zone(mm, &info, &addr);
trace_android_vh_include_reserved_zone(mm, &info, &addr);
return addr;
}

View File

@ -308,6 +308,10 @@ int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn,
spin_unlock_irqrestore(&zone->lock, flags);
trace_test_pages_isolated(start_pfn, end_pfn, pfn);
if (pfn < end_pfn) {
page_pinner_failure_detect(pfn_to_page(pfn));
return -EBUSY;
}
return pfn < end_pfn ? -EBUSY : 0;
return 0;
}

View File

@ -15,7 +15,7 @@
#include "internal.h"
#define PAGE_PINNER_STACK_DEPTH 16
#define LONTERM_PIN_BUCKETS 4096
#define LONGTERM_PIN_BUCKETS 4096
struct page_pinner {
depot_stack_handle_t handle;
@ -25,16 +25,23 @@ struct page_pinner {
struct captured_pinner {
depot_stack_handle_t handle;
s64 ts_usec;
int page_mt;
unsigned long page_flags;
union {
s64 ts_usec;
s64 elapsed;
};
/* struct page fields */
unsigned long pfn;
int count;
int mapcount;
struct address_space *mapping;
unsigned long flags;
};
struct longterm_pinner {
spinlock_t lock;
unsigned int index;
struct captured_pinner pinner[LONTERM_PIN_BUCKETS];
struct captured_pinner pinner[LONGTERM_PIN_BUCKETS];
};
static struct longterm_pinner lt_pinner = {
@ -111,12 +118,23 @@ static noinline depot_stack_handle_t save_stack(gfp_t flags)
return handle;
}
static void check_lonterm_pin(struct page_pinner *page_pinner,
static void capture_page_state(struct page *page,
struct captured_pinner *record)
{
record->flags = page->flags;
record->mapping = page_mapping(page);
record->pfn = page_to_pfn(page);
record->count = page_count(page);
record->mapcount = page_mapcount(page);
}
static void check_longterm_pin(struct page_pinner *page_pinner,
struct page *page)
{
s64 now, delta = 0;
unsigned long flags;
unsigned int idx;
struct captured_pinner record;
now = ktime_to_us(ktime_get_boottime());
@ -127,17 +145,15 @@ static void check_lonterm_pin(struct page_pinner *page_pinner,
if (delta <= threshold_usec)
return;
record.handle = page_pinner->handle;
record.elapsed = delta;
capture_page_state(page, &record);
spin_lock_irqsave(&lt_pinner.lock, flags);
idx = lt_pinner.index++;
lt_pinner.index %= LONTERM_PIN_BUCKETS;
lt_pinner.pinner[idx].handle = page_pinner->handle;
lt_pinner.pinner[idx].ts_usec = delta;
lt_pinner.pinner[idx].page_flags = page->flags;
lt_pinner.pinner[idx].page_mt = get_pageblock_migratetype(page);
lt_pinner.pinner[idx].pfn = page_to_pfn(page);
lt_pinner.index %= LONGTERM_PIN_BUCKETS;
lt_pinner.pinner[idx] = record;
spin_unlock_irqrestore(&lt_pinner.lock, flags);
}
void __reset_page_pinner(struct page *page, unsigned int order, bool free)
@ -151,18 +167,19 @@ void __reset_page_pinner(struct page *page, unsigned int order, bool free)
return;
for (i = 0; i < (1 << order); i++) {
if (!test_bit(PAGE_EXT_GET, &page_ext->flags))
if (!test_bit(PAGE_EXT_GET, &page_ext->flags) &&
!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED,
&page_ext->flags))
continue;
page_pinner = get_page_pinner(page_ext);
if (free) {
WARN_ON_ONCE(atomic_read(&page_pinner->count));
/* record page free call path */
__page_pinner_migration_failed(page);
atomic_set(&page_pinner->count, 0);
__clear_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
} else {
WARN_ON_ONCE(atomic_dec_if_positive(
&page_pinner->count) < 0);
check_lonterm_pin(page_pinner, page);
check_longterm_pin(page_pinner, page);
}
clear_bit(PAGE_EXT_GET, &page_ext->flags);
page_ext = page_ext_next(page_ext);
@ -200,9 +217,7 @@ noinline void __set_page_pinner(struct page *page, unsigned int order)
}
static ssize_t
print_page_pinner(char __user *buf, size_t count, unsigned long pfn,
int pageblock_mt, unsigned long page_flags, s64 ts_usec,
depot_stack_handle_t handle, int shared_count)
print_page_pinner(bool longterm, char __user *buf, size_t count, struct captured_pinner *record)
{
int ret;
unsigned long *entries;
@ -214,25 +229,34 @@ print_page_pinner(char __user *buf, size_t count, unsigned long pfn,
if (!kbuf)
return -ENOMEM;
ret = snprintf(kbuf, count,
"Page pinned ts %lld us count %d\n",
ts_usec, shared_count);
if (longterm) {
ret = snprintf(kbuf, count, "Page pinned for %lld us\n",
record->elapsed);
} else {
s64 ts_usec = record->ts_usec;
unsigned long rem_usec = do_div(ts_usec, 1000000);
ret = snprintf(kbuf, count,
"Page pinned ts [%5lu.%06lu]\n",
(unsigned long)ts_usec, rem_usec);
}
if (ret >= count)
goto err;
/* Print information relevant to grouping pages by mobility */
ret += snprintf(kbuf + ret, count - ret,
"PFN %lu Block %lu type %s Flags %#lx(%pGp)\n",
pfn,
pfn >> pageblock_order,
migratetype_names[pageblock_mt],
page_flags, &page_flags);
"PFN 0x%lx Block %lu count %d mapcount %d mapping %pS Flags %#lx(%pGp)\n",
record->pfn,
record->pfn >> pageblock_order,
record->count, record->mapcount,
record->mapping,
record->flags, &record->flags);
if (ret >= count)
goto err;
nr_entries = stack_depot_fetch(handle, &entries);
nr_entries = stack_depot_fetch(record->handle, &entries);
ret += stack_trace_snprint(kbuf + ret, count - ret, entries,
nr_entries, 0);
if (ret >= count)
@ -263,6 +287,8 @@ void __dump_page_pinner(struct page *page)
int pageblock_mt;
unsigned long pfn;
int count;
unsigned long rem_usec;
s64 ts_usec;
if (unlikely(!page_ext)) {
pr_alert("There is not page extension available.\n");
@ -278,9 +304,10 @@ void __dump_page_pinner(struct page *page)
}
pfn = page_to_pfn(page);
pr_alert("page last pinned ts %lld count %d\n",
page_pinner->ts_usec,
count);
ts_usec = page_pinner->ts_usec;
rem_usec = do_div(ts_usec, 1000000);
pr_alert("page last pinned %5lu.%06lu] count %d\n",
(unsigned long)ts_usec, rem_usec, count);
pageblock_mt = get_pageblock_migratetype(page);
pr_alert("PFN %lu Block %lu type %s Flags %#lx(%pGp)\n",
@ -302,7 +329,7 @@ void __page_pinner_migration_failed(struct page *page)
{
struct page_ext *page_ext = lookup_page_ext(page);
struct page_pinner *page_pinner;
depot_stack_handle_t handle;
struct captured_pinner record;
unsigned long flags;
unsigned int idx;
@ -313,17 +340,14 @@ void __page_pinner_migration_failed(struct page *page)
if (!test_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags))
return;
handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
record.handle = save_stack(GFP_NOWAIT|__GFP_NOWARN);
record.ts_usec = ktime_to_us(ktime_get_boottime());
capture_page_state(page, &record);
spin_lock_irqsave(&acf_pinner.lock, flags);
idx = acf_pinner.index++;
acf_pinner.index %= LONTERM_PIN_BUCKETS;
acf_pinner.pinner[idx].handle = handle;
acf_pinner.pinner[idx].ts_usec = ktime_to_us(ktime_get_boottime());
acf_pinner.pinner[idx].page_flags = page->flags;
acf_pinner.pinner[idx].page_mt = get_pageblock_migratetype(page);
acf_pinner.pinner[idx].pfn = page_to_pfn(page);
acf_pinner.index %= LONGTERM_PIN_BUCKETS;
acf_pinner.pinner[idx] = record;
spin_unlock_irqrestore(&acf_pinner.lock, flags);
}
EXPORT_SYMBOL(__page_pinner_migration_failed);
@ -341,6 +365,7 @@ void __page_pinner_mark_migration_failed_pages(struct list_head *page_list)
if (unlikely(!page_ext))
continue;
__set_bit(PAGE_EXT_PINNER_MIGRATION_FAILED, &page_ext->flags);
__page_pinner_migration_failed(page);
}
}
@ -355,7 +380,7 @@ read_longterm_page_pinner(struct file *file, char __user *buf, size_t count,
if (!static_branch_unlikely(&page_pinner_inited))
return -EINVAL;
if (*ppos >= LONTERM_PIN_BUCKETS)
if (*ppos >= LONGTERM_PIN_BUCKETS)
return 0;
i = *ppos;
@ -365,17 +390,15 @@ read_longterm_page_pinner(struct file *file, char __user *buf, size_t count,
* reading the records in the reverse order with newest one
* being read first followed by older ones
*/
idx = (lt_pinner.index - 1 - i + LONTERM_PIN_BUCKETS) %
LONTERM_PIN_BUCKETS;
idx = (lt_pinner.index - 1 - i + LONGTERM_PIN_BUCKETS) %
LONGTERM_PIN_BUCKETS;
spin_lock_irqsave(&lt_pinner.lock, flags);
record = lt_pinner.pinner[idx];
spin_unlock_irqrestore(&lt_pinner.lock, flags);
if (!record.handle)
return 0;
return print_page_pinner(buf, count, record.pfn, record.page_mt,
record.page_flags, record.ts_usec,
record.handle, 0);
return print_page_pinner(true, buf, count, &record);
}
static const struct file_operations proc_longterm_pinner_operations = {
@ -392,7 +415,7 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
if (!static_branch_unlikely(&failure_tracking))
return -EINVAL;
if (*ppos >= LONTERM_PIN_BUCKETS)
if (*ppos >= LONGTERM_PIN_BUCKETS)
return 0;
i = *ppos;
@ -402,8 +425,8 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
* reading the records in the reverse order with newest one
* being read first followed by older ones
*/
idx = (acf_pinner.index - 1 - i + LONTERM_PIN_BUCKETS) %
LONTERM_PIN_BUCKETS;
idx = (acf_pinner.index - 1 - i + LONGTERM_PIN_BUCKETS) %
LONGTERM_PIN_BUCKETS;
spin_lock_irqsave(&acf_pinner.lock, flags);
record = acf_pinner.pinner[idx];
@ -411,9 +434,7 @@ static ssize_t read_alloc_contig_failed(struct file *file, char __user *buf,
if (!record.handle)
return 0;
return print_page_pinner(buf, count, record.pfn, record.page_mt,
record.page_flags, record.ts_usec,
record.handle, 0);
return print_page_pinner(false, buf, count, &record);
}
static const struct file_operations proc_alloc_contig_failed_operations = {
@ -428,7 +449,7 @@ static int pp_threshold_set(void *data, unsigned long long val)
spin_lock_irqsave(&lt_pinner.lock, flags);
memset(lt_pinner.pinner, 0,
sizeof(struct captured_pinner) * LONTERM_PIN_BUCKETS);
sizeof(struct captured_pinner) * LONGTERM_PIN_BUCKETS);
lt_pinner.index = 0;
spin_unlock_irqrestore(&lt_pinner.lock, flags);
return 0;

View File

@ -38,9 +38,15 @@
#include <linux/hugetlb.h>
#include <linux/frontswap.h>
#include <linux/fs_parser.h>
#include <linux/mm_inline.h>
#include <asm/tlbflush.h> /* for arch/microblaze update_mmu_cache() */
#include "internal.h"
#undef CREATE_TRACE_POINTS
#include <trace/hooks/shmem_fs.h>
static struct vfsmount *shm_mnt;
#ifdef CONFIG_SHMEM
@ -1559,7 +1565,11 @@ static struct page *shmem_alloc_page(gfp_t gfp,
struct shmem_inode_info *info, pgoff_t index)
{
struct vm_area_struct pvma;
struct page *page;
struct page *page = NULL;
trace_android_vh_shmem_alloc_page(&page);
if (page)
return page;
shmem_pseudo_vma_init(&pvma, info, index);
page = alloc_page_vma(gfp, &pvma, 0);
@ -4290,3 +4300,41 @@ void shmem_mark_page_lazyfree(struct page *page)
mark_page_lazyfree_movetail(page);
}
EXPORT_SYMBOL_GPL(shmem_mark_page_lazyfree);
int reclaim_shmem_address_space(struct address_space *mapping)
{
pgoff_t start = 0;
struct page *page;
LIST_HEAD(page_list);
int reclaimed;
XA_STATE(xas, &mapping->i_pages, start);
if (!shmem_mapping(mapping))
return -EINVAL;
lru_add_drain();
rcu_read_lock();
xas_for_each(&xas, page, ULONG_MAX) {
if (xas_retry(&xas, page))
continue;
if (xa_is_value(page))
continue;
if (isolate_lru_page(page))
continue;
list_add(&page->lru, &page_list);
inc_node_page_state(page, NR_ISOLATED_ANON +
page_is_file_lru(page));
if (need_resched()) {
xas_pause(&xas);
cond_resched_rcu();
}
}
rcu_read_unlock();
reclaimed = reclaim_pages_from_list(&page_list);
return reclaimed;
}
EXPORT_SYMBOL_GPL(reclaim_shmem_address_space);

View File

@ -3813,7 +3813,7 @@ static void free_swap_count_continuations(struct swap_info_struct *si)
}
#if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
void cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask)
{
struct swap_info_struct *si, *next;
int nid = page_to_nid(page);

View File

@ -27,6 +27,9 @@
#include <linux/uaccess.h>
#include "internal.h"
#ifndef __GENKSYMS__
#include <trace/hooks/syscall_check.h>
#endif
/**
* kfree_const - conditionally free memory
@ -354,6 +357,7 @@ unsigned long arch_mmap_rnd(void)
return rnd << PAGE_SHIFT;
}
EXPORT_SYMBOL_GPL(arch_mmap_rnd);
static int mmap_is_legacy(struct rlimit *rlim_stack)
{
@ -511,6 +515,7 @@ unsigned long vm_mmap_pgoff(struct file *file, unsigned long addr,
if (populate)
mm_populate(ret, populate);
}
trace_android_vh_check_mmap_file(file, prot, flag, ret);
return ret;
}

View File

@ -21,6 +21,8 @@
#include <linux/printk.h>
#include <linux/vmpressure.h>
#include <trace/hooks/mm.h>
/*
* The window size (vmpressure_win) is the number of scanned pages before
* we try to analyze scanned/reclaimed ratio. So the window is used as a
@ -240,7 +242,17 @@ static void vmpressure_work_fn(struct work_struct *work)
void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
unsigned long scanned, unsigned long reclaimed)
{
struct vmpressure *vmpr = memcg_to_vmpressure(memcg);
struct vmpressure *vmpr;
bool bypass = false;
if (mem_cgroup_disabled())
return;
vmpr = memcg_to_vmpressure(memcg);
trace_android_vh_vmpressure(memcg, &bypass);
if (unlikely(bypass))
return;
/*
* Here we only want to account pressure that userland is able to

View File

@ -1562,6 +1562,36 @@ unsigned int reclaim_clean_pages_from_list(struct zone *zone,
return nr_reclaimed;
}
int reclaim_pages_from_list(struct list_head *page_list)
{
struct scan_control sc = {
.gfp_mask = GFP_KERNEL,
.priority = DEF_PRIORITY,
.may_writepage = 1,
.may_unmap = 1,
.may_swap = 1,
};
unsigned long nr_reclaimed;
struct reclaim_stat dummy_stat;
struct page *page;
list_for_each_entry(page, page_list, lru)
ClearPageActive(page);
nr_reclaimed = shrink_page_list(page_list, NULL, &sc,
&dummy_stat, false);
while (!list_empty(page_list)) {
page = lru_to_page(page_list);
list_del(&page->lru);
dec_node_page_state(page, NR_ISOLATED_ANON +
page_is_file_lru(page));
putback_lru_page(page);
}
return nr_reclaimed;
}
/*
* Attempt to remove the specified page from its LRU. Only take this page
* if it is of the appropriate PageActive status. Pages which are being
@ -3389,6 +3419,7 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg,
return nr_reclaimed;
}
EXPORT_SYMBOL_GPL(try_to_free_mem_cgroup_pages);
#endif
static void age_active_anon(struct pglist_data *pgdat,

View File

@ -146,6 +146,7 @@
#include <net/devlink.h>
#include <linux/pm_runtime.h>
#include <linux/prandom.h>
#include <trace/hooks/net.h>
#include "net-sysfs.h"
@ -510,6 +511,12 @@ static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
static inline struct list_head *ptype_head(const struct packet_type *pt)
{
struct list_head vendor_pt = { .next = NULL, };
trace_android_vh_ptype_head(pt, &vendor_pt);
if (vendor_pt.next)
return vendor_pt.next;
if (pt->type == htons(ETH_P_ALL))
return pt->dev ? &pt->dev->ptype_all : &ptype_all;
else

View File

@ -3244,9 +3244,6 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb)
u32 off = skb_mac_header_len(skb);
int ret;
if (skb_is_gso(skb) && !skb_is_gso_tcp(skb))
return -ENOTSUPP;
ret = skb_cow(skb, len_diff);
if (unlikely(ret < 0))
return ret;
@ -3258,17 +3255,11 @@ static int bpf_skb_proto_4_to_6(struct sk_buff *skb)
if (skb_is_gso(skb)) {
struct skb_shared_info *shinfo = skb_shinfo(skb);
/* SKB_GSO_TCPV4 needs to be changed into
* SKB_GSO_TCPV6.
*/
/* SKB_GSO_TCPV4 needs to be changed into SKB_GSO_TCPV6. */
if (shinfo->gso_type & SKB_GSO_TCPV4) {
shinfo->gso_type &= ~SKB_GSO_TCPV4;
shinfo->gso_type |= SKB_GSO_TCPV6;
}
/* Header must be checked, and gso_segs recomputed. */
shinfo->gso_type |= SKB_GSO_DODGY;
shinfo->gso_segs = 0;
}
skb->protocol = htons(ETH_P_IPV6);
@ -3283,9 +3274,6 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb)
u32 off = skb_mac_header_len(skb);
int ret;
if (skb_is_gso(skb) && !skb_is_gso_tcp(skb))
return -ENOTSUPP;
ret = skb_unclone(skb, GFP_ATOMIC);
if (unlikely(ret < 0))
return ret;
@ -3297,17 +3285,11 @@ static int bpf_skb_proto_6_to_4(struct sk_buff *skb)
if (skb_is_gso(skb)) {
struct skb_shared_info *shinfo = skb_shinfo(skb);
/* SKB_GSO_TCPV6 needs to be changed into
* SKB_GSO_TCPV4.
*/
/* SKB_GSO_TCPV6 needs to be changed into SKB_GSO_TCPV4. */
if (shinfo->gso_type & SKB_GSO_TCPV6) {
shinfo->gso_type &= ~SKB_GSO_TCPV6;
shinfo->gso_type |= SKB_GSO_TCPV4;
}
/* Header must be checked, and gso_segs recomputed. */
shinfo->gso_type |= SKB_GSO_DODGY;
shinfo->gso_segs = 0;
}
skb->protocol = htons(ETH_P_IP);

View File

@ -76,6 +76,7 @@
#include <linux/capability.h>
#include <linux/user_namespace.h>
#include <linux/indirect_call_wrapper.h>
#include <trace/hooks/net.h>
#include "datagram.h"
@ -701,6 +702,7 @@ void kfree_skb(struct sk_buff *skb)
if (!skb_unref(skb))
return;
trace_android_vh_kfree_skb(skb);
trace_kfree_skb(skb, __builtin_return_address(0));
__kfree_skb(skb);
}

View File

@ -80,6 +80,7 @@
#include <linux/jump_label_ratelimit.h>
#include <net/busy_poll.h>
#include <net/mptcp.h>
#include <trace/hooks/net.h>
int sysctl_tcp_max_orphans __read_mostly = NR_FILE;
@ -4618,6 +4619,7 @@ static bool tcp_ooo_try_coalesce(struct sock *sk,
static void tcp_drop(struct sock *sk, struct sk_buff *skb)
{
trace_android_vh_kfree_skb(skb);
sk_drops_add(sk, skb);
__kfree_skb(skb);
}