From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 93F0C139360 for ; Sun, 8 Aug 2021 13:39:09 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CF17DE0826; Sun, 8 Aug 2021 13:39:08 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 7CC27E0826 for ; Sun, 8 Aug 2021 13:39:08 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 510F133BF05 for ; Sun, 8 Aug 2021 13:39:07 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E0D227BD for ; Sun, 8 Aug 2021 13:39:05 +0000 (UTC) From: "Mike Pagano" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Pagano" Message-ID: <1628429932.3c5c8b25062e5d0d2fd23d8aee1de6d5b138766b.mpagano@gentoo> Subject: [gentoo-commits] proj/linux-patches:4.19 commit in: / X-VCS-Repository: proj/linux-patches X-VCS-Files: 0000_README 1201_linux-4.19.202.patch X-VCS-Directories: / X-VCS-Committer: mpagano X-VCS-Committer-Name: Mike Pagano X-VCS-Revision: 3c5c8b25062e5d0d2fd23d8aee1de6d5b138766b X-VCS-Branch: 4.19 Date: Sun, 8 Aug 2021 13:39:05 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 98234de6-ba88-49de-bcb7-60567eb0fd85 X-Archives-Hash: 4fec74131daa4e68c8f5d56229d1640c commit: 3c5c8b25062e5d0d2fd23d8aee1de6d5b138766b Author: Mike Pagano gentoo org> AuthorDate: Sun Aug 8 13:38:52 2021 +0000 Commit: Mike Pagano gentoo org> CommitDate: Sun Aug 8 13:38:52 2021 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=3c5c8b25 Linux 4.19.202 Signed-off-by: Mike Pagano gentoo.org> 0000_README | 4 + 1201_linux-4.19.202.patch | 574 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 578 insertions(+) diff --git a/0000_README b/0000_README index 76502c8..d188882 100644 --- a/0000_README +++ b/0000_README @@ -843,6 +843,10 @@ Patch: 1200_linux-4.19.201.patch From: https://www.kernel.org Desc: Linux 4.19.201 +Patch: 1201_linux-4.19.202.patch +From: https://www.kernel.org +Desc: Linux 4.19.202 + 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/1201_linux-4.19.202.patch b/1201_linux-4.19.202.patch new file mode 100644 index 0000000..737365a --- /dev/null +++ b/1201_linux-4.19.202.patch @@ -0,0 +1,574 @@ +diff --git a/Makefile b/Makefile +index 80954901733dd..b0f3a4d5a85d3 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + VERSION = 4 + PATCHLEVEL = 19 +-SUBLEVEL = 201 ++SUBLEVEL = 202 + EXTRAVERSION = + NAME = "People's Front" + +diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c +index d984592b0995e..5b3e5483c657c 100644 +--- a/block/bfq-iosched.c ++++ b/block/bfq-iosched.c +@@ -132,6 +132,7 @@ + #include + #include + #include ++#include + + #include "blk.h" + #include "blk-mq.h" +@@ -4212,8 +4213,9 @@ bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic) + ioprio_class = IOPRIO_PRIO_CLASS(bic->ioprio); + switch (ioprio_class) { + default: +- dev_err(bfqq->bfqd->queue->backing_dev_info->dev, +- "bfq: bad prio class %d\n", ioprio_class); ++ pr_err("bdi %s: bfq: bad prio class %d\n", ++ bdi_dev_name(bfqq->bfqd->queue->backing_dev_info), ++ ioprio_class); + /* fall through */ + case IOPRIO_CLASS_NONE: + /* +diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c +index 85bd46e0a745f..ddde117eb2e0e 100644 +--- a/block/blk-cgroup.c ++++ b/block/blk-cgroup.c +@@ -474,7 +474,7 @@ const char *blkg_dev_name(struct blkcg_gq *blkg) + { + /* some drivers (floppy) instantiate a queue w/o disk registered */ + if (blkg->q->backing_dev_info->dev) +- return dev_name(blkg->q->backing_dev_info->dev); ++ return bdi_dev_name(blkg->q->backing_dev_info); + return NULL; + } + EXPORT_SYMBOL_GPL(blkg_dev_name); +diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c +index 7a30952b463d5..66d445b14e513 100644 +--- a/drivers/firmware/arm_scmi/bus.c ++++ b/drivers/firmware/arm_scmi/bus.c +@@ -100,6 +100,9 @@ int scmi_driver_register(struct scmi_driver *driver, struct module *owner, + { + int retval; + ++ if (!driver->probe) ++ return -EINVAL; ++ + driver->driver.bus = &scmi_bus_type; + driver->driver.name = driver->name; + driver->driver.owner = owner; +diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c +index 2d1952849d69f..12ade478533f4 100644 +--- a/drivers/gpu/drm/i915/intel_engine_cs.c ++++ b/drivers/gpu/drm/i915/intel_engine_cs.c +@@ -463,7 +463,7 @@ static void intel_engine_init_execlist(struct intel_engine_cs *engine) + struct intel_engine_execlists * const execlists = &engine->execlists; + + execlists->port_mask = 1; +- BUILD_BUG_ON_NOT_POWER_OF_2(execlists_num_ports(execlists)); ++ GEM_BUG_ON(!is_power_of_2(execlists_num_ports(execlists))); + GEM_BUG_ON(execlists_num_ports(execlists) > EXECLIST_MAX_PORTS); + + execlists->queue_priority = INT_MIN; +diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c b/drivers/net/ethernet/qlogic/qed/qed_mcp.c +index 938ace333af10..0d62db3241bed 100644 +--- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c ++++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c +@@ -498,14 +498,18 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn, + + spin_lock_bh(&p_hwfn->mcp_info->cmd_lock); + +- if (!qed_mcp_has_pending_cmd(p_hwfn)) ++ if (!qed_mcp_has_pending_cmd(p_hwfn)) { ++ spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + break; ++ } + + rc = qed_mcp_update_pending_cmd(p_hwfn, p_ptt); +- if (!rc) ++ if (!rc) { ++ spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + break; +- else if (rc != -EAGAIN) ++ } else if (rc != -EAGAIN) { + goto err; ++ } + + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + +@@ -522,6 +526,8 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn, + return -EAGAIN; + } + ++ spin_lock_bh(&p_hwfn->mcp_info->cmd_lock); ++ + /* Send the mailbox command */ + qed_mcp_reread_offsets(p_hwfn, p_ptt); + seq_num = ++p_hwfn->mcp_info->drv_mb_seq; +@@ -548,14 +554,18 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn, + + spin_lock_bh(&p_hwfn->mcp_info->cmd_lock); + +- if (p_cmd_elem->b_is_completed) ++ if (p_cmd_elem->b_is_completed) { ++ spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + break; ++ } + + rc = qed_mcp_update_pending_cmd(p_hwfn, p_ptt); +- if (!rc) ++ if (!rc) { ++ spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + break; +- else if (rc != -EAGAIN) ++ } else if (rc != -EAGAIN) { + goto err; ++ } + + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + } while (++cnt < max_retries); +@@ -576,6 +586,7 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn, + return -EAGAIN; + } + ++ spin_lock_bh(&p_hwfn->mcp_info->cmd_lock); + qed_mcp_cmd_del_elem(p_hwfn, p_cmd_elem); + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock); + +diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c +index 726fb5561a0fb..4764e4f54cefe 100644 +--- a/drivers/net/usb/r8152.c ++++ b/drivers/net/usb/r8152.c +@@ -3960,9 +3960,10 @@ static int rtl8152_close(struct net_device *netdev) + tp->rtl_ops.down(tp); + + mutex_unlock(&tp->control); ++ } + ++ if (!res) + usb_autopm_put_interface(tp->intf); +- } + + free_all_mem(tp); + +diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c +index e2b171057b3b3..690e8ddf5f6b8 100644 +--- a/drivers/spi/spi-mt65xx.c ++++ b/drivers/spi/spi-mt65xx.c +@@ -391,24 +391,15 @@ static int mtk_spi_fifo_transfer(struct spi_master *master, + mtk_spi_prepare_transfer(master, xfer); + mtk_spi_setup_packet(master); + +- cnt = xfer->len / 4; +- if (xfer->tx_buf) ++ if (xfer->tx_buf) { ++ cnt = xfer->len / 4; + iowrite32_rep(mdata->base + SPI_TX_DATA_REG, xfer->tx_buf, cnt); +- +- if (xfer->rx_buf) +- ioread32_rep(mdata->base + SPI_RX_DATA_REG, xfer->rx_buf, cnt); +- +- remainder = xfer->len % 4; +- if (remainder > 0) { +- reg_val = 0; +- if (xfer->tx_buf) { ++ remainder = xfer->len % 4; ++ if (remainder > 0) { ++ reg_val = 0; + memcpy(®_val, xfer->tx_buf + (cnt * 4), remainder); + writel(reg_val, mdata->base + SPI_TX_DATA_REG); + } +- if (xfer->rx_buf) { +- reg_val = readl(mdata->base + SPI_RX_DATA_REG); +- memcpy(xfer->rx_buf + (cnt * 4), ®_val, remainder); +- } + } + + mtk_spi_enable_transfer(master); +diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c +index 059c9eddb5468..347f0389b0899 100644 +--- a/drivers/watchdog/iTCO_wdt.c ++++ b/drivers/watchdog/iTCO_wdt.c +@@ -75,8 +75,6 @@ + #define TCOBASE(p) ((p)->tco_res->start) + /* SMI Control and Enable Register */ + #define SMI_EN(p) ((p)->smi_res->start) +-#define TCO_EN (1 << 13) +-#define GBL_SMI_EN (1 << 0) + + #define TCO_RLD(p) (TCOBASE(p) + 0x00) /* TCO Timer Reload/Curr. Value */ + #define TCOv1_TMR(p) (TCOBASE(p) + 0x01) /* TCOv1 Timer Initial Value*/ +@@ -332,12 +330,8 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t) + + tmrval = seconds_to_ticks(p, t); + +- /* +- * If TCO SMIs are off, the timer counts down twice before rebooting. +- * Otherwise, the BIOS generally reboots when the SMI triggers. +- */ +- if (p->smi_res && +- (SMI_EN(p) & (TCO_EN | GBL_SMI_EN)) != (TCO_EN | GBL_SMI_EN)) ++ /* For TCO v1 the timer counts down twice before rebooting */ ++ if (p->iTCO_version == 1) + tmrval /= 2; + + /* from the specs: */ +@@ -499,7 +493,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev) + * Disables TCO logic generating an SMI# + */ + val32 = inl(SMI_EN(p)); +- val32 &= ~TCO_EN; /* Turn off SMI clearing watchdog */ ++ val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ + outl(val32, SMI_EN(p)); + } + +diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c +index c71e534ca7ef6..919c033b9e316 100644 +--- a/fs/btrfs/compression.c ++++ b/fs/btrfs/compression.c +@@ -270,8 +270,7 @@ static void end_compressed_bio_write(struct bio *bio) + cb->start, + cb->start + cb->len - 1, + NULL, +- bio->bi_status ? +- BLK_STS_OK : BLK_STS_NOTSUPP); ++ !cb->errors); + cb->compressed_pages[0]->mapping = NULL; + + end_compressed_writeback(inode, cb); +diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c +index abdf98deeec40..e6b7d43b50776 100644 +--- a/fs/ceph/debugfs.c ++++ b/fs/ceph/debugfs.c +@@ -251,7 +251,7 @@ int ceph_fs_debugfs_init(struct ceph_fs_client *fsc) + goto out; + + snprintf(name, sizeof(name), "../../bdi/%s", +- dev_name(fsc->sb->s_bdi->dev)); ++ bdi_dev_name(fsc->sb->s_bdi)); + fsc->debugfs_bdi = + debugfs_create_symlink("bdi", + fsc->client->debugfs_dir, +diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h +index 07e02d6df5ad9..65d47522413c1 100644 +--- a/include/linux/backing-dev-defs.h ++++ b/include/linux/backing-dev-defs.h +@@ -197,6 +197,7 @@ struct backing_dev_info { + wait_queue_head_t wb_waitq; + + struct device *dev; ++ char dev_name[64]; + struct device *owner; + + struct timer_list laptop_mode_wb_timer; +diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h +index 1ef4aca7b953f..d28d57eefe9fd 100644 +--- a/include/linux/backing-dev.h ++++ b/include/linux/backing-dev.h +@@ -499,13 +499,6 @@ static inline int bdi_rw_congested(struct backing_dev_info *bdi) + (1 << WB_async_congested)); + } + +-extern const char *bdi_unknown_name; +- +-static inline const char *bdi_dev_name(struct backing_dev_info *bdi) +-{ +- if (!bdi || !bdi->dev) +- return bdi_unknown_name; +- return dev_name(bdi->dev); +-} ++const char *bdi_dev_name(struct backing_dev_info *bdi); + + #endif /* _LINUX_BACKING_DEV_H */ +diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h +index 3d323c6c85260..b51da879d7be0 100644 +--- a/include/linux/cpuhotplug.h ++++ b/include/linux/cpuhotplug.h +@@ -59,6 +59,7 @@ enum cpuhp_state { + CPUHP_IOMMU_INTEL_DEAD, + CPUHP_LUSTRE_CFS_DEAD, + CPUHP_AP_ARM_CACHE_B15_RAC_DEAD, ++ CPUHP_PADATA_DEAD, + CPUHP_WORKQUEUE_PREP, + CPUHP_POWER_NUMA_PREPARE, + CPUHP_HRTIMERS_PREPARE, +diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h +index 1b63fc2f42d1c..52d53d134f72c 100644 +--- a/include/linux/mfd/rt5033-private.h ++++ b/include/linux/mfd/rt5033-private.h +@@ -203,13 +203,13 @@ enum rt5033_reg { + #define RT5033_REGULATOR_BUCK_VOLTAGE_MIN 1000000U + #define RT5033_REGULATOR_BUCK_VOLTAGE_MAX 3000000U + #define RT5033_REGULATOR_BUCK_VOLTAGE_STEP 100000U +-#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 32 ++#define RT5033_REGULATOR_BUCK_VOLTAGE_STEP_NUM 21 + + /* RT5033 regulator LDO output voltage uV */ + #define RT5033_REGULATOR_LDO_VOLTAGE_MIN 1200000U + #define RT5033_REGULATOR_LDO_VOLTAGE_MAX 3000000U + #define RT5033_REGULATOR_LDO_VOLTAGE_STEP 100000U +-#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 32 ++#define RT5033_REGULATOR_LDO_VOLTAGE_STEP_NUM 19 + + /* RT5033 regulator SAFE LDO output voltage uV */ + #define RT5033_REGULATOR_SAFE_LDO_VOLTAGE 4900000U +diff --git a/include/linux/padata.h b/include/linux/padata.h +index d803397a28f70..8c9827cc63747 100644 +--- a/include/linux/padata.h ++++ b/include/linux/padata.h +@@ -138,7 +138,8 @@ struct parallel_data { + /** + * struct padata_instance - The overall control structure. + * +- * @cpu_notifier: cpu hotplug notifier. ++ * @cpu_online_node: Linkage for CPU online callback. ++ * @cpu_dead_node: Linkage for CPU offline callback. + * @wq: The workqueue in use. + * @pd: The internal control structure. + * @cpumask: User supplied cpumasks for parallel and serial works. +@@ -150,7 +151,8 @@ struct parallel_data { + * @flags: padata flags. + */ + struct padata_instance { +- struct hlist_node node; ++ struct hlist_node cpu_online_node; ++ struct hlist_node cpu_dead_node; + struct workqueue_struct *wq; + struct parallel_data *pd; + struct padata_cpumask cpumask; +diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h +index 37342a13c9cb9..9996420d7ec46 100644 +--- a/include/trace/events/wbt.h ++++ b/include/trace/events/wbt.h +@@ -33,7 +33,7 @@ TRACE_EVENT(wbt_stat, + ), + + TP_fast_assign( +- strlcpy(__entry->name, dev_name(bdi->dev), ++ strlcpy(__entry->name, bdi_dev_name(bdi), + ARRAY_SIZE(__entry->name)); + __entry->rmean = stat[0].mean; + __entry->rmin = stat[0].min; +@@ -68,7 +68,7 @@ TRACE_EVENT(wbt_lat, + ), + + TP_fast_assign( +- strlcpy(__entry->name, dev_name(bdi->dev), ++ strlcpy(__entry->name, bdi_dev_name(bdi), + ARRAY_SIZE(__entry->name)); + __entry->lat = div_u64(lat, 1000); + ), +@@ -105,7 +105,7 @@ TRACE_EVENT(wbt_step, + ), + + TP_fast_assign( +- strlcpy(__entry->name, dev_name(bdi->dev), ++ strlcpy(__entry->name, bdi_dev_name(bdi), + ARRAY_SIZE(__entry->name)); + __entry->msg = msg; + __entry->step = step; +@@ -141,7 +141,7 @@ TRACE_EVENT(wbt_timer, + ), + + TP_fast_assign( +- strlcpy(__entry->name, dev_name(bdi->dev), ++ strlcpy(__entry->name, bdi_dev_name(bdi), + ARRAY_SIZE(__entry->name)); + __entry->status = status; + __entry->step = step; +diff --git a/kernel/padata.c b/kernel/padata.c +index 93e4fb2d9f2ee..7f2b6d369fd47 100644 +--- a/kernel/padata.c ++++ b/kernel/padata.c +@@ -682,7 +682,7 @@ static int __padata_remove_cpu(struct padata_instance *pinst, int cpu) + { + struct parallel_data *pd = NULL; + +- if (cpumask_test_cpu(cpu, cpu_online_mask)) { ++ if (!cpumask_test_cpu(cpu, cpu_online_mask)) { + + if (!padata_validate_cpumask(pinst, pinst->cpumask.pcpu) || + !padata_validate_cpumask(pinst, pinst->cpumask.cbcpu)) +@@ -748,7 +748,7 @@ static int padata_cpu_online(unsigned int cpu, struct hlist_node *node) + struct padata_instance *pinst; + int ret; + +- pinst = hlist_entry_safe(node, struct padata_instance, node); ++ pinst = hlist_entry_safe(node, struct padata_instance, cpu_online_node); + if (!pinst_has_cpu(pinst, cpu)) + return 0; + +@@ -758,12 +758,12 @@ static int padata_cpu_online(unsigned int cpu, struct hlist_node *node) + return ret; + } + +-static int padata_cpu_prep_down(unsigned int cpu, struct hlist_node *node) ++static int padata_cpu_dead(unsigned int cpu, struct hlist_node *node) + { + struct padata_instance *pinst; + int ret; + +- pinst = hlist_entry_safe(node, struct padata_instance, node); ++ pinst = hlist_entry_safe(node, struct padata_instance, cpu_dead_node); + if (!pinst_has_cpu(pinst, cpu)) + return 0; + +@@ -779,7 +779,9 @@ static enum cpuhp_state hp_online; + static void __padata_free(struct padata_instance *pinst) + { + #ifdef CONFIG_HOTPLUG_CPU +- cpuhp_state_remove_instance_nocalls(hp_online, &pinst->node); ++ cpuhp_state_remove_instance_nocalls(CPUHP_PADATA_DEAD, ++ &pinst->cpu_dead_node); ++ cpuhp_state_remove_instance_nocalls(hp_online, &pinst->cpu_online_node); + #endif + + padata_stop(pinst); +@@ -963,7 +965,10 @@ static struct padata_instance *padata_alloc(struct workqueue_struct *wq, + mutex_init(&pinst->lock); + + #ifdef CONFIG_HOTPLUG_CPU +- cpuhp_state_add_instance_nocalls_cpuslocked(hp_online, &pinst->node); ++ cpuhp_state_add_instance_nocalls_cpuslocked(hp_online, ++ &pinst->cpu_online_node); ++ cpuhp_state_add_instance_nocalls_cpuslocked(CPUHP_PADATA_DEAD, ++ &pinst->cpu_dead_node); + #endif + return pinst; + +@@ -1010,17 +1015,24 @@ static __init int padata_driver_init(void) + int ret; + + ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "padata:online", +- padata_cpu_online, +- padata_cpu_prep_down); ++ padata_cpu_online, NULL); + if (ret < 0) + return ret; + hp_online = ret; ++ ++ ret = cpuhp_setup_state_multi(CPUHP_PADATA_DEAD, "padata:dead", ++ NULL, padata_cpu_dead); ++ if (ret < 0) { ++ cpuhp_remove_multi_state(hp_online); ++ return ret; ++ } + return 0; + } + module_init(padata_driver_init); + + static __exit void padata_driver_exit(void) + { ++ cpuhp_remove_multi_state(CPUHP_PADATA_DEAD); + cpuhp_remove_multi_state(hp_online); + } + module_exit(padata_driver_exit); +diff --git a/mm/backing-dev.c b/mm/backing-dev.c +index 2152e85891d1f..1d37c80d023a2 100644 +--- a/mm/backing-dev.c ++++ b/mm/backing-dev.c +@@ -19,7 +19,7 @@ struct backing_dev_info noop_backing_dev_info = { + EXPORT_SYMBOL_GPL(noop_backing_dev_info); + + static struct class *bdi_class; +-const char *bdi_unknown_name = "(unknown)"; ++static const char *bdi_unknown_name = "(unknown)"; + + /* + * bdi_lock protects updates to bdi_list. bdi_list has RCU reader side +@@ -880,7 +880,8 @@ int bdi_register_va(struct backing_dev_info *bdi, const char *fmt, va_list args) + if (bdi->dev) /* The driver needs to use separate queues per device */ + return 0; + +- dev = device_create_vargs(bdi_class, NULL, MKDEV(0, 0), bdi, fmt, args); ++ vsnprintf(bdi->dev_name, sizeof(bdi->dev_name), fmt, args); ++ dev = device_create(bdi_class, NULL, MKDEV(0, 0), bdi, bdi->dev_name); + if (IS_ERR(dev)) + return PTR_ERR(dev); + +@@ -976,6 +977,14 @@ void bdi_put(struct backing_dev_info *bdi) + } + EXPORT_SYMBOL(bdi_put); + ++const char *bdi_dev_name(struct backing_dev_info *bdi) ++{ ++ if (!bdi || !bdi->dev) ++ return bdi_unknown_name; ++ return bdi->dev_name; ++} ++EXPORT_SYMBOL_GPL(bdi_dev_name); ++ + static wait_queue_head_t congestion_wqh[2] = { + __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[0]), + __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[1]) +diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c +index e9902bf0f137e..219cdbb476fb7 100644 +--- a/net/bluetooth/hci_core.c ++++ b/net/bluetooth/hci_core.c +@@ -1609,6 +1609,14 @@ int hci_dev_do_close(struct hci_dev *hdev) + + BT_DBG("%s %p", hdev->name, hdev); + ++ if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && ++ !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && ++ test_bit(HCI_UP, &hdev->flags)) { ++ /* Execute vendor specific shutdown routine */ ++ if (hdev->shutdown) ++ hdev->shutdown(hdev); ++ } ++ + cancel_delayed_work(&hdev->power_off); + + hci_request_cancel_all(hdev); +@@ -1682,14 +1690,6 @@ int hci_dev_do_close(struct hci_dev *hdev) + clear_bit(HCI_INIT, &hdev->flags); + } + +- if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && +- !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && +- test_bit(HCI_UP, &hdev->flags)) { +- /* Execute vendor specific shutdown routine */ +- if (hdev->shutdown) +- hdev->shutdown(hdev); +- } +- + /* flush cmd work */ + flush_work(&hdev->cmd_work); + +diff --git a/net/core/skbuff.c b/net/core/skbuff.c +index ea9684bcc2e8d..e1daab49b0eb0 100644 +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -2705,8 +2705,11 @@ skb_zerocopy_headlen(const struct sk_buff *from) + + if (!from->head_frag || + skb_headlen(from) < L1_CACHE_BYTES || +- skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS) ++ skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS) { + hlen = skb_headlen(from); ++ if (!hlen) ++ hlen = from->len; ++ } + + if (skb_has_frag_list(from)) + hlen = from->len; +diff --git a/sound/soc/codecs/tlv320aic31xx.h b/sound/soc/codecs/tlv320aic31xx.h +index 0b587585b38bb..6071de5fca57f 100644 +--- a/sound/soc/codecs/tlv320aic31xx.h ++++ b/sound/soc/codecs/tlv320aic31xx.h +@@ -147,8 +147,8 @@ struct aic31xx_pdata { + #define AIC31XX_WORD_LEN_24BITS 0x02 + #define AIC31XX_WORD_LEN_32BITS 0x03 + #define AIC31XX_IFACE1_MASTER_MASK GENMASK(3, 2) +-#define AIC31XX_BCLK_MASTER BIT(2) +-#define AIC31XX_WCLK_MASTER BIT(3) ++#define AIC31XX_BCLK_MASTER BIT(3) ++#define AIC31XX_WCLK_MASTER BIT(2) + + /* AIC31XX_DATA_OFFSET */ + #define AIC31XX_DATA_OFFSET_MASK GENMASK(7, 0)