Commit Graph

479 Commits

Author SHA1 Message Date
Greg Kroah-Hartman
9c2a5eef8f Merge tag 'android12-5.10.117_r00' into 'android12-5.10'
This is the merge of the upstream LTS release of 5.10.117 into the
android12-5.10 branch.

It contains the following commits:

fdd06dc6b0 ANDROID: GKI: db845c: Update symbols list and ABI
0974b8411a Merge 5.10.117 into android12-5.10-lts
7686a5c2a8 Linux 5.10.117
937c6b0e3e SUNRPC: Fix fall-through warnings for Clang
29f077d070 io_uring: always use original task when preparing req identity
1444e0568b usb: gadget: uvc: allow for application to cleanly shutdown
42505e3622 usb: gadget: uvc: rename function to be more consistent
002e7223dc ping: fix address binding wrt vrf
d9a1e82bf6 arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map
49750c5e9a net: phy: Fix race condition on link status change
e68b60ae29 SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()
dbe6974a39 SUNRPC: Don't call connect() more than once on a TCP socket
47541ed4d4 SUNRPC: Prevent immediate close+reconnect
2ab569edd8 SUNRPC: Clean up scheduling of autoclose
85844ea29f drm/vmwgfx: Initialize drm_mode_fb_cmd2
7e849dbe60 cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp()
6aa239d82e net: atlantic: always deep reset on pm op, fixing up my null deref regression
6158df4fa5 i40e: i40e_main: fix a missing check on list iterator
819796024c drm/nouveau/tegra: Stop using iommu_present()
e06605af8b ceph: fix setting of xattrs on async created inodes
86db01f373 serial: 8250_mtk: Fix register address for XON/XOFF character
84ad84e495 serial: 8250_mtk: Fix UART_EFR register address
f8d8440f13 slimbus: qcom: Fix IRQ check in qcom_slim_probe
d7b7c5532a USB: serial: option: add Fibocom MA510 modem
2ba0034e36 USB: serial: option: add Fibocom L610 modem
319b312edb USB: serial: qcserial: add support for Sierra Wireless EM7590
994395f356 USB: serial: pl2303: add device id for HP LM930 Display
8276a3dbe2 usb: typec: tcpci_mt6360: Update for BMC PHY setting
54979aa49e usb: typec: tcpci: Don't skip cleanup in .remove() on error
7335a6b11d usb: cdc-wdm: fix reading stuck on device close
6d47eceaf3 tty: n_gsm: fix mux activation issues in gsm_config()
69139a45b8 tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe()
5a73581116 firmware_loader: use kernel credentials when reading firmware
d254309aab tcp: resalt the secret every 10 seconds
3abbfac1ab net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT
48f1dd67a8 net: emaclite: Don't advertise 1000BASE-T and do auto negotiation
5c09dbdfd4 s390: disable -Warray-bounds
03ebc6fd5c ASoC: ops: Validate input values in snd_soc_put_volsw_range()
31606a73ba ASoC: max98090: Generate notifications on changes for custom control
ce154bd3bc ASoC: max98090: Reject invalid values in custom control put()
5ecaaaeb2c hwmon: (f71882fg) Fix negative temperature
88091c0275 gfs2: Fix filesystem block deallocation for short writes
fccf4bf3f2 tls: Fix context leak on tls_device_down
161c4edeca net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe()
d5e1b41bf7 net/smc: non blocking recvmsg() return -EAGAIN when no data and signal_pending
e417a8fcea net: dsa: bcm_sf2: Fix Wake-on-LAN with mac_link_down()
9012209f43 net: bcmgenet: Check for Wake-on-LAN interrupt probe deferral
abe35bf3be net/sched: act_pedit: really ensure the skb is writable
b816ed53f3 s390/lcs: fix variable dereferenced before check
4d3c6d7418 s390/ctcm: fix potential memory leak
5497f87edc s390/ctcm: fix variable dereferenced before check
cc71c9f17c selftests: vm: Makefile: rename TARGETS to VMTARGETS
ce12e5ff8d hwmon: (ltq-cputemp) restrict it to SOC_XWAY
ceb3db723f dim: initialize all struct fields
8b1b8fc819 ionic: fix missing pci_release_regions() on error in ionic_probe()
2cb8689f45 nfs: fix broken handling of the softreval mount option
49c10784b9 mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection
79432d2237 net: sfc: fix memory leak due to ptp channel
bdb8d4aed1 sfc: Use swap() instead of open coding it
33c93f6e55 netlink: do not reset transport header in netlink_recvmsg()
9e40f2c513 drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name()
54f26fc07e ipv4: drop dst in multicast routing path
c07a84492f net: mscc: ocelot: avoid corrupting hardware counters when moving VCAP filters
abb237c544 net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0
f9674c52a1 net: mscc: ocelot: fix VCAP IS2 filters matching on both lookups
c1184d2888 net: mscc: ocelot: fix last VCAP IS1/IS2 filter persisting in hardware when deleted
e2cdde89d2 net: Fix features skip in for_each_netdev_feature()
c420d66047 mac80211: Reset MBSSID parameters upon connection
9cbf2a7d5d hwmon: (tmp401) Add OF device ID table
85eba08be2 iwlwifi: iwl-dbg: Use del_timer_sync() before freeing
a6a73781b4 batman-adv: Don't skb_split skbuffs with frag_list
0577ff1c69 Merge 5.10.116 into android12-5.10-lts
3f70116e5f Merge 5.10.115 into android12-5.10-lts
07a4d3649a Linux 5.10.116
d1ac096f88 mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and __mcopy_atomic()
c6cbf5431a mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
308ff6a6e7 mm: fix missing cache flush for all tail pages of compound page
185fa5984d Bluetooth: Fix the creation of hdev->name
9ff4a6b806 arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
dfb55dcf9d nfp: bpf: silence bitwise vs. logical OR warning
f89f76f4b0 drm/amd/display/dc/gpio/gpio_service: Pass around correct dce_{version, environment} types
efd1429fa9 block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code' explicit
a71658c7db regulator: consumer: Add missing stubs to regulator/consumer.h
7648f42d1a MIPS: Use address-of operator on section symbols
2ed28105c6 ANDROID: GKI: update the abi .xml file due to hex_to_bin() changes
ee8877df71 Revert "tcp: ensure to use the most recently sent skb when filling the rate sample"
6273d79c86 Merge 5.10.114 into android12-5.10-lts
e61686bb77 Linux 5.10.115
8528806abe mmc: rtsx: add 74 Clocks in power on flow
e1ab92302b PCI: aardvark: Fix reading MSI interrupt number
49143c9ed2 PCI: aardvark: Clear all MSIs at setup
7676a5b99f dm: interlock pending dm_io and dm_wait_for_bios_completion
a439819f47 block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern
a22d66eb51 rcu: Apply callbacks processing time limit only on softirq
40fb3812d9 rcu: Fix callbacks processing time limit retaining cond_resched()
43dbc3edad KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised
9c8474fa34 KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs
a474ee5ece KVM: x86: Do not change ICR on write to APIC_SELF_IPI
64e3e16dbc x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume
5f884e0c2e net/mlx5: Fix slab-out-of-bounds while reading resource dump menu
599fc32e74 kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU
0a960a3672 net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter()
4fd45ef704 btrfs: always log symlinks in full mode
687167eef9 smsc911x: allow using IRQ0
b280877eab selftests: ocelot: tc_flower_chains: specify conform-exceed action for policer
a9fd5d6cd5 bnxt_en: Fix unnecessary dropping of RX packets
72e4fc1a4e bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag
9ac9f07f0f selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface is operational
475237e807 hinic: fix bug of wq out of bound access
1b9f1f455d net: emaclite: Add error handling for of_address_to_resource()
8459485db7 net: cpsw: add missing of_node_put() in cpsw_probe_dt()
4eee980950 net: stmmac: dwmac-sun8i: add missing of_node_put() in sun8i_dwmac_register_mdio_mux()
2347e9c922 net: dsa: mt7530: add missing of_node_put() in mt7530_setup()
1092656cc4 net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init()
408fb2680e NFSv4: Don't invalidate inode attributes on delegation return
c1b480e6be RDMA/siw: Fix a condition race issue in MPA request processing
5bf2a45e33 selftests/seccomp: Don't call read() on TTY from background pgrp
3ea0b44c01 net/mlx5: Avoid double clear or set of sync reset requested
2455331591 net/mlx5e: Fix the calling of update_buffer_lossy() API
e07c13fbdd net/mlx5e: CT: Fix queued up restore put() executing after relevant ft release
d8338a7a09 net/mlx5e: Don't match double-vlan packets if cvlan is not set
c7f87ad115 net/mlx5e: Fix trust state reset in reload
87f0d9a518 ASoC: dmaengine: Restore NULL prepare_slave_config() callback
ad87f8498e hwmon: (adt7470) Fix warning on module removal
997b8605e8 gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask not set)
879b075a9a NFC: netlink: fix sleep in atomic bug when firmware download timeout
1961c5a688 nfc: nfcmrvl: main: reorder destructive operations in nfcmrvl_nci_unregister_dev to avoid bugs
8a9e7c64f4 nfc: replace improper check device_is_registered() in netlink related functions
11adc9ab3e can: grcan: only use the NAPI poll budget for RX
4df5e498e0 can: grcan: grcan_probe(): fix broken system id check for errata workaround needs
dd973c0185 can: grcan: use ofdev->dev when allocating DMA memory
45bdcb5ca4 can: isotp: remove re-binding of bound socket
13959b9117 can: grcan: grcan_close(): fix deadlock
6c7c0e131e s390/dasd: Fix read inconsistency for ESE DASD devices
6e02c0413a s390/dasd: Fix read for ESE with blksize < 4k
ecc8396827 s390/dasd: prevent double format of tracks for ESE devices
30e008ab3f s390/dasd: fix data corruption for ESE devices
d53d47fadd ASoC: meson: Fix event generation for AUI CODEC mux
93a1f0755e ASoC: meson: Fix event generation for G12A tohdmi mux
e8b08e2f17 ASoC: meson: Fix event generation for AUI ACODEC mux
954d55170f ASoC: wm8958: Fix change notifications for DSP controls
f45359824a ASoC: da7219: Fix change notifications for tone generator frequency
e6e61aab49 genirq: Synchronize interrupt thread startup
dcf1150f2e net: stmmac: disable Split Header (SPH) for Intel platforms
68f35987d4 firewire: core: extend card->lock in fw_core_handle_bus_reset
629b4003a7 firewire: remove check of list iterator against head past the loop body
e757ff4bbc firewire: fix potential uaf in outbound_phy_packet_callback()
70d25d4fba Revert "SUNRPC: attempt AF_LOCAL connect on setup"
466721d767 drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT
2e6f3d665a iommu/vt-d: Calculate mask for non-aligned flushes
fbb7c61e76 KVM: x86/svm: Account for family 17h event renumberings in amd_pmc_perf_hw_id
b085afe226 gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
2b7cb072d0 mmc: core: Set HS clock speed before sending HS CMD13
66651d7199 mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC
2906c73632 ALSA: fireworks: fix wrong return count shorter than expected by 4 bytes
03ab174805 ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers
a196f277c5 parisc: Merge model and model name into one line in /proc/cpuinfo
326f02f172 MIPS: Fix CP0 counter erratum detection for R4k CPUs
681997eca1 Revert "ipv6: make ip6_rt_gc_expire an atomic_t"
141fbd343b Revert "oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup"
ca9b002a16 Merge 5.10.113 into android12-5.10-lts
f64cd19a00 Merge branch 'android12-5.10' into `android12-5.10-lts`
f40e35e79c Linux 5.10.114
2d74f61787 perf symbol: Remove arch__symbols__fixup_end()
bf98302e68 tty: n_gsm: fix software flow control handling
95b267271a tty: n_gsm: fix incorrect UA handling
70b045d9ae tty: n_gsm: fix reset fifo race condition
320a24c4ef tty: n_gsm: fix wrong command frame length field encoding
935f314b6f tty: n_gsm: fix wrong command retry handling
17b86db43c tty: n_gsm: fix missing explicit ldisc flush
a2baa907c2 tty: n_gsm: fix wrong DLCI release order
705925e693 tty: n_gsm: fix insufficient txframe size
842a9bbbef netfilter: nft_socket: only do sk lookups when indev is available
7346e54dbf tty: n_gsm: fix malformed counter for out of frame data
d19613895e tty: n_gsm: fix wrong signal octet encoding in convergence layer type 2
26f127f6d9 tty: n_gsm: fix mux cleanup after unregister tty device
f26c271492 tty: n_gsm: fix decoupled mux resource
47132f9f7f tty: n_gsm: fix restart handling via CLD command
b3c88d46db perf symbol: Update symbols__fixup_end()
3d0a3168a3 perf symbol: Pass is_kallsyms to symbols__fixup_end()
2ab14625b8 x86/cpu: Load microcode during restore_processor_state()
795afbe8b4 thermal: int340x: Fix attr.show callback prototype
11d16498d7 net: ethernet: stmmac: fix write to sgmii_adapter_base
236dd62230 drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses
78d4dccf16 kasan: prevent cpu_quarantine corruption when CPU offline and cache shrink occur at same time
5fef6df273 zonefs: Clear inode information flags on inode creation
92ed64a920 zonefs: Fix management of open zones
42e8ec3b4b powerpc/perf: Fix 32bit compile
ac3d077043 drivers: net: hippi: Fix deadlock in rr_close()
5399e7b80c cifs: destage any unwritten data to the server before calling copychunk_write
80fc45377f x86: __memcpy_flushcache: fix wrong alignment if size > 2^32
585ef03c9e ext4: fix bug_on in start_this_handle during umount filesystem
07da0be588 ASoC: wm8731: Disable the regulator when probing fails
1b1747ad7e ASoC: Intel: soc-acpi: correct device endpoints for max98373
aa138efd2b tcp: fix F-RTO may not work correctly when receiving DSACK
9d56e369bd Revert "ibmvnic: Add ethtool private flag for driver-defined queue limits"
96904c8289 ibmvnic: fix miscellaneous checks
17f71272ef ixgbe: ensure IPsec VF<->PF compatibility
c33d717e06 net: fec: add missing of_node_put() in fec_enet_init_stop_mode()
9591967ac4 bnx2x: fix napi API usage sequence
1781beb879 tls: Skip tls_append_frag on zero copy size
77b922683e drm/amd/display: Fix memory leak in dcn21_clock_source_create
18068e0527 drm/amdkfd: Fix GWS queue count
c0396f5e5b net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK
1204386e26 net: phy: marvell10g: fix return value on error
e974c730f0 net: bcmgenet: hide status block before TX timestamping
ee71b47da5 clk: sunxi: sun9i-mmc: check return value after calling platform_get_resource()
8dacbef4fe bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create()
9f29f6f8da tcp: make sure treq->af_specific is initialized
8a9d6ca360 tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT
720b6ced85 ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode
41661b4c1a ip6_gre: Make o_seqno start from 0 in native mode
7b187fbd7e ip_gre: Make o_seqno start from 0 in native mode
83d128daff net/smc: sync err code when tcp connection was refused
9eb25e00f5 net: hns3: add return value for mailbox handling in PF
929c30c02d net: hns3: add validity check for message data length
e3ec78d82d net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
06a40e7105 cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe
fb172e93f8 pinctrl: pistachio: fix use of irq_of_parse_and_map()
8f042884af arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock
73c35379db ARM: dts: imx6ull-colibri: fix vqmmc regulator
61a89d0a5b sctp: check asoc strreset_chunk in sctp_generate_reconf_event
41d6ac687d wireguard: device: check for metadata_dst with skb_valid_dst()
3c464db03c tcp: ensure to use the most recently sent skb when filling the rate sample
ce4c3f7087 pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ requested
0c60271df0 tcp: md5: incorrect tcp_header_len for incoming connections
f4dad5a48d pinctrl: rockchip: fix RK3308 pinmux bits
9ef33d23f8 bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit lwt hook
6ac03e6ddd netfilter: nft_set_rbtree: overlap detection with element re-addition after deletion
72ae15d5ce net: dsa: Add missing of_node_put() in dsa_port_link_register_of
14cc2044c1 memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode
690c1bc4bf pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs in EOI
6f2bf9c5dd mtd: fix 'part' field data corruption in mtd_info
4da421035b mtd: rawnand: Fix return value check of wait_for_completion_timeout
94ca69b702 pinctrl: mediatek: moore: Fix build error
123b7e0388 ipvs: correctly print the memory size of ip_vs_conn_tab
f4446f2136 ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35
4a526cc29c ARM: dts: am3517-evm: Fix misc pinmuxing
b622bca852 ARM: dts: Fix mmc order for omap3-gta04
9419d27fe1 phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe
9e00a6e1fd phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe
eb659608e6 ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name
bb524f5a95 ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek
4691ce8f28 phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks
76d1591a38 bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific
1b9855bf31 ARM: OMAP2+: Fix refcount leak in omap_gic_of_init
93cc8f184e phy: samsung: exynos5250-sata: fix missing device put in probe error paths
3ca7491570 phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe
8f7644ac24 ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue
23b0711fcd USB: Fix xhci event ring dequeue pointer ERDP update issue
712302aed1 mtd: rawnand: fix ecc parameters for mt7622
207c7af341 iio:imu:bmi160: disable regulator in error path
70d2df257e arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards
2d320609be arm64: dts: meson: remove CPU opps below 1GHz for G12B boards
c4fb41bdf4 video: fbdev: udlfb: properly check endpoint type
0967830e72 iocost: don't reset the inuse weight of under-weighted debtors
ad604cbd1d x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests
8fcce58c59 riscv: patch_text: Fixup last cpu should be master
51477d3b38 hex2bin: fix access beyond string end
616d354fb9 hex2bin: make the function hex_to_bin constant-time
1633cb2d4a pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config
bdc3ad9251 arch_topology: Do not set llc_sibling if llc_id is invalid
aaee3f6617 serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
662f945a20 serial: 8250: Also set sticky MCR bits in console restoration
8be962c89d serial: imx: fix overrun interrupts in DMA mode
d22d92230f usb: phy: generic: Get the vbus supply
b820764c64 usb: cdns3: Fix issue for clear halt endpoint
bd7f84708e usb: dwc3: gadget: Return proper request status
a633b8c341 usb: dwc3: core: Only handle soft-reset in DCTL
5fa59bb867 usb: dwc3: core: Fix tx/rx threshold settings
140801d3fb usb: dwc3: Try usb-role-switch first in dwc3_drd_init
4dd5feb279 usb: gadget: configfs: clear deactivation flag in configfs_composite_unbind()
6c3da0e19c usb: gadget: uvc: Fix crash when encoding data for usb request
fb1fe1a455 usb: typec: ucsi: Fix role swapping
06826eb063 usb: typec: ucsi: Fix reuse of completion structure
7b510d4bb4 usb: misc: fix improper handling of refcount in uss720_probe()
bb8ecca2dd iio: imu: inv_icm42600: Fix I2C init possible nack
ca2b54b6ad iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
1060604fc7 iio: dac: ad5446: Fix read_raw not returning set value
6ff33c01be iio: dac: ad5592r: Fix the missing return value.
06ada9487f xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms
e1be000166 xhci: stop polling roothubs after shutdown
2eb6c86891 xhci: Enable runtime PM on second Alderlake controller
63eda431b2 USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions
e9971dac69 USB: serial: option: add support for Cinterion MV32-WA/MV32-WB
34ff5455ee USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader
729a81ae10 USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS
008ba29f33 USB: quirks: add STRING quirk for VCOM device
ac6ad0ef83 USB: quirks: add a Realtek card reader
8ba02cebb7 usb: mtu3: fix USB 3.0 dual-role-switch from device to host
549209caab lightnvm: disable the subsystem
54c028cfc4 floppy: disable FDRAWCMD by default
de64d941a7 Merge 5.10.112 into android12-5.10-lts
54af9dd2b9 Linux 5.10.113
7992fdb045 Revert "net: micrel: fix KS8851_MLL Kconfig"
8bedbc8f7f block/compat_ioctl: fix range check in BLKGETSIZE
fea24b07ed staging: ion: Prevent incorrect reference counting behavour
dccee748af spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller
572761645b jbd2: fix a potential race while discarding reserved buffers after an abort
50aac44273 can: isotp: stop timeout monitoring when no first frame was sent
e1e96e3727 ext4: force overhead calculation if the s_overhead_cluster makes no sense
4789149b9e ext4: fix overhead calculation to account for the reserved gdt blocks
0c54b09376 ext4, doc: fix incorrect h_reserved size
22c450d39f ext4: limit length to bitmap_maxbytes - blocksize in punch_hole
75ac724684 ext4: fix use-after-free in ext4_search_dir
a46b3d8498 ext4: fix symlink file size not match to file content
f6038d43b2 ext4: fix fallocate to use file_modified to update permissions consistently
19590bbc69 perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE event
e012f9d1af powerpc/perf: Fix power9 event alternatives
0a2cef65b3 drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage
f8f8b3124b KVM: PPC: Fix TCE handling for VFIO
405d984274 drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare
231381f521 drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised
51d9cbbb0f perf/core: Fix perf_mmap fail when CONFIG_PERF_USE_VMALLOC enabled
88fcfd6ee6 sched/pelt: Fix attach_entity_load_avg() corner case
c55327bc37 arm_pmu: Validate single/group leader events
5580b974a8 ARC: entry: fix syscall_trace_exit argument
7082650eb8 e1000e: Fix possible overflow in LTR decoding
43a2a3734a ASoC: soc-dapm: fix two incorrect uses of list iterator
54e6180c8c gpio: Request interrupts after IRQ is initialized
0837ff17d0 openvswitch: fix OOB access in reserve_sfa_size()
19f6dcb1f0 xtensa: fix a7 clobbering in coprocessor context load/store
f399ab11dd xtensa: patch_text: Fixup last cpu should be master
ba2716da23 net: atlantic: invert deep par in pm functions, preventing null derefs
358a3846f6 dma: at_xdmac: fix a missing check on list iterator
cf23a960c5 ata: pata_marvell: Check the 'bmdma_addr' beforing reading
9ca66d7914 mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove()
ed5d4efb4d oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup
6b932920b9 mm, hugetlb: allow for "high" userspace addresses
50cbc583fa EDAC/synopsys: Read the error count from the correct register
7ec6e06ee4 nvme-pci: disable namespace identifiers for Qemu controllers
316bd86c22 nvme: add a quirk to disable namespace identifiers
76101c8e0c stat: fix inconsistency between struct stat and struct compat_stat
bf28bba304 scsi: qedi: Fix failed disconnect handling
a284cca3d8 net: macb: Restart tx only if queue pointer is lagging
9581e07b54 drm/msm/mdp5: check the return of kzalloc()
8d71edabb0 dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info()
b3afe5a7fd brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant
202748f441 mt76: Fix undefined behavior due to shift overflowing the constant
0de9c104d0 net: atlantic: Avoid out-of-bounds indexing
5bef9fc38f cifs: Check the IOCB_DIRECT flag, not O_DIRECT
e129c55153 vxlan: fix error return code in vxlan_fdb_append
8e7ea11364 arm64: dts: imx: Fix imx8*-var-som touchscreen property sizes
cd227ac03f ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant
490815f0b5 platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative
cb17b56a9b reset: tegra-bpmp: Restore Handle errors in BPMP response
d513ea9b7e ARM: vexpress/spc: Avoid negative array index when !SMP
052e4a661f arm64: mm: fix p?d_leaf()
18ff7a2efa arm64/mm: Remove [PUD|PMD]_TABLE_BIT from [pud|pmd]_bad()
3bf8ca3501 selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packets
520aab8b72 dmaengine: idxd: add RO check for wq max_transfer_size write
9a3c026dc3 dmaengine: idxd: add RO check for wq max_batch_size write
f593f49fcd net: stmmac: Use readl_poll_timeout_atomic() in atomic state
3d55b19574 netlink: reset network and mac headers in netlink_dump()
49516e6ed9 ipv6: make ip6_rt_gc_expire an atomic_t
078d839f11 l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using netdev_master_upper_dev_get_rcu
0ac8f83d8f net/sched: cls_u32: fix possible leak in u32_init_knode()
93366275be ip6_gre: Fix skb_under_panic in __gre6_xmit()
200f96ebb3 ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit()
8fb76adb89 net/packet: fix packet_sock xmit return value checking
a499cb5f3e net/smc: Fix sock leak when release after smc_shutdown()
60592f16a4 rxrpc: Restore removed timer deletion
fc7116a79a igc: Fix BUG: scheduling while atomic
46b0e4f998 igc: Fix infinite loop in release_swfw_sync
c075c3ea03 esp: limit skb_page_frag_refill use to a single page
3f7914dbea spi: spi-mtk-nor: initialize spi controller after resume
f714abf28f dmaengine: mediatek:Fix PM usage reference leak of mtk_uart_apdma_alloc_chan_resources
9bc949a181 dmaengine: imx-sdma: Fix error checking in sdma_event_remap
12aa8021c7 ASoC: codecs: wcd934x: do not switch off SIDO Buck when codec is in use
b6f474cd30 ASoC: msm8916-wcd-digital: Check failure for devm_snd_soc_register_component
608fc58858 ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek
d29c78d3f9 dm: fix mempool NULL pointer race when completing IO
cf9b195464 ALSA: hda/realtek: Add quirk for Clevo NP70PNP
8ce3820fc9 ALSA: usb-audio: Clear MIDI port active flag after draining
43ce33a68e net/sched: cls_u32: fix netns refcount changes in u32_change()
04dd45d977 gfs2: assign rgrp glock before compute_bitstructs
378061c9b8 perf tools: Fix segfault accessing sample_id xyarray
5e8446e382 tracing: Dump stacktrace trigger to the corresponding instance
69848f9488 mm: page_alloc: fix building error on -Werror=array-compare
08ad7a770e etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overead
904c5c08bb ANDROID: fix up gpio change in 5.10.111
5dadf6321c Merge 5.10.111 into android12-5.10-lts
1052f9bce6 Linux 5.10.112
5c62d3bf14 ax25: Fix UAF bugs in ax25 timers
f934fa478d ax25: Fix NULL pointer dereferences in ax25 timers
145ea8d213 ax25: fix NPD bug in ax25_disconnect
a4942c6fea ax25: fix UAF bug in ax25_send_control()
b20a5ab0f5 ax25: Fix refcount leaks caused by ax25_cb_del()
57cc15f5fd ax25: fix UAF bugs of net_device caused by rebinding operation
5ddae8d064 ax25: fix reference count leaks of ax25_dev
5ea00fc606 ax25: add refcount in ax25_dev to avoid UAF bugs
361288633b scsi: iscsi: Fix unbound endpoint error handling
129db30599 scsi: iscsi: Fix endpoint reuse regression
26f827e095 dma-direct: avoid redundant memory sync for swiotlb
9a5a4d23e2 timers: Fix warning condition in __run_timers()
84837f43e5 i2c: pasemi: Wait for write xfers to finish
89496d80bf smp: Fix offline cpu check in flush_smp_call_function_queue()
cd02b2687d dm integrity: fix memory corruption when tag_size is less than digest size
0a312ec66a ARM: davinci: da850-evm: Avoid NULL pointer dereference
0806f19305 tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
0275c75955 genirq/affinity: Consider that CPUs on nodes can be unbalanced
1fcfe37d17 drm/amdgpu: Enable gfxoff quirk on MacBook Pro
68ae52efa1 drm/amd/display: don't ignore alpha property on pre-multiplied mode
a263712ba8 ipv6: fix panic when forwarding a pkt with no in6 dev
659214603b nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size
912797e54c ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
48d070ca5e ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers
163e162471 ALSA: hda/realtek: Add quirk for Clevo PD50PNT
5e4dd17998 btrfs: mark resumed async balance as writing
1d2eda18f6 btrfs: fix root ref counts in error handling in btrfs_get_root_ref
9b7ec35253 ath9k: Fix usage of driver-private space in tx_info
0f65cedae5 ath9k: Properly clear TX status area before reporting to mac80211
cc21ae9326 gcc-plugins: latent_entropy: use /dev/urandom
c089ffc846 memory: renesas-rpc-if: fix platform-device leak in error path
342454231e KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded
06c348fde5 mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
20ed94f818 mm: fix unexpected zeroed page mapping with zram swap
192e507ef8 mm, page_alloc: fix build_zonerefs_node()
000b3921b4 perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant
ca24c5e8f0 drivers: net: slip: fix NPD bug in sl_tx_timeout()
e8cf1e4d95 scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan
5b7ce74b6b scsi: mvsas: Add PCI ID of RocketRaid 2640
4b44cd5840 drm/amd/display: Fix allocate_mst_payload assert on resume
34ea097fb6 drm/amd/display: Revert FEC check in validation
fa5ee7c423 myri10ge: fix an incorrect free for skb in myri10ge_sw_tso
d90df6da50 net: usb: aqc111: Fix out-of-bounds accesses in RX fixup
9c12fcf1d8 net: axienet: setup mdio unconditionally
b643807a73 tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry
98973d2bdd arm64: alternatives: mark patch_alternative() as `noinstr`
2462faffbf regulator: wm8994: Add an off-on delay for WM8994 variant
aa8cdedaf7 gpu: ipu-v3: Fix dev_dbg frequency output
150fe861c5 ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
1ff5359afa net: micrel: fix KS8851_MLL Kconfig
d3478709ed scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
b9a110fa75 scsi: lpfc: Fix queue failures when recovering from PCI parity error
aec36b98a1 scsi: target: tcmu: Fix possible page UAF
4366679805 Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
1d7a5aae88 drm/amdkfd: Check for potential null return of kmalloc_array()
e5afacc826 drm/amdgpu/vcn: improve vcn dpg stop procedure
d2e0931e6d drm/amdkfd: Fix Incorrect VMIDs passed to HWS
7fc0610ad8 drm/amd/display: Update VTEM Infopacket definition
6906e05cf3 drm/amd/display: FEC check in timing validation
756c61c168 drm/amd/display: fix audio format not updated after edid updated
76e086ce7b btrfs: do not warn for free space inode in cow_file_range
217190dc66 btrfs: fix fallocate to use file_modified to update permissions consistently
9b5d1b3413 drm/amd: Add USBC connector ID
6f9c06501d net: bcmgenet: Revert "Use stronger register read/writes to assure ordering"
504c15f07f dm mpath: only use ktime_get_ns() in historical selector
4e166a4118 cifs: potential buffer overflow in handling symlinks
67677050ce nfc: nci: add flush_workqueue to prevent uaf
bfba9722cf perf tools: Fix misleading add event PMU debug message
280f721edc testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set
eb8873b324 sctp: Initialize daddr on peeled off socket
45226fac4d scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
73805795c9 scsi: iscsi: Fix offload conn cleanup when iscsid restarts
699bd835c3 scsi: iscsi: Move iscsi_ep_disconnect()
46f37a34a5 scsi: iscsi: Fix in-kernel conn failure handling
8125738967 scsi: iscsi: Rel ref after iscsi_lookup_endpoint()
22608545b8 scsi: iscsi: Use system_unbound_wq for destroy_work
4029a1e992 scsi: iscsi: Force immediate failure during shutdown
17d14456f6 scsi: iscsi: Stop queueing during ep_disconnect
da9cf24aa7 scsi: pm80xx: Enable upper inbound, outbound queues
e08d269712 scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
35b91e49bc net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
98a7f6c4ad drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init()
5f78ad9383 drm/msm: Fix range size vs end confusion
5513f9a0b0 cfg80211: hold bss_lock while updating nontrans_list
a44938950e net/sched: taprio: Check if socket flags are valid
08d5e3e954 net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link
2ad9d890d8 net: dsa: felix: suppress -EPROBE_DEFER errors
f2cc341fcc net/sched: fix initialization order when updating chain 0 head
7a7cf84148 mlxsw: i2c: Fix initialization error flow
43e58e119a net: mdio: Alphabetically sort header inclusion
9709c8b5cd gpiolib: acpi: use correct format characters
d67c900f19 veth: Ensure eth header is in skb's linear part
845f44ce3d net/sched: flower: fix parsing of ethertype following VLAN header
85ee17ca21 SUNRPC: Fix the svc_deferred_event trace class
af12dd7123 media: rockchip/rga: do proper error checking in probe
5637129712 firmware: arm_scmi: Fix sorting of retrieved clock rates
16c628b0c6 memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
cb66641f81 drm/msm: Add missing put_task_struct() in debugfs path
921fdc45a0 btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()
5d131318bb ACPI: processor idle: Check for architectural support for LPI
503934df31 cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function
cfa98ffc42 hamradio: remove needs_free_netdev to avoid UAF
80a4df1464 hamradio: defer 6pack kfree after unregister_netdev
f0c31f192f drm/amdkfd: Use drm_priv to pass VM from KFD to amdgpu
6c8e5cb264 Linux 5.10.111
d36febbcd5 powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit
5c672073bc mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning
5973f7507a irqchip/gic, gic-v3: Prevent GSI to SGI translations
000e09462f Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb()
e1f540b752 arm64: module: remove (NOLOAD) from linker script
919823bd67 selftests: cgroup: Test open-time cgroup namespace usage for migration checks
637eca44b8 selftests: cgroup: Test open-time credential usage for migration checks
9dd39d2c65 selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644
e74da71e66 selftests/cgroup: Fix build on older distros
4665722d36 cgroup: Use open-time credentials for process migraton perm checks
f089471d1b mm: don't skip swap entry even if zap_details specified
58823a9b09 ubsan: remove CONFIG_UBSAN_OBJECT_SIZE
03b39bbbec dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"
40e00885a6 tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts
75c8558d41 tools build: Filter out options and warnings not supported by clang
6374faf49e perf python: Fix probing for some clang command line options
79abc219ba perf build: Don't use -ffat-lto-objects in the python feature test when building with clang-13
82e4395014 drm/amdkfd: Create file descriptor after client is added to smi_clients list
326b408e7e drm/nouveau/pmu: Add missing callbacks for Tegra devices
786ae8de3a drm/amdgpu/smu10: fix SoC/fclk units in auto mode
ff24114bb0 irqchip/gic-v3: Fix GICR_CTLR.RWP polling
451214b266 perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator
fc629224aa ata: sata_dwc_460ex: Fix crash due to OOB write
7e88a50704 gpio: Restrict usage of GPIO chip irq members before initialization
5f54364ff6 RDMA/hfi1: Fix use-after-free bug for mm struct
8bb4168291 arm64: patch_text: Fixup last cpu should be master
a044bca8ef btrfs: prevent subvol with swapfile from being deleted
82ae73ac96 btrfs: fix qgroup reserve overflow the qgroup limit
fc4bdaed4d x86/speculation: Restore speculation related MSRs during S3 resume
8c9e26c890 x86/pm: Save the MSR validity status at context setup
2827328e64 io_uring: fix race between timeout flush and removal
f7e183b0a7 mm/mempolicy: fix mpol_new leak in shared_policy_replace
7d659cb176 mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)
6adc01a7aa lz4: fix LZ4_decompress_safe_partial read out of bound
8b6f04b4c9 mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is complete
029b417073 mmc: mmci: stm32: correctly check all elements of sg list
41a519c05b Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning"
9de98470db arm64: Add part number for Arm Cortex-A78AE
4604b5738d perf session: Remap buf if there is no space for event
362ced3769 perf tools: Fix perf's libperf_print callback
65210fac63 perf: arm-spe: Fix perf report --mem-mode
bd905fed87 iommu/omap: Fix regression in probe for NULL pointer dereference
b3c00be2ff SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
9a45e08636 SUNRPC: Handle low memory situations in call_status()
132cbe2f18 SUNRPC: Handle ENOMEM in call_transmit_status()
aed30a2054 io_uring: don't touch scm_fp_list after queueing skb
594205b493 drbd: Fix five use after free bugs in get_initial_state
970a6bb729 bpf: Support dual-stack sockets in bpf_tcp_check_syncookie
6c17f4ef3c spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op()
8928239e5e qede: confirm skb is allocated before using
b7893388bb net: phy: mscc-miim: reject clause 45 register accesses
08ff0e74fa rxrpc: fix a race in rxrpc_exit_net()
5ae05b5eb5 net: openvswitch: fix leak of nested actions
42ab401d22 net: openvswitch: don't send internal clone attribute to the userspace.
e54ea8fc51 ice: synchronize_rcu() when terminating rings
e3dd1202ab ipv6: Fix stats accounting in ip6_pkt_drop
ffce126c95 ice: Do not skip not enabled queues in ice_vc_dis_qs_msg
b003fc4913 ice: Set txq_teid to ICE_INVAL_TEID on ring creation
ebd1e3458d dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe
43c2d7890e IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition
3a57babfb6 RDMA/mlx5: Don't remove cache MRs when a delay is needed
d8992b393f sfc: Do not free an empty page_ring
0ac74169eb bnxt_en: reserve space inside receive page for skb_shared_info
f8b0ef0a58 drm/imx: Fix memory leak in imx_pd_connector_get_modes
25bc9fd4c8 drm/imx: imx-ldb: Check for null pointer after calling kmemdup
02ab4abe5b net: stmmac: Fix unset max_speed difference between DT and non-DT platforms
63ea57478a net: ipv4: fix route with nexthop object delete warning
4be6ed0310 ice: Clear default forwarding VSI during VSI release
589154d0f1 net/tls: fix slab-out-of-bounds bug in decrypt_internal
c5f77b5953 scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()
45b9932b4d NFSv4: fix open failure with O_ACCMODE flag
c688705a39 Revert "NFSv4: Handle the special Linux file open access mode"
cf580d2e38 Drivers: hv: vmbus: Fix potential crash on module unload
0c122eb3a1 drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()
84e5dfc05f Revert "hv: utils: add PTP_1588_CLOCK to Kconfig to fix build"
3c3fbfa6dd mm: fix race between MADV_FREE reclaim and blkdev direct IO read
1753a49e26 parisc: Fix patch code locking and flushing
f7c3522030 parisc: Fix CPU affinity for Lasi, WAX and Dino chips
c74e2f6ecc NFS: Avoid writeback threads getting stuck in mempool_alloc()
34681aeddc NFS: nfsiod should not block forever in mempool_alloc()
7a506fabcf SUNRPC: Fix socket waits for write buffer space
b9c5ac0a15 jfs: prevent NULL deref in diFree
c69b442125 virtio_console: eliminate anonymous module_init & module_exit
3309b32217 serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()
9cb90f9ad5 x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy
b3882e78aa NFS: swap-out must always use STABLE writes.
d4170a2821 NFS: swap IO handling is slightly different for O_DIRECT IO
4b6f122bdf SUNRPC: remove scheduling boost for "SWAPPER" tasks.
f4fc47e71e SUNRPC/xprt: async tasks mustn't block waiting for memory
f9244d31e0 SUNRPC/call_alloc: async tasks mustn't block waiting for memory
e2b2542f74 clk: Enforce that disjoints limits are invalid
1e9b5538cf clk: ti: Preserve node in ti_dt_clocks_register()
a2a0e04f64 xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32
4a2544ce24 NFSv4: Protect the state recovery thread against direct reclaim
9b9feec97c NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify()
2e16895d06 w1: w1_therm: fixes w1_seq for ds28ea00 sensors
93498c6e77 staging: wfx: fix an error handling in wfx_init_common()
8f1d24f85f phy: amlogic: meson8b-usb2: Use dev_err_probe()
aa0b729678 staging: vchiq_core: handle NULL result of find_service_by_handle
be4ecca958 clk: si5341: fix reported clk_rate when output divider is 2
c9cf6baabf minix: fix bug when opening a file with O_DIRECT
8d9efd4434 init/main.c: return 1 from handled __setup() functions
f442978612 ceph: fix memory leak in ceph_readdir when note_last_dentry returns error
d745512d54 netlabel: fix out-of-bounds memory accesses
2cc803804e Bluetooth: Fix use after free in hci_send_acl
789621df19 MIPS: ingenic: correct unit node address
61e25021e6 xtensa: fix DTC warning unit_address_format
f6b9550f53 usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm
a4dd3e9e5a net: sfp: add 2500base-X quirk for Lantech SFP module
278b652f0a net: limit altnames to 64k total
423e7107f6 net: account alternate interface name memory
74c4d50255 can: isotp: set default value for N_As to 50 micro seconds
1d7effe5ff scsi: libfc: Fix use after free in fc_exch_abts_resp()
02222bf4f0 powerpc/secvar: fix refcount leak in format_show()
fd416c3f5a MIPS: fix fortify panic when copying asm exception handlers
7c657c0694 PCI: endpoint: Fix misused goto label
79cfc0052f bnxt_en: Eliminate unintended link toggle during FW reset
9567d54e70 Bluetooth: use memset avoid memory leaks
f9b183f133 Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg}
647b35aaf4 tuntap: add sanity checks about msg_controllen in sendmsg
797b4ea951 macvtap: advertise link netns via netlink
142ae7d4f2 mips: ralink: fix a refcount leak in ill_acc_of_setup()
f2565cb40e net/smc: correct settings of RMB window update limit
224903cc60 scsi: hisi_sas: Free irq vectors in order for v3 HW
f49ffaa85d scsi: aha152x: Fix aha152x_setup() __setup handler return value
91ee8a14ef mt76: mt7615: Fix assigning negative values to unsigned variable
d83574666b scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req()
a0bb65eadb scsi: pm8001: Fix tag leaks on error
2051044d79 scsi: pm8001: Fix task leak in pm8001_send_abort_all()
3bd9a28798 scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
ef969095c4 scsi: pm8001: Fix pm80xx_pci_mem_copy() interface
fe4b6d5a0d drm/amdkfd: make CRAT table missing message informational only
2f2f017ea8 dm: requeue IO if mapping table not yet available
71c8df33fd dm ioctl: prevent potential spectre v1 gadget
f655b724b4 ipv4: Invalidate neighbour for broadcast address upon address addition
bae03957e8 iwlwifi: mvm: Correctly set fragmented EBS
9538563d31 power: supply: axp288-charger: Set Vhold to 4.4V
c66cc04043 PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
b1b27b0e8d tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH.
b02a1a6502 PCI: endpoint: Fix alignment fault error in copy tests
4820847e8b usb: ehci: add pci device support for Aspeed platforms
0b9cf0b599 iommu/arm-smmu-v3: fix event handling soft lockup
e07e420a00 PCI: aardvark: Fix support for MSI interrupts
6694b8643b drm/amdgpu: Fix recursive locking warning
ea21eaea7f powerpc: Set crashkernel offset to mid of RMA region
fb5ac62fbe ipv6: make mc_forwarding atomic
5baf92a2c4 libbpf: Fix build issue with llvm-readelf
26a1e4739e cfg80211: don't add non transmitted BSS to 6GHz scanned channels
9a56e2b271 mt76: dma: initialize skip_unmap in mt76_dma_rx_fill
b42b6d0ec3 power: supply: axp20x_battery: properly report current when discharging
de9505936c scsi: bfa: Replace snprintf() with sysfs_emit()
ed7db95920 scsi: mvsas: Replace snprintf() with sysfs_emit()
995f517888 bpf: Make dst_port field in struct bpf_sock 16-bit wide
339bd0b55e ath11k: mhi: use mhi_sync_power_up()
c6a815f5ab ath11k: fix kernel panic during unload/load ath11k modules
e4d2d72013 powerpc: dts: t104xrdb: fix phy type for FMAN 4/5
02e2ee8619 ptp: replace snprintf with sysfs_emit
9ea17b9f1d usb: gadget: tegra-xudc: Fix control endpoint's definitions
07971b818e usb: gadget: tegra-xudc: Do not program SPARAM
927beb05aa drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj
85313d9bc7 drm/amd/display: Add signal type check when verify stream backends same
9d7d83d039 ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111
850c4351e8 drm: Add orientation quirk for GPD Win Max
a24479c5e9 KVM: x86/emulator: Emulate RDPID only if it is enabled in guest
66b0fa6b22 KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
2e52a29470 rtc: wm8350: Handle error for wm8350_register_irq
0777fe98a4 gfs2: gfs2_setattr_size error path fix
f349d7f9ee gfs2: Fix gfs2_release for non-writers regression
3f53715fd5 gfs2: Check for active reservation in gfs2_release
2dc49f58a2 ubifs: Rectify space amount budget for mkdir/tmpfile operations

