Merge 5.10.53 into android12-5.10-lts
Changes in 5.10.53 ARM: dts: gemini: rename mdio to the right name ARM: dts: gemini: add device_type on pci ARM: dts: rockchip: Fix thermal sensor cells o rk322x ARM: dts: rockchip: fix pinctrl sleep nodename for rk3036-kylin and rk3288 arm64: dts: rockchip: fix pinctrl sleep nodename for rk3399.dtsi ARM: dts: rockchip: Fix the timer clocks order ARM: dts: rockchip: Fix IOMMU nodes properties on rk322x ARM: dts: rockchip: Fix power-controller node names for rk3066a ARM: dts: rockchip: Fix power-controller node names for rk3188 ARM: dts: rockchip: Fix power-controller node names for rk3288 arm64: dts: rockchip: Fix power-controller node names for px30 arm64: dts: rockchip: Fix power-controller node names for rk3328 arm64: dts: rockchip: Fix power-controller node names for rk3399 reset: ti-syscon: fix to_ti_syscon_reset_data macro ARM: brcmstb: dts: fix NAND nodes names ARM: Cygnus: dts: fix NAND nodes names ARM: NSP: dts: fix NAND nodes names ARM: dts: BCM63xx: Fix NAND nodes names ARM: dts: Hurricane 2: Fix NAND nodes names ARM: dts: imx6: phyFLEX: Fix UART hardware flow control ARM: imx: pm-imx5: Fix references to imx5_cpu_suspend_info arm64: dts: rockchip: fix regulator-gpio states array ARM: dts: ux500: Fix interrupt cells ARM: dts: ux500: Rename gpio-controller node ARM: dts: ux500: Fix orientation of accelerometer ARM: dts: imx6dl-riotboard: configure PHY clock and set proper EEE value rtc: mxc_v2: add missing MODULE_DEVICE_TABLE kbuild: sink stdout from cmd for silent build ARM: dts: am57xx-cl-som-am57x: fix ti,no-reset-on-init flag for gpios ARM: dts: am437x-gp-evm: fix ti,no-reset-on-init flag for gpios ARM: dts: am335x: fix ti,no-reset-on-init flag for gpios ARM: dts: OMAP2+: Replace underscores in sub-mailbox node names arm64: dts: ti: k3-am654x/j721e/j7200-common-proc-board: Fix MCU_RGMII1_TXC direction ARM: tegra: wm8903: Fix polarity of headphones-detection GPIO in device-trees ARM: tegra: nexus7: Correct 3v3 regulator GPIO of PM269 variant arm64: dts: qcom: sc7180: Move rmtfs memory region ARM: dts: stm32: Remove extra size-cells on dhcom-pdk2 ARM: dts: stm32: Fix touchscreen node on dhcom-pdk2 ARM: dts: stm32: fix stm32mp157c-odyssey card detect pin ARM: dts: stm32: fix gpio-keys node on STM32 MCU boards ARM: dts: stm32: fix RCC node name on stm32f429 MCU ARM: dts: stm32: fix timer nodes on STM32 MCU to prevent warnings memory: tegra: Fix compilation warnings on 64bit platforms firmware: arm_scmi: Add SMCCC discovery dependency in Kconfig firmware: arm_scmi: Fix the build when CONFIG_MAILBOX is not selected ARM: dts: bcm283x: Fix up MMC node names ARM: dts: bcm283x: Fix up GPIO LED node names arm64: dts: juno: Update SCPI nodes as per the YAML schema ARM: dts: rockchip: fix supply properties in io-domains nodes ARM: dts: stm32: fix i2c node name on stm32f746 to prevent warnings ARM: dts: stm32: move stmmac axi config in ethernet node on stm32mp15 ARM: dts: stm32: fix the Odyssey SoM eMMC VQMMC supply ARM: dts: stm32: Drop unused linux,wakeup from touchscreen node on DHCOM SoM ARM: dts: stm32: Rename spi-flash/mx66l51235l@N to flash@N on DHCOM SoM ARM: dts: stm32: fix stpmic node for stm32mp1 boards ARM: OMAP2+: Block suspend for am3 and am4 if PM is not configured soc/tegra: fuse: Fix Tegra234-only builds firmware: tegra: bpmp: Fix Tegra234-only builds arm64: dts: ls208xa: remove bus-num from dspi node arm64: dts: imx8mq: assign PCIe clocks thermal/core: Correct function name thermal_zone_device_unregister() thermal/drivers/rcar_gen3_thermal: Do not shadow rcar_gen3_ths_tj_1 thermal/drivers/imx_sc: Add missing of_node_put for loop iteration thermal/drivers/sprd: Add missing of_node_put for loop iteration kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set arch/arm64/boot/dts/marvell: fix NAND partitioning scheme rtc: max77686: Do not enforce (incorrect) interrupt trigger type scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 scsi: libsas: Add LUN number check in .slave_alloc callback scsi: libfc: Fix array index out of bound exception scsi: qedf: Add check to synchronize abort and flush sched/fair: Fix CFS bandwidth hrtimer expiry type perf/x86/intel/uncore: Clean up error handling path of iio mapping thermal/core/thermal_of: Stop zone device before unregistering it s390/traps: do not test MONITOR CALL without CONFIG_BUG s390: introduce proper type handling call_on_stack() macro cifs: prevent NULL deref in cifs_compose_mount_options() firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware compatible string arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file Revert "swap: fix do_swap_page() race with swapoff" f2fs: Show casefolding support only when supported mm/thp: simplify copying of huge zero page pmd when fork mm/userfaultfd: fix uffd-wp special cases for fork() mm/page_alloc: fix memory map initialization for descending nodes usb: cdns3: Enable TDL_CHK only for OUT ep net: bcmgenet: ensure EXT_ENERGY_DET_MASK is clear net: dsa: mv88e6xxx: enable .port_set_policy() on Topaz net: dsa: mv88e6xxx: use correct .stats_set_histogram() on Topaz net: dsa: mv88e6xxx: enable .rmu_disable() on Topaz net: dsa: mv88e6xxx: enable devlink ATU hash param for Topaz net: ipv6: fix return value of ip6_skb_dst_mtu netfilter: ctnetlink: suspicious RCU usage in ctnetlink_dump_helpinfo net/sched: act_ct: fix err check for nf_conntrack_confirm vmxnet3: fix cksum offload issues for tunnels with non-default udp ports net/sched: act_ct: remove and free nf_table callbacks net: bridge: sync fdb to new unicast-filtering ports net: netdevsim: use xso.real_dev instead of xso.dev in callback functions of struct xfrmdev_ops net: bcmgenet: Ensure all TX/RX queues DMAs are disabled net: ip_tunnel: fix mtu calculation for ETHER tunnel devices net: moxa: fix UAF in moxart_mac_probe net: qcom/emac: fix UAF in emac_remove net: ti: fix UAF in tlan_remove_one net: send SYNACK packet with accepted fwmark net: validate lwtstate->data before returning from skb_tunnel_info() Revert "mm/shmem: fix shmem_swapin() race with swapoff" net: dsa: properly check for the bridge_leave methods in dsa_switch_bridge_leave() net: fddi: fix UAF in fza_probe dma-buf/sync_file: Don't leak fences on merge failure kbuild: do not suppress Kconfig prompts for silent build ARM: dts: aspeed: Fix AST2600 machines line names ARM: dts: tacoma: Add phase corrections for eMMC tcp: consistently disable header prediction for mptcp tcp: annotate data races around tp->mtu_info tcp: fix tcp_init_transfer() to not reset icsk_ca_initialized ipv6: tcp: drop silly ICMPv6 packet too big messages tcp: call sk_wmem_schedule before sk_mem_charge in zerocopy path tools: bpf: Fix error in 'make -C tools/ bpf_install' bpftool: Properly close va_list 'ap' by va_end() on error bpf: Track subprog poke descriptors correctly and fix use-after-free perf test bpf: Free obj_buf drm/panel: nt35510: Do not fail if DSI read fails udp: annotate data races around unix_sk(sk)->gso_size Linux 5.10.53 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Iac8fe9cd2abb2d8dd993967205a97c89f01f3647
This commit is contained in:
106
mm/page_alloc.c
106
mm/page_alloc.c
@@ -6284,7 +6284,7 @@ void __ref memmap_init_zone_device(struct zone *zone,
|
||||
return;
|
||||
|
||||
/*
|
||||
* The call to memmap_init_zone should have already taken care
|
||||
* The call to memmap_init should have already taken care
|
||||
* of the pages reserved for the memmap, so we can just jump to
|
||||
* the end of that region and start processing the device pages.
|
||||
*/
|
||||
@@ -6349,7 +6349,7 @@ static void __meminit zone_init_free_lists(struct zone *zone)
|
||||
/*
|
||||
* Only struct pages that correspond to ranges defined by memblock.memory
|
||||
* are zeroed and initialized by going through __init_single_page() during
|
||||
* memmap_init_zone().
|
||||
* memmap_init_zone_range().
|
||||
*
|
||||
* But, there could be struct pages that correspond to holes in
|
||||
* memblock.memory. This can happen because of the following reasons:
|
||||
@@ -6368,9 +6368,9 @@ static void __meminit zone_init_free_lists(struct zone *zone)
|
||||
* zone/node above the hole except for the trailing pages in the last
|
||||
* section that will be appended to the zone/node below.
|
||||
*/
|
||||
static u64 __meminit init_unavailable_range(unsigned long spfn,
|
||||
unsigned long epfn,
|
||||
int zone, int node)
|
||||
static void __init init_unavailable_range(unsigned long spfn,
|
||||
unsigned long epfn,
|
||||
int zone, int node)
|
||||
{
|
||||
unsigned long pfn;
|
||||
u64 pgcnt = 0;
|
||||
@@ -6386,58 +6386,84 @@ static u64 __meminit init_unavailable_range(unsigned long spfn,
|
||||
pgcnt++;
|
||||
}
|
||||
|
||||
return pgcnt;
|
||||
if (pgcnt)
|
||||
pr_info("On node %d, zone %s: %lld pages in unavailable ranges",
|
||||
node, zone_names[zone], pgcnt);
|
||||
}
|
||||
#else
|
||||
static inline u64 init_unavailable_range(unsigned long spfn, unsigned long epfn,
|
||||
int zone, int node)
|
||||
static inline void init_unavailable_range(unsigned long spfn,
|
||||
unsigned long epfn,
|
||||
int zone, int node)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void __meminit __weak memmap_init(unsigned long size, int nid,
|
||||
unsigned long zone,
|
||||
unsigned long range_start_pfn)
|
||||
static void __init memmap_init_zone_range(struct zone *zone,
|
||||
unsigned long start_pfn,
|
||||
unsigned long end_pfn,
|
||||
unsigned long *hole_pfn)
|
||||
{
|
||||
unsigned long zone_start_pfn = zone->zone_start_pfn;
|
||||
unsigned long zone_end_pfn = zone_start_pfn + zone->spanned_pages;
|
||||
int nid = zone_to_nid(zone), zone_id = zone_idx(zone);
|
||||
|
||||
start_pfn = clamp(start_pfn, zone_start_pfn, zone_end_pfn);
|
||||
end_pfn = clamp(end_pfn, zone_start_pfn, zone_end_pfn);
|
||||
|
||||
if (start_pfn >= end_pfn)
|
||||
return;
|
||||
|
||||
memmap_init_zone(end_pfn - start_pfn, nid, zone_id, start_pfn,
|
||||
zone_end_pfn, MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
|
||||
|
||||
if (*hole_pfn < start_pfn)
|
||||
init_unavailable_range(*hole_pfn, start_pfn, zone_id, nid);
|
||||
|
||||
*hole_pfn = end_pfn;
|
||||
}
|
||||
|
||||
void __init __weak memmap_init(void)
|
||||
{
|
||||
static unsigned long hole_pfn;
|
||||
unsigned long start_pfn, end_pfn;
|
||||
unsigned long range_end_pfn = range_start_pfn + size;
|
||||
int i;
|
||||
u64 pgcnt = 0;
|
||||
unsigned long hole_pfn = 0;
|
||||
int i, j, zone_id, nid;
|
||||
|
||||
for_each_mem_pfn_range(i, nid, &start_pfn, &end_pfn, NULL) {
|
||||
start_pfn = clamp(start_pfn, range_start_pfn, range_end_pfn);
|
||||
end_pfn = clamp(end_pfn, range_start_pfn, range_end_pfn);
|
||||
for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
|
||||
struct pglist_data *node = NODE_DATA(nid);
|
||||
|
||||
if (end_pfn > start_pfn) {
|
||||
size = end_pfn - start_pfn;
|
||||
memmap_init_zone(size, nid, zone, start_pfn, range_end_pfn,
|
||||
MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
|
||||
for (j = 0; j < MAX_NR_ZONES; j++) {
|
||||
struct zone *zone = node->node_zones + j;
|
||||
|
||||
if (!populated_zone(zone))
|
||||
continue;
|
||||
|
||||
memmap_init_zone_range(zone, start_pfn, end_pfn,
|
||||
&hole_pfn);
|
||||
zone_id = j;
|
||||
}
|
||||
|
||||
if (hole_pfn < start_pfn)
|
||||
pgcnt += init_unavailable_range(hole_pfn, start_pfn,
|
||||
zone, nid);
|
||||
hole_pfn = end_pfn;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARSEMEM
|
||||
/*
|
||||
* Initialize the hole in the range [zone_end_pfn, section_end].
|
||||
* If zone boundary falls in the middle of a section, this hole
|
||||
* will be re-initialized during the call to this function for the
|
||||
* higher zone.
|
||||
* Initialize the memory map for hole in the range [memory_end,
|
||||
* section_end].
|
||||
* Append the pages in this hole to the highest zone in the last
|
||||
* node.
|
||||
* The call to init_unavailable_range() is outside the ifdef to
|
||||
* silence the compiler warining about zone_id set but not used;
|
||||
* for FLATMEM it is a nop anyway
|
||||
*/
|
||||
end_pfn = round_up(range_end_pfn, PAGES_PER_SECTION);
|
||||
end_pfn = round_up(end_pfn, PAGES_PER_SECTION);
|
||||
if (hole_pfn < end_pfn)
|
||||
pgcnt += init_unavailable_range(hole_pfn, end_pfn,
|
||||
zone, nid);
|
||||
#endif
|
||||
init_unavailable_range(hole_pfn, end_pfn, zone_id, nid);
|
||||
}
|
||||
|
||||
if (pgcnt)
|
||||
pr_info(" %s zone: %llu pages in unavailable ranges\n",
|
||||
zone_names[zone], pgcnt);
|
||||
/* A stub for backwards compatibility with custom implementatin on IA-64 */
|
||||
void __meminit __weak arch_memmap_init(unsigned long size, int nid,
|
||||
unsigned long zone,
|
||||
unsigned long range_start_pfn)
|
||||
{
|
||||
}
|
||||
|
||||
static int zone_batchsize(struct zone *zone)
|
||||
@@ -7136,7 +7162,7 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
|
||||
set_pageblock_order();
|
||||
setup_usemap(pgdat, zone, zone_start_pfn, size);
|
||||
init_currently_empty_zone(zone, zone_start_pfn, size);
|
||||
memmap_init(size, nid, j, zone_start_pfn);
|
||||
arch_memmap_init(size, nid, j, zone_start_pfn);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7662,6 +7688,8 @@ void __init free_area_init(unsigned long *max_zone_pfn)
|
||||
node_set_state(nid, N_MEMORY);
|
||||
check_for_memory(pgdat, nid);
|
||||
}
|
||||
|
||||
memmap_init();
|
||||
}
|
||||
|
||||
static int __init cmdline_parse_core(char *p, unsigned long *core,
|
||||
|
Reference in New Issue
Block a user