diff options
author | Mike Pagano <mpagano@gentoo.org> | 2022-05-15 18:10:17 -0400 |
---|---|---|
committer | Mike Pagano <mpagano@gentoo.org> | 2022-05-15 18:10:17 -0400 |
commit | e3c14a90a3d9b3c0076842b5fbc28e710836fe1e (patch) | |
tree | b01a6ab9579d70599c9a621d9de595f1a803ab10 | |
parent | Linux patch 5.10.115 (diff) | |
download | linux-patches-e3c14a90a3d9b3c0076842b5fbc28e710836fe1e.tar.gz linux-patches-e3c14a90a3d9b3c0076842b5fbc28e710836fe1e.tar.bz2 linux-patches-e3c14a90a3d9b3c0076842b5fbc28e710836fe1e.zip |
Linux patch 5.10.1165.10-125
Signed-off-by: Mike Pagano <mpagano@gentoo.org>
-rw-r--r-- | 0000_README | 4 | ||||
-rw-r--r-- | 1115_linux-5.10.116.patch | 563 |
2 files changed, 567 insertions, 0 deletions
diff --git a/0000_README b/0000_README index 46bc953b..3d86ae35 100644 --- a/0000_README +++ b/0000_README @@ -503,6 +503,10 @@ Patch: 1114_linux-5.10.115.patch From: http://www.kernel.org Desc: Linux 5.10.115 +Patch: 1115_linux-5.10.116.patch +From: http://www.kernel.org +Desc: Linux 5.10.116 + Patch: 1500_XATTR_USER_PREFIX.patch From: https://bugs.gentoo.org/show_bug.cgi?id=470644 Desc: Support for namespace user.pax.* on tmpfs. diff --git a/1115_linux-5.10.116.patch b/1115_linux-5.10.116.patch new file mode 100644 index 00000000..ef864f4c --- /dev/null +++ b/1115_linux-5.10.116.patch @@ -0,0 +1,563 @@ +diff --git a/Documentation/vm/memory-model.rst b/Documentation/vm/memory-model.rst +index 9daadf9faba14..ce398a7dc6cd5 100644 +--- a/Documentation/vm/memory-model.rst ++++ b/Documentation/vm/memory-model.rst +@@ -51,8 +51,7 @@ call :c:func:`free_area_init` function. Yet, the mappings array is not + usable until the call to :c:func:`memblock_free_all` that hands all the + memory to the page allocator. + +-If an architecture enables `CONFIG_ARCH_HAS_HOLES_MEMORYMODEL` option, +-it may free parts of the `mem_map` array that do not cover the ++An architecture may free parts of the `mem_map` array that do not cover the + actual physical pages. In such case, the architecture specific + :c:func:`pfn_valid` implementation should take the holes in the + `mem_map` into account. +diff --git a/Makefile b/Makefile +index 86d3e137d7f2d..c999de1b6a6b2 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + VERSION = 5 + PATCHLEVEL = 10 +-SUBLEVEL = 115 ++SUBLEVEL = 116 + EXTRAVERSION = + NAME = Dare mighty things + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index a0eac00e2c81a..b587ecc6f9493 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -25,7 +25,7 @@ config ARM + select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST + select ARCH_HAVE_CUSTOM_GPIO_H + select ARCH_HAS_GCOV_PROFILE_ALL +- select ARCH_KEEP_MEMBLOCK if HAVE_ARCH_PFN_VALID || KEXEC ++ select ARCH_KEEP_MEMBLOCK + select ARCH_MIGHT_HAVE_PC_PARPORT + select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN + select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX +@@ -521,7 +521,6 @@ config ARCH_S3C24XX + config ARCH_OMAP1 + bool "TI OMAP1" + depends on MMU +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARCH_OMAP + select CLKDEV_LOOKUP + select CLKSRC_MMIO +@@ -1481,9 +1480,6 @@ config OABI_COMPAT + UNPREDICTABLE (in fact it can be predicted that it won't work + at all). If in doubt say N. + +-config ARCH_HAS_HOLES_MEMORYMODEL +- bool +- + config ARCH_SELECT_MEMORY_MODEL + bool + +@@ -1495,7 +1491,7 @@ config ARCH_SPARSEMEM_ENABLE + select SPARSEMEM_STATIC if SPARSEMEM + + config HAVE_ARCH_PFN_VALID +- def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM ++ def_bool y + + config HIGHMEM + bool "High Memory Support" +diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig +index ae790908fc74a..9b594ae98153c 100644 +--- a/arch/arm/mach-bcm/Kconfig ++++ b/arch/arm/mach-bcm/Kconfig +@@ -211,7 +211,6 @@ config ARCH_BRCMSTB + select BCM7038_L1_IRQ + select BRCMSTB_L2_IRQ + select BCM7120_L2_IRQ +- select ARCH_HAS_HOLES_MEMORYMODEL + select ZONE_DMA if ARM_LPAE + select SOC_BRCMSTB + select SOC_BUS +diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig +index f56ff8c24043d..de11030748d0b 100644 +--- a/arch/arm/mach-davinci/Kconfig ++++ b/arch/arm/mach-davinci/Kconfig +@@ -5,7 +5,6 @@ menuconfig ARCH_DAVINCI + depends on ARCH_MULTI_V5 + select DAVINCI_TIMER + select ZONE_DMA +- select ARCH_HAS_HOLES_MEMORYMODEL + select PM_GENERIC_DOMAINS if PM + select PM_GENERIC_DOMAINS_OF if PM && OF + select REGMAP_MMIO +diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig +index 56314b1c74089..b5df98ee5d176 100644 +--- a/arch/arm/mach-exynos/Kconfig ++++ b/arch/arm/mach-exynos/Kconfig +@@ -8,7 +8,6 @@ + menuconfig ARCH_EXYNOS + bool "Samsung Exynos" + depends on ARCH_MULTI_V7 +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select ARM_GIC +diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig +index 1bc68913d62c1..9de38ce8124f2 100644 +--- a/arch/arm/mach-highbank/Kconfig ++++ b/arch/arm/mach-highbank/Kconfig +@@ -2,7 +2,6 @@ + config ARCH_HIGHBANK + bool "Calxeda ECX-1000/2000 (Highbank/Midway)" + depends on ARCH_MULTI_V7 +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select ARM_ERRATA_764369 if SMP +diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig +index 3f62a0c9450dd..164985505f9e5 100644 +--- a/arch/arm/mach-omap2/Kconfig ++++ b/arch/arm/mach-omap2/Kconfig +@@ -93,7 +93,6 @@ config SOC_DRA7XX + config ARCH_OMAP2PLUS + bool + select ARCH_HAS_BANDGAP +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARCH_HAS_RESET_CONTROLLER + select ARCH_OMAP + select CLKSRC_MMIO +diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig +index 95d4e82848662..d644b45bc29d0 100644 +--- a/arch/arm/mach-s5pv210/Kconfig ++++ b/arch/arm/mach-s5pv210/Kconfig +@@ -8,7 +8,6 @@ + config ARCH_S5PV210 + bool "Samsung S5PV210/S5PC110" + depends on ARCH_MULTI_V7 +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARM_VIC + select CLKSRC_SAMSUNG_PWM + select COMMON_CLK_SAMSUNG +diff --git a/arch/arm/mach-tango/Kconfig b/arch/arm/mach-tango/Kconfig +index 25b2fd4348617..a9eeda36aeb15 100644 +--- a/arch/arm/mach-tango/Kconfig ++++ b/arch/arm/mach-tango/Kconfig +@@ -3,7 +3,6 @@ config ARCH_TANGO + bool "Sigma Designs Tango4 (SMP87xx)" + depends on ARCH_MULTI_V7 + # Cortex-A9 MPCore r3p0, PL310 r3p2 +- select ARCH_HAS_HOLES_MEMORYMODEL + select ARM_ERRATA_754322 + select ARM_ERRATA_764369 if SMP + select ARM_ERRATA_775420 +diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c +index 19308df5f5779..1b06b25aea87d 100644 +--- a/arch/mips/bmips/setup.c ++++ b/arch/mips/bmips/setup.c +@@ -167,7 +167,7 @@ void __init plat_mem_setup(void) + dtb = phys_to_virt(fw_arg2); + else if (fw_passed_dtb) /* UHI interface or appended dtb */ + dtb = (void *)fw_passed_dtb; +- else if (__dtb_start != __dtb_end) ++ else if (&__dtb_start != &__dtb_end) + dtb = (void *)__dtb_start; + else + panic("no dtb found"); +diff --git a/arch/mips/lantiq/prom.c b/arch/mips/lantiq/prom.c +index 51a218f04fe0d..3f568f5aae2d1 100644 +--- a/arch/mips/lantiq/prom.c ++++ b/arch/mips/lantiq/prom.c +@@ -79,7 +79,7 @@ void __init plat_mem_setup(void) + + if (fw_passed_dtb) /* UHI interface */ + dtb = (void *)fw_passed_dtb; +- else if (__dtb_start != __dtb_end) ++ else if (&__dtb_start != &__dtb_end) + dtb = (void *)__dtb_start; + else + panic("no dtb found"); +diff --git a/arch/mips/pic32/pic32mzda/init.c b/arch/mips/pic32/pic32mzda/init.c +index 50f376f058f43..f232c77ff5265 100644 +--- a/arch/mips/pic32/pic32mzda/init.c ++++ b/arch/mips/pic32/pic32mzda/init.c +@@ -28,7 +28,7 @@ static ulong get_fdtaddr(void) + if (fw_passed_dtb && !fw_arg2 && !fw_arg3) + return (ulong)fw_passed_dtb; + +- if (__dtb_start < __dtb_end) ++ if (&__dtb_start < &__dtb_end) + ftaddr = (ulong)__dtb_start; + + return ftaddr; +diff --git a/arch/mips/ralink/of.c b/arch/mips/ralink/of.c +index a971f1aca096c..3017263ac4f9f 100644 +--- a/arch/mips/ralink/of.c ++++ b/arch/mips/ralink/of.c +@@ -77,7 +77,7 @@ void __init plat_mem_setup(void) + */ + if (fw_passed_dtb) + dtb = (void *)fw_passed_dtb; +- else if (__dtb_start != __dtb_end) ++ else if (&__dtb_start != &__dtb_end) + dtb = (void *)__dtb_start; + + __dt_setup_arch(dtb); +diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c +index f8d0146bf7852..54f77b4a0b494 100644 +--- a/drivers/block/drbd/drbd_nl.c ++++ b/drivers/block/drbd/drbd_nl.c +@@ -790,9 +790,11 @@ int drbd_adm_set_role(struct sk_buff *skb, struct genl_info *info) + mutex_lock(&adm_ctx.resource->adm_mutex); + + if (info->genlhdr->cmd == DRBD_ADM_PRIMARY) +- retcode = drbd_set_role(adm_ctx.device, R_PRIMARY, parms.assume_uptodate); ++ retcode = (enum drbd_ret_code)drbd_set_role(adm_ctx.device, ++ R_PRIMARY, parms.assume_uptodate); + else +- retcode = drbd_set_role(adm_ctx.device, R_SECONDARY, 0); ++ retcode = (enum drbd_ret_code)drbd_set_role(adm_ctx.device, ++ R_SECONDARY, 0); + + mutex_unlock(&adm_ctx.resource->adm_mutex); + genl_lock(); +@@ -1962,7 +1964,7 @@ int drbd_adm_attach(struct sk_buff *skb, struct genl_info *info) + drbd_flush_workqueue(&connection->sender_work); + + rv = _drbd_request_state(device, NS(disk, D_ATTACHING), CS_VERBOSE); +- retcode = rv; /* FIXME: Type mismatch. */ ++ retcode = (enum drbd_ret_code)rv; + drbd_resume_io(device); + if (rv < SS_SUCCESS) + goto fail; +@@ -2687,7 +2689,8 @@ int drbd_adm_connect(struct sk_buff *skb, struct genl_info *info) + } + rcu_read_unlock(); + +- retcode = conn_request_state(connection, NS(conn, C_UNCONNECTED), CS_VERBOSE); ++ retcode = (enum drbd_ret_code)conn_request_state(connection, ++ NS(conn, C_UNCONNECTED), CS_VERBOSE); + + conn_reconfig_done(connection); + mutex_unlock(&adm_ctx.resource->adm_mutex); +@@ -2800,7 +2803,7 @@ int drbd_adm_disconnect(struct sk_buff *skb, struct genl_info *info) + mutex_lock(&adm_ctx.resource->adm_mutex); + rv = conn_try_disconnect(connection, parms.force_disconnect); + if (rv < SS_SUCCESS) +- retcode = rv; /* FIXME: Type mismatch. */ ++ retcode = (enum drbd_ret_code)rv; + else + retcode = NO_ERROR; + mutex_unlock(&adm_ctx.resource->adm_mutex); +diff --git a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c +index 92280cc05e2db..dae8e489c8cf4 100644 +--- a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c ++++ b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c +@@ -53,8 +53,8 @@ + */ + + struct gpio_service *dal_gpio_service_create( +- enum dce_version dce_version_major, +- enum dce_version dce_version_minor, ++ enum dce_version dce_version, ++ enum dce_environment dce_environment, + struct dc_context *ctx) + { + struct gpio_service *service; +@@ -67,14 +67,14 @@ struct gpio_service *dal_gpio_service_create( + return NULL; + } + +- if (!dal_hw_translate_init(&service->translate, dce_version_major, +- dce_version_minor)) { ++ if (!dal_hw_translate_init(&service->translate, dce_version, ++ dce_environment)) { + BREAK_TO_DEBUGGER(); + goto failure_1; + } + +- if (!dal_hw_factory_init(&service->factory, dce_version_major, +- dce_version_minor)) { ++ if (!dal_hw_factory_init(&service->factory, dce_version, ++ dce_environment)) { + BREAK_TO_DEBUGGER(); + goto failure_1; + } +diff --git a/drivers/gpu/drm/amd/display/include/gpio_service_interface.h b/drivers/gpu/drm/amd/display/include/gpio_service_interface.h +index 9c55d247227ea..7e3240e73c1fc 100644 +--- a/drivers/gpu/drm/amd/display/include/gpio_service_interface.h ++++ b/drivers/gpu/drm/amd/display/include/gpio_service_interface.h +@@ -42,8 +42,8 @@ void dal_gpio_destroy( + struct gpio **ptr); + + struct gpio_service *dal_gpio_service_create( +- enum dce_version dce_version_major, +- enum dce_version dce_version_minor, ++ enum dce_version dce_version, ++ enum dce_environment dce_environment, + struct dc_context *ctx); + + struct gpio *dal_gpio_service_create_irq( +diff --git a/drivers/net/ethernet/netronome/nfp/nfp_asm.c b/drivers/net/ethernet/netronome/nfp/nfp_asm.c +index 2643ea5948f48..154399c5453fe 100644 +--- a/drivers/net/ethernet/netronome/nfp/nfp_asm.c ++++ b/drivers/net/ethernet/netronome/nfp/nfp_asm.c +@@ -196,7 +196,7 @@ int swreg_to_unrestricted(swreg dst, swreg lreg, swreg rreg, + } + + reg->dst_lmextn = swreg_lmextn(dst); +- reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); ++ reg->src_lmextn = swreg_lmextn(lreg) || swreg_lmextn(rreg); + + return 0; + } +@@ -277,7 +277,7 @@ int swreg_to_restricted(swreg dst, swreg lreg, swreg rreg, + } + + reg->dst_lmextn = swreg_lmextn(dst); +- reg->src_lmextn = swreg_lmextn(lreg) | swreg_lmextn(rreg); ++ reg->src_lmextn = swreg_lmextn(lreg) || swreg_lmextn(rreg); + + return 0; + } +diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c +index e502414b35564..4d2e64e9016c1 100644 +--- a/fs/proc/kcore.c ++++ b/fs/proc/kcore.c +@@ -193,8 +193,6 @@ kclist_add_private(unsigned long pfn, unsigned long nr_pages, void *arg) + return 1; + + p = pfn_to_page(pfn); +- if (!memmap_valid_within(pfn, p, page_zone(p))) +- return 1; + + ent = kmalloc(sizeof(*ent), GFP_KERNEL); + if (!ent) +diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h +index f3016b8e698ab..b2e4599b88832 100644 +--- a/include/linux/mmzone.h ++++ b/include/linux/mmzone.h +@@ -1443,37 +1443,6 @@ struct mminit_pfnnid_cache { + #define pfn_valid_within(pfn) (1) + #endif + +-#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL +-/* +- * pfn_valid() is meant to be able to tell if a given PFN has valid memmap +- * associated with it or not. This means that a struct page exists for this +- * pfn. The caller cannot assume the page is fully initialized in general. +- * Hotplugable pages might not have been onlined yet. pfn_to_online_page() +- * will ensure the struct page is fully online and initialized. Special pages +- * (e.g. ZONE_DEVICE) are never onlined and should be treated accordingly. +- * +- * In FLATMEM, it is expected that holes always have valid memmap as long as +- * there is valid PFNs either side of the hole. In SPARSEMEM, it is assumed +- * that a valid section has a memmap for the entire section. +- * +- * However, an ARM, and maybe other embedded architectures in the future +- * free memmap backing holes to save memory on the assumption the memmap is +- * never used. The page_zone linkages are then broken even though pfn_valid() +- * returns true. A walker of the full memmap must then do this additional +- * check to ensure the memmap they are looking at is sane by making sure +- * the zone and PFN linkages are still valid. This is expensive, but walkers +- * of the full memmap are extremely rare. +- */ +-bool memmap_valid_within(unsigned long pfn, +- struct page *page, struct zone *zone); +-#else +-static inline bool memmap_valid_within(unsigned long pfn, +- struct page *page, struct zone *zone) +-{ +- return true; +-} +-#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */ +- + #endif /* !__GENERATING_BOUNDS.H */ + #endif /* !__ASSEMBLY__ */ + #endif /* _LINUX_MMZONE_H */ +diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h +index 2024944fd2f78..20e84a84fb779 100644 +--- a/include/linux/regulator/consumer.h ++++ b/include/linux/regulator/consumer.h +@@ -331,6 +331,12 @@ regulator_get_exclusive(struct device *dev, const char *id) + return ERR_PTR(-ENODEV); + } + ++static inline struct regulator *__must_check ++devm_regulator_get_exclusive(struct device *dev, const char *id) ++{ ++ return ERR_PTR(-ENODEV); ++} ++ + static inline struct regulator *__must_check + regulator_get_optional(struct device *dev, const char *id) + { +@@ -486,6 +492,11 @@ static inline int regulator_get_voltage(struct regulator *regulator) + return -EINVAL; + } + ++static inline int regulator_sync_voltage(struct regulator *regulator) ++{ ++ return -EINVAL; ++} ++ + static inline int regulator_is_supported_voltage(struct regulator *regulator, + int min_uV, int max_uV) + { +@@ -578,6 +589,25 @@ static inline int devm_regulator_unregister_notifier(struct regulator *regulator + return 0; + } + ++static inline int regulator_suspend_enable(struct regulator_dev *rdev, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ ++static inline int regulator_suspend_disable(struct regulator_dev *rdev, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ ++static inline int regulator_set_suspend_voltage(struct regulator *regulator, ++ int min_uV, int max_uV, ++ suspend_state_t state) ++{ ++ return -EINVAL; ++} ++ + static inline void *regulator_get_drvdata(struct regulator *regulator) + { + return NULL; +diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h +index a592a826e2fb5..09104ca14a3e4 100644 +--- a/include/net/bluetooth/hci_core.h ++++ b/include/net/bluetooth/hci_core.h +@@ -35,6 +35,9 @@ + /* HCI priority */ + #define HCI_PRIO_MAX 7 + ++/* HCI maximum id value */ ++#define HCI_MAX_ID 10000 ++ + /* HCI Core structures */ + struct inquiry_data { + bdaddr_t bdaddr; +diff --git a/mm/memory.c b/mm/memory.c +index 14f91c7467d6f..72236b1ce5903 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -5295,6 +5295,8 @@ long copy_huge_page_from_user(struct page *dst_page, + if (rc) + break; + ++ flush_dcache_page(subpage); ++ + cond_resched(); + } + return ret_val; +diff --git a/mm/migrate.c b/mm/migrate.c +index 278e6f3fa62ce..495bdac5cf929 100644 +--- a/mm/migrate.c ++++ b/mm/migrate.c +@@ -1010,9 +1010,12 @@ static int move_to_new_page(struct page *newpage, struct page *page, + if (!PageMappingFlags(page)) + page->mapping = NULL; + +- if (likely(!is_zone_device_page(newpage))) +- flush_dcache_page(newpage); ++ if (likely(!is_zone_device_page(newpage))) { ++ int i, nr = compound_nr(newpage); + ++ for (i = 0; i < nr; i++) ++ flush_dcache_page(newpage + i); ++ } + } + out: + return rc; +diff --git a/mm/mmzone.c b/mm/mmzone.c +index 4686fdc23bb96..f337831affc2d 100644 +--- a/mm/mmzone.c ++++ b/mm/mmzone.c +@@ -72,20 +72,6 @@ struct zoneref *__next_zones_zonelist(struct zoneref *z, + return z; + } + +-#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL +-bool memmap_valid_within(unsigned long pfn, +- struct page *page, struct zone *zone) +-{ +- if (page_to_pfn(page) != pfn) +- return false; +- +- if (page_zone(page) != zone) +- return false; +- +- return true; +-} +-#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */ +- + void lruvec_init(struct lruvec *lruvec) + { + enum lru_list lru; +diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c +index 9a3d451402d7b..078d95cd32c53 100644 +--- a/mm/userfaultfd.c ++++ b/mm/userfaultfd.c +@@ -83,6 +83,8 @@ static int mcopy_atomic_pte(struct mm_struct *dst_mm, + /* don't free the page */ + goto out; + } ++ ++ flush_dcache_page(page); + } else { + page = *pagep; + *pagep = NULL; +@@ -595,6 +597,7 @@ retry: + err = -EFAULT; + goto out; + } ++ flush_dcache_page(page); + goto retry; + } else + BUG_ON(page); +diff --git a/mm/vmstat.c b/mm/vmstat.c +index 698bc0bc18d14..e292e63afebf2 100644 +--- a/mm/vmstat.c ++++ b/mm/vmstat.c +@@ -1503,10 +1503,6 @@ static void pagetypeinfo_showblockcount_print(struct seq_file *m, + if (!page) + continue; + +- /* Watch for unexpected holes punched in the memmap */ +- if (!memmap_valid_within(pfn, page, zone)) +- continue; +- + if (page_zone(page) != zone) + continue; + +diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c +index 2e7998bad133b..c331b4176de73 100644 +--- a/net/bluetooth/hci_core.c ++++ b/net/bluetooth/hci_core.c +@@ -3718,10 +3718,10 @@ int hci_register_dev(struct hci_dev *hdev) + */ + switch (hdev->dev_type) { + case HCI_PRIMARY: +- id = ida_simple_get(&hci_index_ida, 0, 0, GFP_KERNEL); ++ id = ida_simple_get(&hci_index_ida, 0, HCI_MAX_ID, GFP_KERNEL); + break; + case HCI_AMP: +- id = ida_simple_get(&hci_index_ida, 1, 0, GFP_KERNEL); ++ id = ida_simple_get(&hci_index_ida, 1, HCI_MAX_ID, GFP_KERNEL); + break; + default: + return -EINVAL; +@@ -3730,7 +3730,7 @@ int hci_register_dev(struct hci_dev *hdev) + if (id < 0) + return id; + +- sprintf(hdev->name, "hci%d", id); ++ snprintf(hdev->name, sizeof(hdev->name), "hci%d", id); + hdev->id = id; + + BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus); |