Update the .xml file with the following needed changes that came in from
the -lts branch to handle ABI issues with LTS security fixes:

Leaf changes summary: 3 artifacts changed
Changed leaf types summary: 2 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 1 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

1 function with some sub-type change:

  [C] 'function int hex_to_bin(char)' at hexdump.c:53:1 has some sub-type changes:
    parameter 1 of type 'char' changed:
      type name changed from 'char' to 'unsigned char'
      type size hasn't changed

'struct gpio_chip at driver.h:362:1' changed (indirectly):
  type size hasn't changed
  there are data member changes:
    type 'struct gpio_irq_chip' of 'gpio_chip::irq' changed:
      type size hasn't changed
      there are data member changes:
        data member u64 android_kabi_reserved1 at offset 2304 (in bits) became anonymous data member 'union {bool initialized; struct {u64 android_kabi_reserved1;}; union {};}'
      1265 impacted interfaces
  1265 impacted interfaces

'struct gpio_irq_chip at driver.h:32:1' changed:
  details were reported earlier

Change-Id: Iface7385c5d82fbcdaeb92fda79ac3cd1835d323
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2022-07-27 11:21:05 +02:00
Bing Han
5bc9b10c45 ANDROID: vendor_hook: Add hook in migrate_page_states()
Provide a vendor hook to copy the status whether the page need to be
reclaimed to a specified swap location.

