Linux 5.10.116
Greg Kroah-Hartman
maintainerDocumentation/vm/memory-model.rst +1 -2
@@ -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.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 115 +SUBLEVEL = 116 EXTRAVERSION = NAME = Dare mighty things
arch/arm/Kconfig +2 -6
@@ -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"
arch/arm/mach-bcm/Kconfig +0 -1
@@ -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
arch/arm/mach-davinci/Kconfig +0 -1
@@ -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
arch/arm/mach-exynos/Kconfig +0 -1
@@ -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
arch/arm/mach-highbank/Kconfig +0 -1
@@ -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
arch/arm/mach-omap2/Kconfig +0 -1
@@ -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
arch/arm/mach-s5pv210/Kconfig +0 -1
@@ -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
arch/arm/mach-tango/Kconfig +0 -1
@@ -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
arch/mips/bmips/setup.c +1 -1
@@ -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");
arch/mips/lantiq/prom.c +1 -1
@@ -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" );
arch/mips/pic32/pic32mzda/init.c +1 -1
@@ -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;
arch/mips/ralink/of.c +1 -1
@@ -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);
drivers/block/drbd/drbd_nl.c +8 -5
@@ -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);
drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c +6 -6
@@ -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; }
drivers/gpu/drm/amd/display/include/gpio_service_interface.h +2 -2
@@ -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(
drivers/net/ethernet/netronome/nfp/nfp_asm.c +2 -2
@@ -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 ; }
fs/proc/kcore.c +0 -2
@@ -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)
include/linux/mmzone.h +0 -31
@@ -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 */
include/linux/regulator/consumer.h +30 -0
@@ -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 *regulatorreturn 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 ;
include/net/bluetooth/hci_core.h +3 -0
@@ -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;
mm/memory.c +2 -0
@@ -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;
mm/migrate.c +5 -2
@@ -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;
mm/mmzone.c +0 -14
@@ -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;
mm/userfaultfd.c +3 -0
@@ -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 @@ static __always_inline ssize_t __mcopy_atomic(struct mm_struct *dst_mm, err = -EFAULT ; goto out; } +flush_dcache_page (page); goto retry; }else BUG_ON (page);
mm/vmstat.c +0 -4
@@ -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 ;
net/bluetooth/hci_core.c +3 -3
@@ -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);
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.116 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/vm/memory-model.rst | 3 - Makefile | 2 arch/arm/Kconfig | 8 -- arch/arm/mach-bcm/Kconfig | 1 arch/arm/mach-davinci/Kconfig | 1 arch/arm/mach-exynos/Kconfig | 1 arch/arm/mach-highbank/Kconfig | 1 arch/arm/mach-omap2/Kconfig | 1 arch/arm/mach-s5pv210/Kconfig | 1 arch/arm/mach-tango/Kconfig | 1 arch/mips/bmips/setup.c | 2 arch/mips/lantiq/prom.c | 2 arch/mips/pic32/pic32mzda/init.c | 2 arch/mips/ralink/of.c | 2 drivers/block/drbd/drbd_nl.c | 13 ++-- drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c | 12 ++-- drivers/gpu/drm/amd/display/include/gpio_service_interface.h | 4 - drivers/net/ethernet/netronome/nfp/nfp_asm.c | 4 - fs/proc/kcore.c | 2 include/linux/mmzone.h | 31 ----------- include/linux/regulator/consumer.h | 30 ++++++++++ include/net/bluetooth/hci_core.h | 3 + mm/memory.c | 2 mm/migrate.c | 7 +- mm/mmzone.c | 14 ---- mm/userfaultfd.c | 3 + mm/vmstat.c | 4 - net/bluetooth/hci_core.c | 6 +- 28 files changed, 72 insertions(+), 91 deletions(-)
Dmitry Osipenko (1):
regulator: consumer: Add missing stubs to regulator/consumer.h
Greg Kroah-Hartman (1):
Linux 5.10.116
Itay Iellin (1):
Bluetooth: Fix the creation of hdev->name
Lee Jones (2):
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
Mike Rapoport (1):
arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
Muchun Song (3):
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()
Nathan Chancellor (2):
MIPS: Use address-of operator on section symbols
nfp: bpf: silence bitwise vs. logical OR warning