Bug: 234214858
Signed-off-by: Bing Han <bing.han@transsion.com>
Change-Id: I1a451b40407718900b56de6ed17b7fd5ef56da01
2022-06-30 03:00:23 +00:00
Bing Han
89a247a638 ANDROID: vendor_hook: Add hook in __migration_entry_wait()
android_vh_waiting_for_page_migration: provide a vendor hook
to force not to reclaim the page under migration to a specified
swap location, until the migration is finished.

Bug: 234214858
Signed-off-by: Bing Han <bing.han@transsion.com>
Change-Id: Iceeae91cbd912d9c44d7eac25f1299bbff547388
2022-06-30 03:00:23 +00:00
Greg Kroah-Hartman
0577ff1c69 Merge 5.10.116 into android12-5.10-lts
Changes in 5.10.116
	MIPS: Use address-of operator on section symbols
	regulator: consumer: Add missing stubs to regulator/consumer.h
	block: drbd: drbd_nl: Make conversion to 'enum drbd_ret_code' explicit
	drm/amd/display/dc/gpio/gpio_service: Pass around correct dce_{version, environment} types
	nfp: bpf: silence bitwise vs. logical OR warning
	arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
	Bluetooth: Fix the creation of hdev->name
	mm: fix missing cache flush for all tail pages of compound page
	mm: hugetlb: fix missing cache flush in copy_huge_page_from_user()
	mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and __mcopy_atomic()
	Linux 5.10.116

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie56f60d172ca37af63c180390007d6b65d0618a5
2022-05-16 08:45:59 +02:00
Muchun Song
308ff6a6e7 mm: fix missing cache flush for all tail pages of compound page
commit 2771739a7162782c0aa6424b2e3dd874e884a15d upstream.

The D-cache maintenance inside move_to_new_page() only consider one
page, there is still D-cache maintenance issue for tail pages of
compound page (e.g. THP or HugeTLB).

THP migration is only enabled on x86_64, ARM64 and powerpc, while
powerpc and arm64 need to maintain the consistency between I-Cache and
D-Cache, which depends on flush_dcache_page() to maintain the
consistency between I-Cache and D-Cache.

But there is no issues on arm64 and powerpc since they already considers
the compound page cache flushing in their icache flush function.
HugeTLB migration is enabled on arm, arm64, mips, parisc, powerpc,
riscv, s390 and sh, while arm has handled the compound page cache flush
in flush_dcache_page(), but most others do not.

In theory, the issue exists on many architectures.  Fix this by not
using flush_dcache_folio() since it is not backportable.

Link: https://lkml.kernel.org/r/20220210123058.79206-3-songmuchun@bytedance.com
Fixes: 290408d4a2 ("hugetlb: hugepage migration core")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Fam Zheng <fam.zheng@bytedance.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Lars Persson <lars.persson@axis.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Xiongchun Duan <duanxiongchun@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-05-15 20:00:09 +02:00
andrew.yang
39aca15979 FROMGIT: mm/migrate: fix race between lock page and clear PG_Isolated
When memory is tight, system may start to compact memory for large
continuous memory demands.  If one process tries to lock a memory page
that is being locked and isolated for compaction, it may wait a long time
or even forever.  This is because compaction will perform non-atomic
PG_Isolated clear while holding page lock, this may overwrite PG_waiters
set by the process that can't obtain the page lock and add itself to the
waiting queue to wait for the lock to be unlocked.

CPU1                            CPU2
lock_page(page); (successful)
                                lock_page(); (failed)
__ClearPageIsolated(page);      SetPageWaiters(page) (may be overwritten)
unlock_page(page);

The solution is to not perform non-atomic operation on page flags while
holding page lock.

Link: https://lkml.kernel.org/r/20220315030515.20263-1-andrew.yang@mediatek.com
Signed-off-by: andrew.yang <andrew.yang@mediatek.com>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: "Vlastimil Babka" <vbabka@suse.cz>
Cc: David Howells <dhowells@redhat.com>
Cc: "William Kucharski" <william.kucharski@oracle.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Yang Shi <shy828301@gmail.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Nicholas Tang <nicholas.tang@mediatek.com>
Cc: Kuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
(cherry picked from commit 48911e41ddee4fe113bf1e4303dda1a413b169c9
 https://github.com/hnaz/linux-mm.git)
Bug: 225086204
Change-Id: I58547aeae29bcbc2071776330f9c31b9eb9f5aa8
2022-03-18 14:34:54 +08:00
Greg Kroah-Hartman
194be71cc6 Merge 5.10.47 into android12-5.10-lts
Changes in 5.10.47
	module: limit enabling module.sig_enforce
	Revert "drm/amdgpu/gfx9: fix the doorbell missing when in CGPG issue."
	Revert "drm/amdgpu/gfx10: enlarge CP_MEC_DOORBELL_RANGE_UPPER to cover full doorbell."
	drm: add a locked version of drm_is_current_master
	drm/nouveau: wait for moving fence after pinning v2
	drm/radeon: wait for moving fence after pinning
	drm/amdgpu: wait for moving fence after pinning
	ARM: 9081/1: fix gcc-10 thumb2-kernel regression
	mmc: meson-gx: use memcpy_to/fromio for dram-access-quirk
	MIPS: generic: Update node names to avoid unit addresses
	arm64: Ignore any DMA offsets in the max_zone_phys() calculation
	arm64: Force NO_BLOCK_MAPPINGS if crashkernel reservation is required
	spi: spi-nxp-fspi: move the register operation after the clock enable
	Revert "PCI: PM: Do not read power state in pci_enable_device_flags()"
	drm/vc4: hdmi: Move the HSM clock enable to runtime_pm
	drm/vc4: hdmi: Make sure the controller is powered in detect
	x86/entry: Fix noinstr fail in __do_fast_syscall_32()
	x86/xen: Fix noinstr fail in exc_xen_unknown_trap()
	locking/lockdep: Improve noinstr vs errors
	perf/x86/lbr: Remove cpuc->lbr_xsave allocation from atomic context
	perf/x86/intel/lbr: Zero the xstate buffer on allocation
	dmaengine: zynqmp_dma: Fix PM reference leak in zynqmp_dma_alloc_chan_resourc()
	dmaengine: stm32-mdma: fix PM reference leak in stm32_mdma_alloc_chan_resourc()
	dmaengine: xilinx: dpdma: Add missing dependencies to Kconfig
	dmaengine: xilinx: dpdma: Limit descriptor IDs to 16 bits
	mac80211: remove warning in ieee80211_get_sband()
	mac80211_hwsim: drop pending frames on stop
	cfg80211: call cfg80211_leave_ocb when switching away from OCB
	dmaengine: rcar-dmac: Fix PM reference leak in rcar_dmac_probe()
	dmaengine: mediatek: free the proper desc in desc_free handler
	dmaengine: mediatek: do not issue a new desc if one is still current
	dmaengine: mediatek: use GFP_NOWAIT instead of GFP_ATOMIC in prep_dma
	net: ipv4: Remove unneed BUG() function
	mac80211: drop multicast fragments
	net: ethtool: clear heap allocations for ethtool function
	inet: annotate data race in inet_send_prepare() and inet_dgram_connect()
	ping: Check return value of function 'ping_queue_rcv_skb'
	net: annotate data race in sock_error()
	inet: annotate date races around sk->sk_txhash
	net/packet: annotate data race in packet_sendmsg()
	net: phy: dp83867: perform soft reset and retain established link
	riscv32: Use medany C model for modules
	net: caif: fix memory leak in ldisc_open
	net/packet: annotate accesses to po->bind
	net/packet: annotate accesses to po->ifindex
	r8152: Avoid memcpy() over-reading of ETH_SS_STATS
	sh_eth: Avoid memcpy() over-reading of ETH_SS_STATS
	r8169: Avoid memcpy() over-reading of ETH_SS_STATS
	KVM: selftests: Fix kvm_check_cap() assertion
	net: qed: Fix memcpy() overflow of qed_dcbx_params()
	mac80211: reset profile_periodicity/ema_ap
	mac80211: handle various extensible elements correctly
	recordmcount: Correct st_shndx handling
	PCI: Add AMD RS690 quirk to enable 64-bit DMA
	net: ll_temac: Add memory-barriers for TX BD access
	net: ll_temac: Avoid ndo_start_xmit returning NETDEV_TX_BUSY
	perf/x86: Track pmu in per-CPU cpu_hw_events
	pinctrl: stm32: fix the reported number of GPIO lines per bank
	i2c: i801: Ensure that SMBHSTSTS_INUSE_STS is cleared when leaving i801_access
	gpiolib: cdev: zero padding during conversion to gpioline_info_changed
	scsi: sd: Call sd_revalidate_disk() for ioctl(BLKRRPART)
	nilfs2: fix memory leak in nilfs_sysfs_delete_device_group
	s390/stack: fix possible register corruption with stack switch helper
	KVM: do not allow mapping valid but non-reference-counted pages
	i2c: robotfuzz-osif: fix control-request directions
	ceph: must hold snap_rwsem when filling inode for async create
	kthread_worker: split code for canceling the delayed work timer
	kthread: prevent deadlock when kthread_mod_delayed_work() races with kthread_cancel_delayed_work_sync()
	x86/fpu: Preserve supervisor states in sanitize_restored_user_xstate()
	x86/fpu: Make init_fpstate correct with optimized XSAVE
	mm: add VM_WARN_ON_ONCE_PAGE() macro
	mm/rmap: remove unneeded semicolon in page_not_mapped()
	mm/rmap: use page_not_mapped in try_to_unmap()
	mm, thp: use head page in __migration_entry_wait()
	mm/thp: fix __split_huge_pmd_locked() on shmem migration entry
	mm/thp: make is_huge_zero_pmd() safe and quicker
	mm/thp: try_to_unmap() use TTU_SYNC for safe splitting
	mm/thp: fix vma_address() if virtual address below file offset
	mm/thp: fix page_address_in_vma() on file THP tails
	mm/thp: unmap_mapping_page() to fix THP truncate_cleanup_page()
	mm: thp: replace DEBUG_VM BUG with VM_WARN when unmap fails for split
	mm: page_vma_mapped_walk(): use page for pvmw->page
	mm: page_vma_mapped_walk(): settle PageHuge on entry
	mm: page_vma_mapped_walk(): use pmde for *pvmw->pmd
	mm: page_vma_mapped_walk(): prettify PVMW_MIGRATION block
	mm: page_vma_mapped_walk(): crossing page table boundary
	mm: page_vma_mapped_walk(): add a level of indentation
	mm: page_vma_mapped_walk(): use goto instead of while (1)
	mm: page_vma_mapped_walk(): get vma_address_end() earlier
	mm/thp: fix page_vma_mapped_walk() if THP mapped by ptes
	mm/thp: another PVMW_SYNC fix in page_vma_mapped_walk()
	mm, futex: fix shared futex pgoff on shmem huge page
	KVM: SVM: Call SEV Guest Decommission if ASID binding fails
	swiotlb: manipulate orig_addr when tlb_addr has offset
	netfs: fix test for whether we can skip read when writing beyond EOF
	Revert "drm: add a locked version of drm_is_current_master"
	certs: Add EFI_CERT_X509_GUID support for dbx entries
	certs: Move load_system_certificate_list to a common function
	certs: Add ability to preload revocation certs
	integrity: Load mokx variables into the blacklist keyring
	Linux 5.10.47

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I68f731ad78a5db003c41093e4faf59f6f9f2e446
2021-06-30 19:38:46 +02:00
Xu Yu
32f954e961 mm, thp: use head page in __migration_entry_wait()
commit ffc90cbb2970ab88b66ea51dd580469eede57b67 upstream.

We notice that hung task happens in a corner but practical scenario when
CONFIG_PREEMPT_NONE is enabled, as follows.

Process 0                       Process 1                     Process 2..Inf
split_huge_page_to_list
    unmap_page
        split_huge_pmd_address
                                __migration_entry_wait(head)
                                                              __migration_entry_wait(tail)
    remap_page (roll back)
        remove_migration_ptes
            rmap_walk_anon
                cond_resched

Where __migration_entry_wait(tail) is occurred in kernel space, e.g.,
copy_to_user in fstat, which will immediately fault again without
rescheduling, and thus occupy the cpu fully.

When there are too many processes performing __migration_entry_wait on
tail page, remap_page will never be done after cond_resched.

This makes __migration_entry_wait operate on the compound head page,
thus waits for remap_page to complete, whether the THP is split
successfully or roll back.

Note that put_and_wait_on_page_locked helps to drop the page reference
acquired with get_page_unless_zero, as soon as the page is on the wait
queue, before actually waiting.  So splitting the THP is only prevented
for a brief interval.

Link: https://lkml.kernel.org/r/b9836c1dd522e903891760af9f0c86a2cce987eb.1623144009.git.xuyu@linux.alibaba.com
Fixes: ba98828088 ("thp: add option to setup migration entries during PMD split")
Suggested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Gang Deng <gavin.dg@linux.alibaba.com>
Signed-off-by: Xu Yu <xuyu@linux.alibaba.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-30 08:47:26 -04:00
Greg Kroah-Hartman
76002c201f Merge 5.10.38 into android12-5.10
Changes in 5.10.38
	KEYS: trusted: Fix memory leak on object td
	tpm: fix error return code in tpm2_get_cc_attrs_tbl()
	tpm, tpm_tis: Extend locality handling to TPM2 in tpm_tis_gen_interrupt()
	tpm, tpm_tis: Reserve locality in tpm_tis_resume()
	KVM: x86/mmu: Remove the defunct update_pte() paging hook
	KVM/VMX: Invoke NMI non-IST entry instead of IST entry
	ACPI: PM: Add ACPI ID of Alder Lake Fan
	PM: runtime: Fix unpaired parent child_count for force_resume
	cpufreq: intel_pstate: Use HWP if enabled by platform firmware
	kvm: Cap halt polling at kvm->max_halt_poll_ns
	ath11k: fix thermal temperature read
	fs: dlm: fix debugfs dump
	fs: dlm: add errno handling to check callback
	fs: dlm: check on minimum msglen size
	fs: dlm: flush swork on shutdown
	tipc: convert dest node's address to network order
	ASoC: Intel: bytcr_rt5640: Enable jack-detect support on Asus T100TAF
	net/mlx5e: Use net_prefetchw instead of prefetchw in MPWQE TX datapath
	net: stmmac: Set FIFO sizes for ipq806x
	ASoC: rsnd: core: Check convert rate in rsnd_hw_params
	Bluetooth: Fix incorrect status handling in LE PHY UPDATE event
	i2c: bail out early when RDWR parameters are wrong
	ALSA: hdsp: don't disable if not enabled
	ALSA: hdspm: don't disable if not enabled
	ALSA: rme9652: don't disable if not enabled
	ALSA: bebob: enable to deliver MIDI messages for multiple ports
	Bluetooth: Set CONF_NOT_COMPLETE as l2cap_chan default
	Bluetooth: initialize skb_queue_head at l2cap_chan_create()
	net/sched: cls_flower: use ntohs for struct flow_dissector_key_ports
	net: bridge: when suppression is enabled exclude RARP packets
	Bluetooth: check for zapped sk before connecting
	selftests/powerpc: Fix L1D flushing tests for Power10
	powerpc/32: Statically initialise first emergency context
	net: hns3: remediate a potential overflow risk of bd_num_list
	net: hns3: add handling for xmit skb with recursive fraglist
	ip6_vti: proper dev_{hold|put} in ndo_[un]init methods
	ASoC: Intel: bytcr_rt5640: Add quirk for the Chuwi Hi8 tablet
	ice: handle increasing Tx or Rx ring sizes
	Bluetooth: btusb: Enable quirk boolean flag for Mediatek Chip.
	ASoC: rt5670: Add a quirk for the Dell Venue 10 Pro 5055
	i2c: Add I2C_AQ_NO_REP_START adapter quirk
	MIPS: Loongson64: Use _CACHE_UNCACHED instead of _CACHE_UNCACHED_ACCELERATED
	coresight: Do not scan for graph if none is present
	IB/hfi1: Correct oversized ring allocation
	mac80211: clear the beacon's CRC after channel switch
	pinctrl: samsung: use 'int' for register masks in Exynos
	rtw88: 8822c: add LC calibration for RTL8822C
	mt76: mt7615: support loading EEPROM for MT7613BE
	mt76: mt76x0: disable GTK offloading
	mt76: mt7915: fix txpower init for TSSI off chips
	fuse: invalidate attrs when page writeback completes
	virtiofs: fix userns
	cuse: prevent clone
	iwlwifi: pcie: make cfg vs. trans_cfg more robust
	powerpc/mm: Add cond_resched() while removing hpte mappings
	ASoC: rsnd: call rsnd_ssi_master_clk_start() from rsnd_ssi_init()
	Revert "iommu/amd: Fix performance counter initialization"
	iommu/amd: Remove performance counter pre-initialization test
	drm/amd/display: Force vsync flip when reconfiguring MPCC
	selftests: Set CC to clang in lib.mk if LLVM is set
	kconfig: nconf: stop endless search loops
	ALSA: hda/realtek: Add quirk for Lenovo Ideapad S740
	ASoC: Intel: sof_sdw: add quirk for new ADL-P Rvp
	ALSA: hda/hdmi: fix race in handling acomp ELD notification at resume
	sctp: Fix out-of-bounds warning in sctp_process_asconf_param()
	flow_dissector: Fix out-of-bounds warning in __skb_flow_bpf_to_target()
	powerpc/smp: Set numa node before updating mask
	ASoC: rt286: Generalize support for ALC3263 codec
	ethtool: ioctl: Fix out-of-bounds warning in store_link_ksettings_for_user()
	net: sched: tapr: prevent cycle_time == 0 in parse_taprio_schedule
	samples/bpf: Fix broken tracex1 due to kprobe argument change
	powerpc/pseries: Stop calling printk in rtas_stop_self()
	drm/amd/display: fixed divide by zero kernel crash during dsc enablement
	drm/amd/display: add handling for hdcp2 rx id list validation
	drm/amdgpu: Add mem sync flag for IB allocated by SA
	mt76: mt7615: fix entering driver-own state on mt7663
	crypto: ccp: Free SEV device if SEV init fails
	wl3501_cs: Fix out-of-bounds warnings in wl3501_send_pkt
	wl3501_cs: Fix out-of-bounds warnings in wl3501_mgmt_join
	qtnfmac: Fix possible buffer overflow in qtnf_event_handle_external_auth
	powerpc/iommu: Annotate nested lock for lockdep
	iavf: remove duplicate free resources calls
	net: ethernet: mtk_eth_soc: fix RX VLAN offload
	selftests: mlxsw: Increase the tolerance of backlog buildup
	selftests: mlxsw: Fix mausezahn invocation in ERSPAN scale test
	kbuild: generate Module.symvers only when vmlinux exists
	bnxt_en: Add PCI IDs for Hyper-V VF devices.
	ia64: module: fix symbolizer crash on fdescr
	watchdog: rename __touch_watchdog() to a better descriptive name
	watchdog: explicitly update timestamp when reporting softlockup
	watchdog/softlockup: remove logic that tried to prevent repeated reports
	watchdog: fix barriers when printing backtraces from all CPUs
	ASoC: rt286: Make RT286_SET_GPIO_* readable and writable
	thermal: thermal_of: Fix error return code of thermal_of_populate_bind_params()
	f2fs: move ioctl interface definitions to separated file
	f2fs: fix compat F2FS_IOC_{MOVE,GARBAGE_COLLECT}_RANGE
	f2fs: fix to allow migrating fully valid segment
	f2fs: fix panic during f2fs_resize_fs()
	f2fs: fix a redundant call to f2fs_balance_fs if an error occurs
	remoteproc: qcom_q6v5_mss: Replace ioremap with memremap
	remoteproc: qcom_q6v5_mss: Validate p_filesz in ELF loader
	PCI: iproc: Fix return value of iproc_msi_irq_domain_alloc()
	PCI: Release OF node in pci_scan_device()'s error path
	ARM: 9064/1: hw_breakpoint: Do not directly check the event's overflow_handler hook
	f2fs: fix to align to section for fallocate() on pinned file
	f2fs: fix to update last i_size if fallocate partially succeeds
	PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR
	PCI: endpoint: Add helper API to get the 'next' unreserved BAR
	PCI: endpoint: Make *_free_bar() to return error codes on failure
	PCI: endpoint: Fix NULL pointer dereference for ->get_features()
	f2fs: fix to avoid touching checkpointed data in get_victim()
	f2fs: fix to cover __allocate_new_section() with curseg_lock
	f2fs: Fix a hungtask problem in atomic write
	f2fs: fix to avoid accessing invalid fio in f2fs_allocate_data_block()
	rpmsg: qcom_glink_native: fix error return code of qcom_glink_rx_data()
	NFS: nfs4_bitmask_adjust() must not change the server global bitmasks
	NFS: Fix attribute bitmask in _nfs42_proc_fallocate()
	NFSv4.2: Always flush out writes in nfs42_proc_fallocate()
	NFS: Deal correctly with attribute generation counter overflow
	PCI: endpoint: Fix missing destroy_workqueue()
	pNFS/flexfiles: fix incorrect size check in decode_nfs_fh()
	NFSv4.2 fix handling of sr_eof in SEEK's reply
	SUNRPC: Move fault injection call sites
	SUNRPC: Remove trace_xprt_transmit_queued
	SUNRPC: Handle major timeout in xprt_adjust_timeout()
	thermal/drivers/tsens: Fix missing put_device error
	NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting
	nfsd: ensure new clients break delegations
	rtc: fsl-ftm-alarm: add MODULE_TABLE()
	dmaengine: idxd: Fix potential null dereference on pointer status
	dmaengine: idxd: fix dma device lifetime
	dmaengine: idxd: fix cdev setup and free device lifetime issues
	SUNRPC: fix ternary sign expansion bug in tracing
	pwm: atmel: Fix duty cycle calculation in .get_state()
	xprtrdma: Avoid Receive Queue wrapping
	xprtrdma: Fix cwnd update ordering
	xprtrdma: rpcrdma_mr_pop() already does list_del_init()
	swiotlb: Fix the type of index
	ceph: fix inode leak on getattr error in __fh_to_dentry
	scsi: qla2xxx: Prevent PRLI in target mode
	scsi: ufs: core: Do not put UFS power into LPM if link is broken
	scsi: ufs: core: Cancel rpm_dev_flush_recheck_work during system suspend
	scsi: ufs: core: Narrow down fast path in system suspend path
	rtc: ds1307: Fix wday settings for rx8130
	net: hns3: fix incorrect configuration for igu_egu_hw_err
	net: hns3: initialize the message content in hclge_get_link_mode()
	net: hns3: add check for HNS3_NIC_STATE_INITED in hns3_reset_notify_up_enet()
	net: hns3: fix for vxlan gpe tx checksum bug
	net: hns3: use netif_tx_disable to stop the transmit queue
	net: hns3: disable phy loopback setting in hclge_mac_start_phy
	sctp: do asoc update earlier in sctp_sf_do_dupcook_a
	RISC-V: Fix error code returned by riscv_hartid_to_cpuid()
	sunrpc: Fix misplaced barrier in call_decode
	libbpf: Fix signed overflow in ringbuf_process_ring
	block/rnbd-clt: Change queue_depth type in rnbd_clt_session to size_t
	block/rnbd-clt: Check the return value of the function rtrs_clt_query
	ethernet:enic: Fix a use after free bug in enic_hard_start_xmit
	sctp: fix a SCTP_MIB_CURRESTAB leak in sctp_sf_do_dupcook_b
	netfilter: xt_SECMARK: add new revision to fix structure layout
	xsk: Fix for xp_aligned_validate_desc() when len == chunk_size
	net: stmmac: Clear receive all(RA) bit when promiscuous mode is off
	drm/radeon: Fix off-by-one power_state index heap overwrite
	drm/radeon: Avoid power table parsing memory leaks
	arm64: entry: factor irq triage logic into macros
	arm64: entry: always set GIC_PRIO_PSR_I_SET during entry
	khugepaged: fix wrong result value for trace_mm_collapse_huge_page_isolate()
	mm/hugeltb: handle the error case in hugetlb_fix_reserve_counts()
	mm/migrate.c: fix potential indeterminate pte entry in migrate_vma_insert_page()
	ksm: fix potential missing rmap_item for stable_node
	mm/gup: check every subpage of a compound page during isolation
	mm/gup: return an error on migration failure
	mm/gup: check for isolation errors
	ethtool: fix missing NLM_F_MULTI flag when dumping
	net: fix nla_strcmp to handle more then one trailing null character
	smc: disallow TCP_ULP in smc_setsockopt()
	netfilter: nfnetlink_osf: Fix a missing skb_header_pointer() NULL check
	netfilter: nftables: Fix a memleak from userdata error path in new objects
	can: mcp251xfd: mcp251xfd_probe(): add missing can_rx_offload_del() in error path
	can: mcp251x: fix resume from sleep before interface was brought up
	can: m_can: m_can_tx_work_queue(): fix tx_skb race condition
	sched: Fix out-of-bound access in uclamp
	sched/fair: Fix unfairness caused by missing load decay
	fs/proc/generic.c: fix incorrect pde_is_permanent check
	kernel: kexec_file: fix error return code of kexec_calculate_store_digests()
	kernel/resource: make walk_system_ram_res() find all busy IORESOURCE_SYSTEM_RAM resources
	kernel/resource: make walk_mem_res() find all busy IORESOURCE_MEM resources
	netfilter: nftables: avoid overflows in nft_hash_buckets()
	i40e: fix broken XDP support
	i40e: Fix use-after-free in i40e_client_subtask()
	i40e: fix the restart auto-negotiation after FEC modified
	i40e: Fix PHY type identifiers for 2.5G and 5G adapters
	mptcp: fix splat when closing unaccepted socket
	f2fs: avoid unneeded data copy in f2fs_ioc_move_range()
	ARC: entry: fix off-by-one error in syscall number validation
	ARC: mm: PAE: use 40-bit physical page mask
	ARC: mm: Use max_high_pfn as a HIGHMEM zone border
	powerpc/64s: Fix crashes when toggling stf barrier
	powerpc/64s: Fix crashes when toggling entry flush barrier
	hfsplus: prevent corruption in shrinking truncate
	squashfs: fix divide error in calculate_skip()
	userfaultfd: release page in error path to avoid BUG_ON
	kasan: fix unit tests with CONFIG_UBSAN_LOCAL_BOUNDS enabled
	mm/hugetlb: fix F_SEAL_FUTURE_WRITE
	blk-iocost: fix weight updates of inner active iocgs
	arm64: mte: initialize RGSR_EL1.SEED in __cpu_setup
	arm64: Fix race condition on PG_dcache_clean in __sync_icache_dcache()
	btrfs: fix race leading to unpersisted data and metadata on fsync
	drm/radeon/dpm: Disable sclk switching on Oland when two 4K 60Hz monitors are connected
	drm/amd/display: Initialize attribute for hdcp_srm sysfs file
	drm/i915: Avoid div-by-zero on gen2
	kvm: exit halt polling on need_resched() as well
	KVM: LAPIC: Accurately guarantee busy wait for timer to expire when using hv_timer
	drm/msm/dp: initialize audio_comp when audio starts
	KVM: x86: Cancel pvclock_gtod_work on module removal
	KVM: x86: Prevent deadlock against tk_core.seq
	dax: Add an enum for specifying dax wakup mode
	dax: Add a wakeup mode parameter to put_unlocked_entry()
	dax: Wake up all waiters after invalidating dax entry
	xen/unpopulated-alloc: consolidate pgmap manipulation
	xen/unpopulated-alloc: fix error return code in fill_list()
	perf tools: Fix dynamic libbpf link
	usb: dwc3: gadget: Free gadget structure only after freeing endpoints
	iio: light: gp2ap002: Fix rumtime PM imbalance on error
	iio: proximity: pulsedlight: Fix rumtime PM imbalance on error
	iio: hid-sensors: select IIO_TRIGGERED_BUFFER under HID_SENSOR_IIO_TRIGGER
	usb: fotg210-hcd: Fix an error message
	hwmon: (occ) Fix poll rate limiting
	usb: musb: Fix an error message
	ACPI: scan: Fix a memory leak in an error handling path
	kyber: fix out of bounds access when preempted
	nvmet: add lba to sect conversion helpers
	nvmet: fix inline bio check for bdev-ns
	nvmet-rdma: Fix NULL deref when SEND is completed with error
	f2fs: compress: fix to free compress page correctly
	f2fs: compress: fix race condition of overwrite vs truncate
	f2fs: compress: fix to assign cc.cluster_idx correctly
	nbd: Fix NULL pointer in flush_workqueue
	blk-mq: plug request for shared sbitmap
	blk-mq: Swap two calls in blk_mq_exit_queue()
	usb: dwc3: omap: improve extcon initialization
	usb: dwc3: pci: Enable usb2-gadget-lpm-disable for Intel Merrifield
	usb: xhci: Increase timeout for HC halt
	usb: dwc2: Fix gadget DMA unmap direction
	usb: core: hub: fix race condition about TRSMRCY of resume
	usb: dwc3: gadget: Enable suspend events
	usb: dwc3: gadget: Return success always for kick transfer in ep queue
	usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4
	usb: typec: ucsi: Put fwnode in any case during ->probe()
	xhci-pci: Allow host runtime PM as default for Intel Alder Lake xHCI
	xhci: Do not use GFP_KERNEL in (potentially) atomic context
	xhci: Add reset resume quirk for AMD xhci controller.
	iio: gyro: mpu3050: Fix reported temperature value
	iio: tsl2583: Fix division by a zero lux_val
	cdc-wdm: untangle a circular dependency between callback and softint
	xen/gntdev: fix gntdev_mmap() error exit path
	KVM: x86: Emulate RDPID only if RDTSCP is supported
	KVM: x86: Move RDPID emulation intercept to its own enum
	KVM: nVMX: Always make an attempt to map eVMCS after migration
	KVM: VMX: Do not advertise RDPID if ENABLE_RDTSCP control is unsupported
	KVM: VMX: Disable preemption when probing user return MSRs
	Revert "iommu/vt-d: Remove WO permissions on second-level paging entries"
	Revert "iommu/vt-d: Preset Access/Dirty bits for IOVA over FL"
	iommu/vt-d: Preset Access/Dirty bits for IOVA over FL
	iommu/vt-d: Remove WO permissions on second-level paging entries
	mm: fix struct page layout on 32-bit systems
	MIPS: Reinstate platform `__div64_32' handler
	MIPS: Avoid DIVU in `__div64_32' is result would be zero
	MIPS: Avoid handcoded DIVU in `__div64_32' altogether
	clocksource/drivers/timer-ti-dm: Prepare to handle dra7 timer wrap issue
	clocksource/drivers/timer-ti-dm: Handle dra7 timer wrap errata i940
	ARM: 9011/1: centralize phys-to-virt conversion of DT/ATAGS address
	ARM: 9012/1: move device tree mapping out of linear region
	ARM: 9020/1: mm: use correct section size macro to describe the FDT virtual address
	ARM: 9027/1: head.S: explicitly map DT even if it lives in the first physical section
	usb: typec: tcpm: Fix error while calculating PPS out values
	kobject_uevent: remove warning in init_uevent_argv()
	drm/i915/gt: Fix a double free in gen8_preallocate_top_level_pdp
	drm/i915: Read C0DRB3/C1DRB3 as 16 bits again
	drm/i915/overlay: Fix active retire callback alignment
	drm/i915: Fix crash in auto_retire
	clk: exynos7: Mark aclk_fsys1_200 as critical
	media: rkvdec: Remove of_match_ptr()
	i2c: mediatek: Fix send master code at more than 1MHz
	dt-bindings: media: renesas,vin: Make resets optional on R-Car Gen1
	dt-bindings: serial: 8250: Remove duplicated compatible strings
	debugfs: Make debugfs_allow RO after init
	ext4: fix debug format string warning
	nvme: do not try to reconfigure APST when the controller is not live
	ASoC: rsnd: check all BUSIF status when error
	Linux 5.10.38

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ia32e01283b488a38be48015c58a0e481f09aaf65
2021-05-20 15:35:25 +02:00
Miaohe Lin
aa0d6d1d3e mm/migrate.c: fix potential indeterminate pte entry in migrate_vma_insert_page()
[ Upstream commit 34f5e9b9d1990d286199084efa752530ee3d8297 ]

If the zone device page does not belong to un-addressable device memory,
the variable entry will be uninitialized and lead to indeterminate pte
entry ultimately.  Fix this unexpected case and warn about it.

Link: https://lkml.kernel.org/r/20210325131524.48181-4-linmiaohe@huawei.com
Fixes: df6ad69838 ("mm/device-public-memory: device memory cache coherent with CPU")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Rafael Aquini <aquini@redhat.com>
Cc: Yang Shi <shy828301@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-19 10:13:07 +02:00
Minchan Kim
ec1dbc10ad ANDROID: mm: page_pinner: use put_user_page at add_page_for_migration
add_page_for_migration uses follow_page with FOLL_GET. Thus,
close the page_pinner false positive by using put_user_page.

Bug: 183414571
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I655b5610bafad86172dcb291573c33176989d94b
2021-04-30 09:13:35 -07:00
Liam Mark
c453643efa FROMGIT: mm: cma: add trace events for CMA alloc perf testing
Add cma and migrate trace events to enable CMA allocation performance to
be measured via ftrace.

Link: https://lkml.kernel.org/r/20210324160740.15901-1-georgi.djakov@linaro.org
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Bug: 178721512
(cherry picked from commit e0240efc7034 https://github.com/hnaz/linux-mm tags/v5.12-rc7-mmots-2021-04-11-20-49)
Change-Id: I72b61ce8b827c582e4d90717f4dd2ae5c34cd90b
Signed-off-by: Georgi Djakov <quic_c_gdjako@quicinc.com>
2021-04-23 22:41:28 +00:00
Charan Teja Reddy
8cd9aa93b7 ANDROID: implement wrapper for reverse migration
Reverse migration is used to do the balancing the occupancy of memory
zones in a node in the system whose imabalance may be caused by
migration of pages to other zones by an operation, eg: hotremove and
then hotadding the same memory. In this case there is a lot of free
memory in newly hotadd memory which can be filled up by the previous
migrated pages(as part of offline/hotremove) thus may free up some
pressure in other zones of the node.

Upstream discussion: https://lore.kernel.org/patchwork/cover/1382106/

Change-Id: Ib3137dab0db66ecf6858c4077dcadb9dfd0c6b1c
Bug: 175403896
Signed-off-by: Charan Teja Reddy <charante@codeaurora.org>
2021-04-20 21:26:32 +00:00
Minchan Kim
c6bc1396ce FROMLIST: mm: replace migrate_[prep|finish] with lru_cache_[disable|enable]
Currently, migrate_[prep|finish] is merely a wrapper of
lru_cache_[disable|enable]. There is not much to gain from
having additional abstraction.

Use lru_cache_[disable|enable] instead of migrate_[prep|finish],
which would be more descriptive.

note: migrate_prep_local in compaction.c changed into lru_add_drain
to avoid CPU schedule cost with involving many other CPUs to keep
keep old behavior.

Bug: 180018981
Link: https://lore.kernel.org/linux-mm/20210319175127.886124-2-minchan@kernel.org/
Acked-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I2f298c9ff53c8693527f1207ff25ab76a4ac3ada
2021-03-23 04:05:24 +00:00
Minchan Kim
68a4731181 BACKPORT: FROMLIST: mm: disable LRU pagevec during the migration temporarily
LRU pagevec holds refcount of pages until the pagevec are drained.
It could prevent migration since the refcount of the page is greater
than the expection in migration logic. To mitigate the issue,
callers of migrate_pages drains LRU pagevec via migrate_prep or
lru_add_drain_all before migrate_pages call.

However, it's not enough because pages coming into pagevec after the
draining call still could stay at the pagevec so it could keep
preventing page migration. Since some callers of migrate_pages have
retrial logic with LRU draining, the page would migrate at next trail
but it is still fragile in that it doesn't close the fundamental race
between upcoming LRU pages into pagvec and migration so the migration
failure could cause contiguous memory allocation failure in the end.

To close the race, this patch disables lru caches(i.e, pagevec)
during ongoing migration until migrate is done.

Since it's really hard to reproduce, I measured how many times
migrate_pages retried with force mode(it is about a fallback to a
sync migration) with below debug code.

int migrate_pages(struct list_head *from, new_page_t get_new_page,
			..
			..

if (rc && reason == MR_CONTIG_RANGE && pass > 2) {
       printk(KERN_ERR, "pfn 0x%lx reason %d\n", page_to_pfn(page), rc);
       dump_page(page, "fail to migrate");
}

The test was repeating android apps launching with cma allocation
in background every five seconds. Total cma allocation count was
about 500 during the testing. With this patch, the dump_page count
was reduced from 400 to 30.

The new interface is also useful for memory hotplug which currently
drains lru pcp caches after each migration failure. This is rather
suboptimal as it has to disrupt others running during the operation.
With the new interface the operation happens only once. This is also in
line with pcp allocator cache which are disabled for the offlining as
well.

Bug: 180018981
Link: https://lore.kernel.org/linux-mm/20210319175127.886124-1-minchan@kernel.org/
Reviewed-by: Chris Goldsworthy <cgoldswo@codeaurora.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I838c63d11ca49a8734d8b37a7d5272ab6b802f9f
2021-03-23 04:05:15 +00:00
Minchan Kim
d3c1bf42af Revert "FROMLIST: mm: replace migrate_prep with lru_add_drain_all"
This reverts commit 134ac2d4dc.

Bug: 180018981
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I579c72398447f770c235e4fefd246f1dbbd250d0
2021-03-23 04:05:07 +00:00
Minchan Kim
7ed55d7025 Revert "BACKPORT: FROMLIST: mm: disable LRU pagevec during the migration temporarily"
This reverts commit 3039d8580c.

Bug: 180018981
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: Iadadd7f4c7aafa439afd7a1c3e575e5e31602bef
2021-03-23 04:04:58 +00:00
Minchan Kim
3039d8580c BACKPORT: FROMLIST: mm: disable LRU pagevec during the migration temporarily
LRU pagevec holds refcount of pages until the pagevec are drained.
It could prevent migration since the refcount of the page is greater
than the expection in migration logic. To mitigate the issue,
callers of migrate_pages drains LRU pagevec via migrate_prep or
lru_add_drain_all before migrate_pages call.

However, it's not enough because pages coming into pagevec after the
draining call still could stay at the pagevec so it could keep
preventing page migration. Since some callers of migrate_pages have
retrial logic with LRU draining, the page would migrate at next trail
but it is still fragile in that it doesn't close the fundamental race
between upcoming LRU pages into pagvec and migration so the migration
failure could cause contiguous memory allocation failure in the end.

To close the race, this patch disables lru caches(i.e, pagevec)
during ongoing migration until migrate is done.

Since it's really hard to reproduce, I measured how many times
migrate_pages retried with force mode(it is about a fallback to a
sync migration) with below debug code.

int migrate_pages(struct list_head *from, new_page_t get_new_page,
			..
			..

if (rc && reason == MR_CONTIG_RANGE && pass > 2) {
       printk(KERN_ERR, "pfn 0x%lx reason %d\n", page_to_pfn(page), rc);
       dump_page(page, "fail to migrate");
}

The test was repeating android apps launching with cma allocation
in background every five seconds. Total cma allocation count was
about 500 during the testing. With this patch, the dump_page count
was reduced from 400 to 30.

The new interface is also useful for memory hotplug which currently
drains lru pcp caches after each migration failure. This is rather
suboptimal as it has to disrupt others running during the operation.
With the new interface the operation happens only once. This is also in
line with pcp allocator cache which are disabled for the offlining as
well.

Bug: 180018981
Link: https://lore.kernel.org/linux-mm/20210310161429.399432-2-minchan@kernel.org/
[minchan: Resolved conflict in mm/memory_hotplug.c, mm/swap.c]
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: Ie1e09cf26e3105b674a9aed4ac65070efee608af
2021-03-12 12:35:53 -08:00
Minchan Kim
134ac2d4dc FROMLIST: mm: replace migrate_prep with lru_add_drain_all
Currently, migrate_prep is merely a wrapper of lru_cache_add_all.
There is not much to gain from having additional abstraction.

Use lru_add_drain_all instead of migrate_prep, which would be more
descriptive.

note: migrate_prep_local in compaction.c changed into lru_add_drain
to avoid CPU schedule cost with involving many other CPUs to keep
keep old behavior.

Bug: 180018981
Link: https://lore.kernel.org/linux-mm/20210310161429.399432-1-minchan@kernel.org/
Signed-off-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I1bd3fcb13993e8a7a7961ceec817ac17304364cb
2021-03-12 12:35:53 -08:00
Yang Shi
059eaf82c0 UPSTREAM: mm: migrate: clean up migrate_prep{_local}
The migrate_prep{_local} never fails, so it is pointless to have return
value and check the return value.

Bug: 180018981
Link: https://lkml.kernel.org/r/20201113205359.556831-5-shy828301@gmail.com
Signed-off-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Song Liu <songliubraving@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 236c32eb109696590b7428957eda50cc05e22af8)
Signed-off-by: Minchan Kim <minchan@google.com>
Change-Id: I26ae0a4240c704e6127b51532e5de8ba778edd6e
2021-03-12 12:35:52 -08:00
Greg Kroah-Hartman
ba152773be Merge 5.10.11 into android12-5.10
Changes in 5.10.11
	scsi: target: tcmu: Fix use-after-free of se_cmd->priv
	mtd: rawnand: gpmi: fix dst bit offset when extracting raw payload
	mtd: rawnand: nandsim: Fix the logic when selecting Hamming soft ECC engine
	i2c: tegra: Wait for config load atomically while in ISR
	i2c: bpmp-tegra: Ignore unknown I2C_M flags
	platform/x86: i2c-multi-instantiate: Don't create platform device for INT3515 ACPI nodes
	platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634
	ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
	ALSA: hda/realtek - Limit int mic boost on Acer Aspire E5-575T
	ALSA: hda/via: Add minimum mute flag
	crypto: xor - Fix divide error in do_xor_speed()
	dm crypt: fix copy and paste bug in crypt_alloc_req_aead
	ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
	btrfs: don't get an EINTR during drop_snapshot for reloc
	btrfs: do not double free backref nodes on error
	btrfs: fix lockdep splat in btrfs_recover_relocation
	btrfs: don't clear ret in btrfs_start_dirty_block_groups
	btrfs: send: fix invalid clone operations when cloning from the same file and root
	fs: fix lazytime expiration handling in __writeback_single_inode()
	pinctrl: ingenic: Fix JZ4760 support
	mmc: core: don't initialize block size from ext_csd if not present
	mmc: sdhci-of-dwcmshc: fix rpmb access
	mmc: sdhci-xenon: fix 1.8v regulator stabilization
	mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend
	dm: avoid filesystem lookup in dm_get_dev_t()
	dm integrity: fix a crash if "recalculate" used without "internal_hash"
	dm integrity: conditionally disable "recalculate" feature
	drm/atomic: put state on error path
	drm/syncobj: Fix use-after-free
	drm/amdgpu: remove gpu info firmware of green sardine
	drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case
	drm/i915/gt: Prevent use of engine->wa_ctx after error
	drm/i915: Check for rq->hwsp validity after acquiring RCU lock
	ASoC: Intel: haswell: Add missing pm_ops
	ASoC: rt711: mutex between calibration and power state changes
	SUNRPC: Handle TCP socket sends with kernel_sendpage() again
	HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device
	HID: sony: select CONFIG_CRC32
	dm integrity: select CRYPTO_SKCIPHER
	x86/hyperv: Fix kexec panic/hang issues
	scsi: ufs: Relax the condition of UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
	scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback
	scsi: qedi: Correct max length of CHAP secret
	scsi: scsi_debug: Fix memleak in scsi_debug_init()
	scsi: sd: Suppress spurious errors when WRITE SAME is being disabled
	riscv: Fix kernel time_init()
	riscv: Fix sifive serial driver
	riscv: Enable interrupts during syscalls with M-Mode
	HID: logitech-dj: add the G602 receiver
	HID: Ignore battery for Elan touchscreen on ASUS UX550
	clk: tegra30: Add hda clock default rates to clock driver
	ALSA: hda/tegra: fix tegra-hda on tegra30 soc
	riscv: cacheinfo: Fix using smp_processor_id() in preemptible
	arm64: make atomic helpers __always_inline
	xen: Fix event channel callback via INTX/GSI
	x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery
	x86/xen: Fix xen_hvm_smp_init() when vector callback not available
	dts: phy: fix missing mdio device and probe failure of vsc8541-01 device
	dts: phy: add GPIO number and active state used for phy reset
	riscv: defconfig: enable gpio support for HiFive Unleashed
	drm/amdgpu/psp: fix psp gfx ctrl cmds
	drm/amd/display: disable dcn10 pipe split by default
	HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode
	drm/amd/display: Fix to be able to stop crc calculation
	drm/nouveau/bios: fix issue shadowing expansion ROMs
	drm/nouveau/privring: ack interrupts the same way as RM
	drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields
	drm/nouveau/mmu: fix vram heap sizing
	drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0
	io_uring: flush timeouts that should already have expired
	libperf tests: If a test fails return non-zero
	libperf tests: Fail when failing to get a tracepoint id
	RISC-V: Set current memblock limit
	RISC-V: Fix maximum allowed phsyical memory for RV32
	x86/xen: fix 'nopvspin' build error
	nfsd: Fixes for nfsd4_encode_read_plus_data()
	nfsd: Don't set eof on a truncated READ_PLUS
	gpiolib: cdev: fix frame size warning in gpio_ioctl()
	pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting
	pinctrl: mediatek: Fix fallback call path
	RDMA/ucma: Do not miss ctx destruction steps in some cases
	btrfs: print the actual offset in btrfs_root_name
	scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression
	scsi: ufs: ufshcd-pltfrm depends on HAS_IOMEM
	scsi: ufs: Fix tm request when non-fatal error happens
	crypto: omap-sham - Fix link error without crypto-engine
	bpf: Prevent double bpf_prog_put call from bpf_tracing_prog_attach
	powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S
	powerpc: Fix alignment bug within the init sections
	arm64: entry: remove redundant IRQ flag tracing
	bpf: Reject too big ctx_size_in for raw_tp test run
	drm/amdkfd: Fix out-of-bounds read in kdf_create_vcrat_image_cpu()
	RDMA/umem: Avoid undefined behavior of rounddown_pow_of_two()
	RDMA/cma: Fix error flow in default_roce_mode_store
	printk: ringbuffer: fix line counting
	printk: fix kmsg_dump_get_buffer length calulations
	iov_iter: fix the uaccess area in copy_compat_iovec_from_user
	i2c: octeon: check correct size of maximum RECV_LEN packet
	drm/vc4: Unify PCM card's driver_name
	platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow-list
	platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND errors
	gpio: sifive: select IRQ_DOMAIN_HIERARCHY rather than depend on it
	ALSA: hda: Balance runtime/system PM if direct-complete is disabled
	xsk: Clear pool even for inactive queues
	selftests: net: fib_tests: remove duplicate log test
	can: dev: can_restart: fix use after free bug
	can: vxcan: vxcan_xmit: fix use after free bug
	can: peak_usb: fix use after free bugs
	perf evlist: Fix id index for heterogeneous systems
	i2c: sprd: depend on COMMON_CLK to fix compile tests
	iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread
	iio: ad5504: Fix setting power-down state
	drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c
	iio: adc: ti_am335x_adc: remove omitted iio_kfifo_free()
	counter:ti-eqep: remove floor
	powerpc/64s: fix scv entry fallback flush vs interrupt
	cifs: do not fail __smb_send_rqst if non-fatal signals are pending
	irqchip/mips-cpu: Set IPI domain parent chip
	x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state
	x86/topology: Make __max_die_per_package available unconditionally
	x86/mmx: Use KFPU_387 for MMX string operations
	x86/setup: don't remove E820_TYPE_RAM for pfn 0
	proc_sysctl: fix oops caused by incorrect command parameters
	mm: memcg/slab: optimize objcg stock draining
	mm: memcg: fix memcg file_dirty numa stat
	mm: fix numa stats for thp migration
	io_uring: iopoll requests should also wake task ->in_idle state
	io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state
	io_uring: fix short read retries for non-reg files
	intel_th: pci: Add Alder Lake-P support
	stm class: Fix module init return on allocation failure
	serial: mvebu-uart: fix tx lost characters at power off
	ehci: fix EHCI host controller initialization sequence
	USB: ehci: fix an interrupt calltrace error
	usb: gadget: aspeed: fix stop dma register setting.
	USB: gadget: dummy-hcd: Fix errors in port-reset handling
	usb: udc: core: Use lock when write to soft_connect
	usb: bdc: Make bdc pci driver depend on BROKEN
	usb: cdns3: imx: fix writing read-only memory issue
	usb: cdns3: imx: fix can't create core device the second time issue
	xhci: make sure TRB is fully written before giving it to the controller
	xhci: tegra: Delay for disabling LFPS detector
	drivers core: Free dma_range_map when driver probe failed
	driver core: Fix device link device name collision
	driver core: Extend device_is_dependent()
	drm/i915: s/intel_dp_sink_dpms/intel_dp_set_power/
	drm/i915: Only enable DFP 4:4:4->4:2:0 conversion when outputting YCbCr 4:4:4
	x86/entry: Fix noinstr fail
	x86/cpu/amd: Set __max_die_per_package on AMD
	cls_flower: call nla_ok() before nla_next()
	netfilter: rpfilter: mask ecn bits before fib lookup
	tools: gpio: fix %llu warning in gpio-event-mon.c
	tools: gpio: fix %llu warning in gpio-watch.c
	drm/i915/hdcp: Update CP property in update_pipe
	sh: dma: fix kconfig dependency for G2_DMA
	sh: Remove unused HAVE_COPY_THREAD_TLS macro
	locking/lockdep: Cure noinstr fail
	ASoC: SOF: Intel: fix page fault at probe if i915 init fails
	octeontx2-af: Fix missing check bugs in rvu_cgx.c
	net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext
	selftests/powerpc: Fix exit status of pkey tests
	sh_eth: Fix power down vs. is_opened flag ordering
	nvme-pci: refactor nvme_unmap_data
	nvme-pci: fix error unwind in nvme_map_data
	cachefiles: Drop superfluous readpages aops NULL check
	lightnvm: fix memory leak when submit fails
	skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too
	kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow
	kasan: fix incorrect arguments passing in kasan_add_zero_shadow
	tcp: fix TCP socket rehash stats mis-accounting
	net_sched: gen_estimator: support large ewma log
	udp: mask TOS bits in udp_v4_early_demux()
	ipv6: create multicast route with RTPROT_KERNEL
	net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
	net_sched: reject silly cell_log in qdisc_get_rtab()
	ipv6: set multicast flag on the multicast route
	net: mscc: ocelot: allow offloading of bridge on top of LAG
	net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled
	net: dsa: b53: fix an off by one in checking "vlan->vid"
	tcp: do not mess with cloned skbs in tcp_add_backlog()
	tcp: fix TCP_USER_TIMEOUT with zero window
	net: mscc: ocelot: Fix multicast to the CPU port
	net: core: devlink: use right genl user_ptr when handling port param get/set
	pinctrl: qcom: Allow SoCs to specify a GPIO function that's not 0
	pinctrl: qcom: No need to read-modify-write the interrupt status
	pinctrl: qcom: Properly clear "intr_ack_high" interrupts when unmasking
	pinctrl: qcom: Don't clear pending interrupts when enabling
	x86/sev: Fix nonistr violation
	tty: implement write_iter
	tty: fix up hung_up_tty_write() conversion
	net: systemport: free dev before on error path
	x86/sev-es: Handle string port IO to kernel memory properly
	tcp: Fix potential use-after-free due to double kfree()
	ASoC: SOF: Intel: hda: Avoid checking jack on system suspend
	drm/i915/hdcp: Get conn while content_type changed
	bpf: Local storage helpers should check nullness of owner ptr passed
	kernfs: implement ->read_iter
	kernfs: implement ->write_iter
	kernfs: wire up ->splice_read and ->splice_write
	interconnect: imx8mq: Use icc_sync_state
	fs/pipe: allow sendfile() to pipe again
	Commit 9bb48c82aced ("tty: implement write_iter") converted the tty layer to use write_iter. Fix the redirected_tty_write declaration also in n_tty and change the comparisons to use write_iter instead of write. also in n_tty and change the comparisons to use write_iter instead of write.
	mm: fix initialization of struct page for holes in memory layout
	Revert "mm: fix initialization of struct page for holes in memory layout"
	Linux 5.10.11

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I502239d06f9bcd68b59149376f3c796c64de5942
2021-01-27 12:12:33 +01:00
Shakeel Butt
371f3fbf4f mm: fix numa stats for thp migration
commit 5c447d274f3746fbed6e695e7b9a2d7bd8b31b71 upstream.

Currently the kernel is not correctly updating the numa stats for
NR_FILE_PAGES and NR_SHMEM on THP migration.  Fix that.

For NR_FILE_DIRTY and NR_ZONE_WRITE_PENDING, although at the moment
there is no need to handle THP migration as kernel still does not have
write support for file THP but to be more future proof, this patch adds
the THP support for those stats as well.

Link: https://lkml.kernel.org/r/20210108155813.2914586-2-shakeelb@google.com
Fixes: e71769ae52 ("mm: enable thp migration for shmem thp")
Signed-off-by: Shakeel Butt <shakeelb@google.com>
Acked-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Roman Gushchin <guro@fb.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-27 11:55:14 +01:00
Shakeel Butt
0dc3a130cc mm: memcg: fix memcg file_dirty numa stat
commit 8a8792f600abacd7e1b9bb667759dca1c153f64c upstream.

The kernel updates the per-node NR_FILE_DIRTY stats on page migration
but not the memcg numa stats.

That was not an issue until recently the commit 5f9a4f4a70 ("mm:
memcontrol: add the missing numa_stat interface for cgroup v2") exposed
numa stats for the memcg.

So fix the file_dirty per-memcg numa stat.

Link: https://lkml.kernel.org/r/20210108155813.2914586-1-shakeelb@google.com
Fixes: 5f9a4f4a70 ("mm: memcontrol: add the missing numa_stat interface for cgroup v2")
Signed-off-by: Shakeel Butt <shakeelb@google.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Acked-by: Yang Shi <shy828301@gmail.com>
Reviewed-by: Roman Gushchin <guro@fb.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-27 11:55:14 +01:00
Laurent Dufour
320b684750 FROMLIST: mm/migrate: Pass vm_fault pointer to migrate_misplaced_page()
migrate_misplaced_page() is only called during the page fault handling so
it's better to pass the pointer to the struct vm_fault instead of the vma.

This way during the speculative page fault path the saved vma->vm_flags
could be used.

Change-Id: I254a7c9d91dca9ee8a9afd5eccd6de9af5dc8bc0
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Link: https://lore.kernel.org/lkml/1523975611-15978-14-git-send-email-ldufour@linux.vnet.ibm.com/
Bug: 161210518
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2021-01-22 18:00:23 +00:00
Laurent Dufour
32507b6ff2 FROMLIST: mm: cache some VMA fields in the vm_fault structure
When handling speculative page fault, the vma->vm_flags and
vma->vm_page_prot fields are read once the page table lock is released. So
there is no more guarantee that these fields would not change in our back.
They will be saved in the vm_fault structure before the VMA is checked for
changes.

This patch also set the fields in hugetlb_no_page() and
__collapse_huge_page_swapin even if it is not need for the callee.

Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Change-Id: I9821f02ea32ef220b57b8bfd817992bbf71bbb1d
Link: https://lore.kernel.org/lkml/1523975611-15978-13-git-send-email-ldufour@linux.vnet.ibm.com/
Bug: 161210518
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Signed-off-by: Charan Teja Reddy <charante@codeaurora.org>
2021-01-22 18:00:15 +00:00
Shakeel Butt
dd156e3fca mm/rmap: always do TTU_IGNORE_ACCESS
[ Upstream commit 013339df116c2ee0d796dd8bfb8f293a2030c063 ]

Since commit 369ea8242c ("mm/rmap: update to new mmu_notifier semantic
v2"), the code to check the secondary MMU's page table access bit is
broken for !(TTU_IGNORE_ACCESS) because the page is unmapped from the
secondary MMU's page table before the check.  More specifically for those
secondary MMUs which unmap the memory in
mmu_notifier_invalidate_range_start() like kvm.

However memory reclaim is the only user of !(TTU_IGNORE_ACCESS) or the
absence of TTU_IGNORE_ACCESS and it explicitly performs the page table
access check before trying to unmap the page.  So, at worst the reclaim
will miss accesses in a very short window if we remove page table access
check in unmapping code.

There is an unintented consequence of !(TTU_IGNORE_ACCESS) for the memcg
reclaim.  From memcg reclaim the page_referenced() only account the
accesses from the processes which are in the same memcg of the target page
but the unmapping code is considering accesses from all the processes, so,
decreasing the effectiveness of memcg reclaim.

The simplest solution is to always assume TTU_IGNORE_ACCESS in unmapping
code.

Link: https://lkml.kernel.org/r/20201104231928.1494083-1-shakeelb@google.com
Fixes: 369ea8242c ("mm/rmap: update to new mmu_notifier semantic v2")
Signed-off-by: Shakeel Butt <shakeelb@google.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-30 11:53:55 +01:00
Mike Kravetz
336bf30eb7 hugetlbfs: fix anon huge page migration race
Qian Cai reported the following BUG in [1]

  LTP: starting move_pages12
  BUG: unable to handle page fault for address: ffffffffffffffe0
  ...
  RIP: 0010:anon_vma_interval_tree_iter_first+0xa2/0x170 avc_start_pgoff at mm/interval_tree.c:63
  Call Trace:
    rmap_walk_anon+0x141/0xa30 rmap_walk_anon at mm/rmap.c:1864
    try_to_unmap+0x209/0x2d0 try_to_unmap at mm/rmap.c:1763
    migrate_pages+0x1005/0x1fb0
    move_pages_and_store_status.isra.47+0xd7/0x1a0
    __x64_sys_move_pages+0xa5c/0x1100
    do_syscall_64+0x5f/0x310
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

Hugh Dickins diagnosed this as a migration bug caused by code introduced
to use i_mmap_rwsem for pmd sharing synchronization.  Specifically, the
routine unmap_and_move_huge_page() is always passing the TTU_RMAP_LOCKED
flag to try_to_unmap() while holding i_mmap_rwsem.  This is wrong for
anon pages as the anon_vma_lock should be held in this case.  Further
analysis suggested that i_mmap_rwsem was not required to he held at all
when calling try_to_unmap for anon pages as an anon page could never be
part of a shared pmd mapping.

Discussion also revealed that the hack in hugetlb_page_mapping_lock_write
to drop page lock and acquire i_mmap_rwsem is wrong.  There is no way to
keep mapping valid while dropping page lock.

This patch does the following:

 - Do not take i_mmap_rwsem and set TTU_RMAP_LOCKED for anon pages when
   calling try_to_unmap.

 - Remove the hacky code in hugetlb_page_mapping_lock_write. The routine
   will now simply do a 'trylock' while still holding the page lock. If
   the trylock fails, it will return NULL. This could impact the
   callers:

    - migration calling code will receive -EAGAIN and retry up to the
      hard coded limit (10).

    - memory error code will treat the page as BUSY. This will force
      killing (SIGKILL) instead of SIGBUS any mapping tasks.

   Do note that this change in behavior only happens when there is a
   race. None of the standard kernel testing suites actually hit this
   race, but it is possible.

[1] https://lore.kernel.org/lkml/20200708012044.GC992@lca.pw/
[2] https://lore.kernel.org/linux-mm/alpine.LSU.2.11.2010071833100.2214@eggly.anvils/

Fixes: c0d0381ade ("hugetlbfs: use i_mmap_rwsem for more pmd sharing synchronization")
Reported-by: Qian Cai <cai@lca.pw>
Suggested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20201105195058.78401-1-mike.kravetz@oracle.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-11-14 11:26:04 -08:00
Miaohe Lin
4dc200cee1 mm/migrate: avoid possible unnecessary process right check in kernel_move_pages()
There is no need to check if this process has the right to modify the
specified process when they are same.  And we could also skip the security
hook call if a process is modifying its own pages.  Add helper function to
handle these.

Suggested-by: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Hongxiang Lou <louhongxiang@huawei.com>
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Christopher Lameter <cl@linux.com>
Link: https://lkml.kernel.org/r/20200819083331.19012-1-linmiaohe@huawei.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-18 09:27:09 -07:00
Oscar Salvador
79f5f8fab4 mm,hwpoison: rework soft offline for in-use pages
This patch changes the way we set and handle in-use poisoned pages.  Until
now, poisoned pages were released to the buddy allocator, trusting that
the checks that take place at allocation time would act as a safe net and
would skip that page.

This has proved to be wrong, as we got some pfn walkers out there, like
compaction, that all they care is the page to be in a buddy freelist.

Although this might not be the only user, having poisoned pages in the
buddy allocator seems a bad idea as we should only have free pages that
are ready and meant to be used as such.

Before explaining the taken approach, let us break down the kind of pages
we can soft offline.

- Anonymous THP (after the split, they end up being 4K pages)
- Hugetlb
- Order-0 pages (that can be either migrated or invalited)

* Normal pages (order-0 and anon-THP)

  - If they are clean and unmapped page cache pages, we invalidate
    then by means of invalidate_inode_page().
  - If they are mapped/dirty, we do the isolate-and-migrate dance.

Either way, do not call put_page directly from those paths.  Instead, we
keep the page and send it to page_handle_poison to perform the right
handling.

page_handle_poison sets the HWPoison flag and does the last put_page.

Down the chain, we placed a check for HWPoison page in
free_pages_prepare, that just skips any poisoned page, so those pages
do not end up in any pcplist/freelist.

After that, we set the refcount on the page to 1 and we increment
the poisoned pages counter.

If we see that the check in free_pages_prepare creates trouble, we can
always do what we do for free pages:

  - wait until the page hits buddy's freelists
  - take it off, and flag it

The downside of the above approach is that we could race with an
allocation, so by the time we  want to take the page off the buddy, the
page has been already allocated so we cannot soft offline it.
But the user could always retry it.

* Hugetlb pages

  - We isolate-and-migrate them

After the migration has been successful, we call dissolve_free_huge_page,
and we set HWPoison on the page if we succeed.
Hugetlb has a slightly different handling though.

While for non-hugetlb pages we cared about closing the race with an
allocation, doing so for hugetlb pages requires quite some additional
and intrusive code (we would need to hook in free_huge_page and some other
places).
So I decided to not make the code overly complicated and just fail
normally if the page we allocated in the meantime.

We can always build on top of this.

As a bonus, because of the way we handle now in-use pages, we no longer
need the put-as-isolation-migratetype dance, that was guarding for poisoned
pages to end up in pcplists.

Signed-off-by: Oscar Salvador <osalvador@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Aristeu Rozanski <aris@ruivo.org>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Dmitry Yakunin <zeil@yandex-team.ru>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Oscar Salvador <osalvador@suse.com>
Cc: Qian Cai <cai@lca.pw>
Cc: Tony Luck <tony.luck@intel.com>
Link: https://lkml.kernel.org/r/20200922135650.1634-10-osalvador@suse.de
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-16 11:11:16 -07:00
Ralph Campbell
f1f4f3ab54 mm/migrate: remove obsolete comment about device public
Device public memory never had an in tree consumer and was removed in
commit 25b2995a35 ("mm: remove MEMORY_DEVICE_PUBLIC support").  Delete
the obsolete comment.

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Link: http://lkml.kernel.org/r/20200827190735.12752-2-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-13 18:38:36 -07:00
Ralph Campbell
4257889124 mm/migrate: remove cpages-- in migrate_vma_finalize()
The variable struct migrate_vma->cpages is only used in
migrate_vma_setup().  There is no need to decrement it in
migrate_vma_finalize() since it is never checked.

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Link: http://lkml.kernel.org/r/20200827190735.12752-1-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-10-13 18:38:35 -07:00
Linus Torvalds
3ad11d7ac8 Merge tag 'block-5.10-2020-10-12' of git://git.kernel.dk/linux-block
Pull block updates from Jens Axboe:

 - Series of merge handling cleanups (Baolin, Christoph)

 - Series of blk-throttle fixes and cleanups (Baolin)

 - Series cleaning up BDI, seperating the block device from the
   backing_dev_info (Christoph)

 - Removal of bdget() as a generic API (Christoph)

 - Removal of blkdev_get() as a generic API (Christoph)

 - Cleanup of is-partition checks (Christoph)

 - Series reworking disk revalidation (Christoph)

 - Series cleaning up bio flags (Christoph)

 - bio crypt fixes (Eric)

 - IO stats inflight tweak (Gabriel)

 - blk-mq tags fixes (Hannes)

 - Buffer invalidation fixes (Jan)

 - Allow soft limits for zone append (Johannes)

 - Shared tag set improvements (John, Kashyap)

 - Allow IOPRIO_CLASS_RT for CAP_SYS_NICE (Khazhismel)

 - DM no-wait support (Mike, Konstantin)

 - Request allocation improvements (Ming)

 - Allow md/dm/bcache to use IO stat helpers (Song)

 - Series improving blk-iocost (Tejun)

 - Various cleanups (Geert, Damien, Danny, Julia, Tetsuo, Tian, Wang,
   Xianting, Yang, Yufen, yangerkun)

* tag 'block-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (191 commits)
  block: fix uapi blkzoned.h comments
  blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
  blk-mq: get rid of the dead flush handle code path
  block: get rid of unnecessary local variable
  block: fix comment and add lockdep assert
  blk-mq: use helper function to test hw stopped
  block: use helper function to test queue register
  block: remove redundant mq check
  block: invoke blk_mq_exit_sched no matter whether have .exit_sched
  percpu_ref: don't refer to ref->data if it isn't allocated
  block: ratelimit handle_bad_sector() message
  blk-throttle: Re-use the throtl_set_slice_end()
  blk-throttle: Open code __throtl_de/enqueue_tg()
  blk-throttle: Move service tree validation out of the throtl_rb_first()
  blk-throttle: Move the list operation after list validation
  blk-throttle: Fix IO hang for a corner case
  blk-throttle: Avoid tracking latency if low limit is invalid
  blk-throttle: Avoid getting the current time if tg->last_finish_time is 0
  blk-throttle: Remove a meaningless parameter for throtl_downgrade_state()
  block: Remove redundant 'return' statement
  ...
2020-10-13 12:12:44 -07:00
Zi Yan
6c5c7b9f33 mm/migrate: correct thp migration stats
PageTransHuge returns true for both thp and hugetlb, so thp stats was
counting both thp and hugetlb migrations.  Exclude hugetlb migration by
setting is_thp variable right.

Clean up thp handling code too when we are there.

Fixes: 1a5bae25e3 ("mm/vmstat: add events for THP migration without split")
Signed-off-by: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lkml.kernel.org/r/20200917210413.1462975-1-zi.yan@sent.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-26 10:33:57 -07:00
Christoph Hellwig
f56753ac2a bdi: replace BDI_CAP_NO_{WRITEBACK,ACCT_DIRTY} with a single flag
Replace the two negative flags that are always used together with a
single positive flag that indicates the writeback capability instead
of two related non-capabilities.  Also remove the pointless wrappers
to just check the flag.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2020-09-24 13:43:39 -06:00
Hugh Dickins
a333e3e73b mm: migration of hugetlbfs page skip memcg
hugetlbfs pages do not participate in memcg: so although they do find most
of migrate_page_states() useful, it would be better if they did not call
into mem_cgroup_migrate() - where Qian Cai reported that LTP's
move_pages12 triggers the warning in Alex Shi's prospective commit
"mm/memcg: warning on !memcg after readahead page charged".

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
Acked-by: Johannes Weiner <hannes@cmpxch.org>
Cc: Alex Shi <alex.shi@linux.alibaba.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Qian Cai <cai@lca.pw>
Link: http://lkml.kernel.org/r/alpine.LSU.2.11.2008301359460.5954@eggly.anvils
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-19 13:13:38 -07:00
Ralph Campbell
3d321bf82c mm/migrate: preserve soft dirty in remove_migration_pte()
The code to remove a migration PTE and replace it with a device private
PTE was not copying the soft dirty bit from the migration entry.  This
could lead to page contents not being marked dirty when faulting the page
back from device private memory.

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Bharata B Rao <bharata@linux.ibm.com>
Link: https://lkml.kernel.org/r/20200831212222.22409-3-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-05 12:14:30 -07:00
Ralph Campbell
6128763fc3 mm/migrate: remove unnecessary is_zone_device_page() check
Patch series "mm/migrate: preserve soft dirty in remove_migration_pte()".

I happened to notice this from code inspection after seeing Alistair
Popple's patch ("mm/rmap: Fixup copying of soft dirty and uffd ptes").

This patch (of 2):

The check for is_zone_device_page() and is_device_private_page() is
unnecessary since the latter is sufficient to determine if the page is a
device private page.  Simplify the code for easier reading.

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Bharata B Rao <bharata@linux.ibm.com>
Link: https://lkml.kernel.org/r/20200831212222.22409-1-rcampbell@nvidia.com
Link: https://lkml.kernel.org/r/20200831212222.22409-2-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-05 12:14:30 -07:00
Alistair Popple
ad7df764b7 mm/rmap: fixup copying of soft dirty and uffd ptes
During memory migration a pte is temporarily replaced with a migration
swap pte.  Some pte bits from the existing mapping such as the soft-dirty
and uffd write-protect bits are preserved by copying these to the
temporary migration swap pte.

However these bits are not stored at the same location for swap and
non-swap ptes.  Therefore testing these bits requires using the
appropriate helper function for the given pte type.

Unfortunately several code locations were found where the wrong helper
function is being used to test soft_dirty and uffd_wp bits which leads to
them getting incorrectly set or cleared during page-migration.

Fix these by using the correct tests based on pte type.

Fixes: a5430dda8a ("mm/migrate: support un-addressable ZONE_DEVICE page in migration")
Fixes: 8c3328f1f3 ("mm/migrate: migrate_vma() unmap page from vma while collecting pages")
Fixes: f45ec5ff16 ("userfaultfd: wp: support swap and page migration")
Signed-off-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Alistair Popple <alistair@popple.id.au>
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20200825064232.10023-2-alistair@popple.id.au
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-05 12:14:30 -07:00
Alistair Popple
ebdf8321ee mm/migrate: fixup setting UFFD_WP flag
Commit f45ec5ff16 ("userfaultfd: wp: support swap and page migration")
introduced support for tracking the uffd wp bit during page migration.
However the non-swap PTE variant was used to set the flag for zone device
private pages which are a type of swap page.

This leads to corruption of the swap offset if the original PTE has the
uffd_wp flag set.

Fixes: f45ec5ff16 ("userfaultfd: wp: support swap and page migration")
Signed-off-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Link: https://lkml.kernel.org/r/20200825064232.10023-1-alistair@popple.id.au
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-05 12:14:30 -07:00
Matthew Wilcox (Oracle)
6c357848b4 mm: replace hpage_nr_pages with thp_nr_pages
The thp prefix is more frequently used than hpage and we should be
consistent between the various functions.

[akpm@linux-foundation.org: fix mm/migrate.c]

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Link: http://lkml.kernel.org/r/20200629151959.15779-6-willy@infradead.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-14 19:56:56 -07:00
Joonsoo Kim
a097631160 mm/mempolicy: use a standard migration target allocation callback
There is a well-defined migration target allocation callback.  Use it.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Roman Gushchin <guro@fb.com>
Link: http://lkml.kernel.org/r/1594622517-20681-7-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:58:02 -07:00
Joonsoo Kim
19fc7bed25 mm/migrate: introduce a standard migration target allocation function
There are some similar functions for migration target allocation.  Since
there is no fundamental difference, it's better to keep just one rather
than keeping all variants.  This patch implements base migration target
allocation function.  In the following patches, variants will be converted
to use this function.

Changes should be mechanical, but, unfortunately, there are some
differences.  First, some callers' nodemask is assgined to NULL since NULL
nodemask will be considered as all available nodes, that is,
&node_states[N_MEMORY].  Second, for hugetlb page allocation, gfp_mask is
redefined as regular hugetlb allocation gfp_mask plus __GFP_THISNODE if
user provided gfp_mask has it.  This is because future caller of this
function requires to set this node constaint.  Lastly, if provided nodeid
is NUMA_NO_NODE, nodeid is set up to the node where migration source
lives.  It helps to remove simple wrappers for setting up the nodeid.

Note that PageHighmem() call in previous function is changed to open-code
"is_highmem_idx()" since it provides more readability.

[akpm@linux-foundation.org: tweak patch title, per Vlastimil]
[akpm@linux-foundation.org: fix typo in comment]

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Roman Gushchin <guro@fb.com>
Link: http://lkml.kernel.org/r/1594622517-20681-6-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:58:02 -07:00
Joonsoo Kim
9933a0c8a5 mm/migrate: clear __GFP_RECLAIM to make the migration callback consistent with regular THP allocations
new_page_nodemask is a migration callback and it tries to use a common gfp
flags for the target page allocation whether it is a base page or a THP.
The later only adds GFP_TRANSHUGE to the given mask.  This results in the
allocation being slightly more aggressive than necessary because the
resulting gfp mask will contain also __GFP_RECLAIM_KSWAPD.  THP
allocations usually exclude this flag to reduce over eager background
reclaim during a high THP allocation load which has been seen during large
mmaps initialization.  There is no indication that this is a problem for
migration as well but theoretically the same might happen when migrating
large mappings to a different node.  Make the migration callback
consistent with regular THP allocations.

[akpm@linux-foundation.org: fix comment typo, per Vlastimil]

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Roman Gushchin <guro@fb.com>
Link: http://lkml.kernel.org/r/1594622517-20681-5-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:58:02 -07:00
Joonsoo Kim
d92bbc2719 mm/hugetlb: unify migration callbacks
There is no difference between two migration callback functions,
alloc_huge_page_node() and alloc_huge_page_nodemask(), except
__GFP_THISNODE handling.  It's redundant to have two almost similar
functions in order to handle this flag.  So, this patch tries to remove
one by introducing a new argument, gfp_mask, to
alloc_huge_page_nodemask().

After introducing gfp_mask argument, it's caller's job to provide correct
gfp_mask.  So, every callsites for alloc_huge_page_nodemask() are changed
to provide gfp_mask.

Note that it's safe to remove a node id check in alloc_huge_page_node()
since there is no caller passing NUMA_NO_NODE as a node id.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Roman Gushchin <guro@fb.com>
Link: http://lkml.kernel.org/r/1594622517-20681-4-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:58:02 -07:00
Joonsoo Kim
b4b382238e mm/migrate: move migration helper from .h to .c
It's not performance sensitive function.  Move it to .c.  This is a
preparation step for future change.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Mike Kravetz <mike.kravetz@oracle.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Roman Gushchin <guro@fb.com>
Link: http://lkml.kernel.org/r/1594622517-20681-3-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:58:02 -07:00
Randy Dunlap
eaf444deed mm/migrate.c: delete duplicated word
Drop the repeated word "and".

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Link: http://lkml.kernel.org/r/20200801173822.14973-8-rdunlap@infradead.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:57:58 -07:00
Anshuman Khandual
1a5bae25e3 mm/vmstat: add events for THP migration without split
Add following new vmstat events which will help in validating THP
migration without split.  Statistics reported through these new VM events
will help in performance debugging.

1. THP_MIGRATION_SUCCESS
2. THP_MIGRATION_FAILURE
3. THP_MIGRATION_SPLIT

In addition, these new events also update normal page migration statistics
appropriately via PGMIGRATE_SUCCESS and PGMIGRATE_FAILURE.  While here,
this updates current trace event 'mm_migrate_pages' to accommodate now
available THP statistics.

[akpm@linux-foundation.org: s/hpage_nr_pages/thp_nr_pages/]
[ziy@nvidia.com: v2]
  Link: http://lkml.kernel.org/r/C5E3C65C-8253-4638-9D3C-71A61858BB8B@nvidia.com
[anshuman.khandual@arm.com: s/thp_nr_pages/hpage_nr_pages/]
  Link: http://lkml.kernel.org/r/1594287583-16568-1-git-send-email-anshuman.khandual@arm.com

Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Signed-off-by: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Zi Yan <ziy@nvidia.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Link: http://lkml.kernel.org/r/1594080415-27924-1-git-send-email-anshuman.khandual@arm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:57:57 -07:00
Ralph Campbell
0744f2807a mm/migrate: optimize migrate_vma_setup() for holes
Patch series "mm/migrate: optimize migrate_vma_setup() for holes".

A simple optimization for migrate_vma_*() when the source vma is not an
anonymous vma and a new test case to exercise it.

This patch (of 2):

When migrating system memory to device private memory, if the source
address range is a valid VMA range and there is no memory or a zero page,
the source PFN array is marked as valid but with no PFN.

This lets the device driver allocate private memory and clear it, then
insert the new device private struct page into the CPU's page tables when
migrate_vma_pages() is called.  migrate_vma_pages() only inserts the new
page if the VMA is an anonymous range.

There is no point in telling the device driver to allocate device private
memory and then not migrate the page.  Instead, mark the source PFN array
entries as not migrating to avoid this overhead.

[rcampbell@nvidia.com: v2]
  Link: http://lkml.kernel.org/r/20200710194840.7602-2-rcampbell@nvidia.com

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jason Gunthorpe <jgg@mellanox.com>
Cc: "Bharata B Rao" <bharata@linux.ibm.com>
Cc: Shuah Khan <shuah@kernel.org>
Link: http://lkml.kernel.org/r/20200710194840.7602-1-rcampbell@nvidia.com
Link: http://lkml.kernel.org/r/20200709165711.26584-1-rcampbell@nvidia.com
Link: http://lkml.kernel.org/r/20200709165711.26584-2-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:57:56 -07:00
Joonsoo Kim
b518154e59 mm/vmscan: protect the workingset on anonymous LRU
In current implementation, newly created or swap-in anonymous page is
started on active list.  Growing active list results in rebalancing
active/inactive list so old pages on active list are demoted to inactive
list.  Hence, the page on active list isn't protected at all.

Following is an example of this situation.

Assume that 50 hot pages on active list.  Numbers denote the number of
pages on active/inactive list (active | inactive).

1. 50 hot pages on active list
50(h) | 0

2. workload: 50 newly created (used-once) pages
50(uo) | 50(h)

3. workload: another 50 newly created (used-once) pages
50(uo) | 50(uo), swap-out 50(h)

This patch tries to fix this issue.  Like as file LRU, newly created or
swap-in anonymous pages will be inserted to the inactive list.  They are
promoted to active list if enough reference happens.  This simple
modification changes the above example as following.

1. 50 hot pages on active list
50(h) | 0

2. workload: 50 newly created (used-once) pages
50(h) | 50(uo)

3. workload: another 50 newly created (used-once) pages
50(h) | 50(uo), swap-out 50(uo)

As you can see, hot pages on active list would be protected.

Note that, this implementation has a drawback that the page cannot be
promoted and will be swapped-out if re-access interval is greater than the
size of inactive list but less than the size of total(active+inactive).
To solve this potential issue, following patch will apply workingset
detection similar to the one that's already applied to file LRU.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Hugh Dickins <hughd@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Minchan Kim <minchan@kernel.org>
Link: http://lkml.kernel.org/r/1595490560-15117-3-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-12 10:57:55 -07:00
Ralph Campbell
c1a06df6eb mm/migrate: fix migrate_pgmap_owner w/o CONFIG_MMU_NOTIFIER
On x86_64, when CONFIG_MMU_NOTIFIER is not set/enabled, there is a
compiler error:

   mm/migrate.c: In function 'migrate_vma_collect':
   mm/migrate.c:2481:7: error: 'struct mmu_notifier_range' has no member named 'migrate_pgmap_owner'
     range.migrate_pgmap_owner = migrate->pgmap_owner;
          ^

Fixes: 998427b3ad ("mm/notifier: add migration invalidation type")
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "Jason Gunthorpe" <jgg@mellanox.com>
Link: http://lkml.kernel.org/r/20200806193353.7124-1-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-07 11:33:21 -07:00