Linux 4.19.241
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.241 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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
------------
Makefile | 2 arch/ia64/kernel/kprobes.c | 78 +++++++++++++++++++- arch/powerpc/include/asm/exception-64s.h | 37 +++++---- drivers/block/Kconfig | 16 ++++ drivers/block/floppy.c | 43 ++++++++--- drivers/lightnvm/Kconfig | 2 drivers/media/platform/vicodec/vicodec-core.c | 6 - drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c | 8 ++ drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h | 4 - drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 13 ++- drivers/net/hamradio/6pack.c | 5 - net/sched/cls_u32.c | 18 ++-- 12 files changed, 180 insertions(+), 52 deletions(-)
Dafna Hirschfeld (1):
media: vicodec: upon release, call m2m release before freeing ctrl handler
Eric Dumazet (1):
net/sched: cls_u32: fix netns refcount changes in u32_change()
Greg Kroah-Hartman (3):
Revert "net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link"
lightnvm: disable the subsystem
Linux 4.19.241
Lin Ma (2):
hamradio: defer 6pack kfree after unregister_netdev
hamradio: remove needs_free_netdev to avoid UAF
Masami Hiramatsu (3):
Revert "ia64: kprobes: Fix to pass correct trampoline address to the handler" Revert "ia64: kprobes: Use generic kretprobe trampoline handler"
ia64: kprobes: Fix to pass correct trampoline address to the handler
Michael Ellerman (1):
powerpc/64s: Unmerge EX_LR and EX_DAR
Nicholas Piggin (1):
powerpc/64/interrupt: Temporarily save PPR on stack to fix register corruption due to SLB miss
Willy Tarreau (1):
floppy: disable FDRAWCMD by default
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 240 +SUBLEVEL = 241 EXTRAVERSION = NAME = "People's Front"
arch/ia64/kernel/kprobes.c +75 -3
92 lines not on this page · raw message
arch/powerpc/include/asm/exception-64s.h +22 -15
@@ -48,11 +48,12 @@#define EX_CCR 52#define EX_CFAR 56#define EX_PPR 64 +#define EX_LR 72#if defined(CONFIG_RELOCATABLE ) -#define EX_CTR 72 -#define EX_SIZE 10/* size in u64 units */ +#define EX_CTR 80 +#define EX_SIZE 11/* size in u64 units */ #else -#define EX_SIZE 9/* size in u64 units */ +#define EX_SIZE 10/* size in u64 units */ #endif /*
@@ -60,14 +61,6 @@*/ #define MAX_MCE_DEPTH 4 -/* -* EX_LR is only used in EXSLB and where it does not overlap with EX_DAR -* EX_CCR similarly with DSISR, but being 4 byte registers there is a hole -* in the save area so it's not necessary to overlap them. Could be used -* for future savings though if another 4 byte register was to be saved. -*/ -#define EX_LR EX_DAR -/* * EX_R3 is only used by the bad_stack handler. bad_stack reloads and * saves DAR from SPRN_DAR, and EX_DAR is not used. So EX_R3 can overlap
@@ -243,10 +236,22 @@* PPR save/restore macros used in exceptions_64s.S * Used for P7 or later processors */ -#define SAVE_PPR (area, ra, rb) \ +#define SAVE_PPR (area, ra) \ +BEGIN_FTR_SECTION_NESTED(940) \ + ld ra,area+EX_PPR(r13);/* Read PPR from paca */ \ +std ra,RESULT (r1 );/* Store PPR in RESULT for now */ \ +END_FTR_SECTION_NESTED (CPU_FTR_HAS_PPR ,CPU_FTR_HAS_PPR ,940 ) + +/* +* This is called after we are finished accessing 'area', so we can now take +* SLB faults accessing the thread struct, which will use PACA_EXSLB area. +* This is required because the large_addr_slb handler uses EXSLB and it also +* uses the common exception macros including this PPR saving. + */ +#define MOVE_PPR_TO_THREAD (ra, rb) \ BEGIN_FTR_SECTION_NESTED(940) \ ld ra,PACACURRENT(r13); \ - ld rb,area+EX_PPR(r13);/* Read PPR from paca */ \ + ld rb,RESULT(r1);/* Read PPR from stack */ \std rb,TASKTHREADPPR (ra ); \END_FTR_SECTION_NESTED (CPU_FTR_HAS_PPR ,CPU_FTR_HAS_PPR ,940 )
@@ -515,9 +520,11 @@ END_FTR_SECTION_NESTED(ftr,ftr,943) 3: EXCEPTION_PROLOG_COMMON_1(); \ beq 4f; /* if from kernel mode */ \ACCOUNT_CPU_USER_ENTRY (r13, r9, r10); \ -SAVE_PPR (area, r9, r10); \ +SAVE_PPR (area, r9); \ 4: EXCEPTION_PROLOG_COMMON_2(area) \ - EXCEPTION_PROLOG_COMMON_3(n) \ + beq 5f; /* if from kernel mode */ \ +MOVE_PPR_TO_THREAD (r9, r10); \ +5: EXCEPTION_PROLOG_COMMON_3(n) \ACCOUNT_STOLEN_TIME /* Save original regs values from save area to stack frame. */
drivers/block/Kconfig +16 -0
@@ -39,6 +39,22 @@ config BLK_DEV_FD To compile this driver as a module, choose M here: the module will be called floppy. +config BLK_DEV_FD_RAWCMD + bool "Support for raw floppy disk commands (DEPRECATED)" + depends on BLK_DEV_FD + help + If you want to use actual physical floppies and expect to do + special low-level hardware accesses to them (access and use + non-standard formats, for example), then enable this. + + Note that the code enabled by this option is rarely used and + might be unstable or insecure, and distros should not enable it. + + Note: FDRAWCMD is deprecated and will be removed from the kernel + in the near future. + + If unsure, say N. + config AMIGA_FLOPPY tristate "Amiga floppy support" depends on AMIGA
drivers/block/floppy.c +32 -11
67 lines not on this page · raw message
drivers/lightnvm/Kconfig +1 -1
@@ -4,7 +4,7 @@ menuconfig NVM bool "Open-Channel SSD target support" - depends on BLOCK && PCI + depends on BLOCK && PCI && BROKEN select BLK_DEV_NVME help Say Y here to get to enable Open-channel SSDs.
drivers/media/platform/vicodec/vicodec-core.c +3 -3
@@ -1297,12 +1297,12 @@ static int vicodec_release(struct file *file)struct video_device *vfd =video_devdata (file);struct vicodec_ctx *ctx =file2ctx (file); -v4l2_fh_del (&ctx->fh); -v4l2_fh_exit (&ctx->fh); -v4l2_ctrl_handler_free (&ctx->hdl);mutex_lock (vfd->lock);v4l2_m2m_ctx_release (ctx->fh.m2m_ctx);mutex_unlock (vfd->lock); +v4l2_fh_del (&ctx->fh); +v4l2_fh_exit (&ctx->fh); +v4l2_ctrl_handler_free (&ctx->hdl);kfree (ctx);return 0 ;
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c +8 -0
@@ -68,6 +68,10 @@#define TSE_PCS_USE_SGMII_ENA BIT(0)#define TSE_PCS_IF_USE_SGMII 0x03 +#define SGMII_ADAPTER_CTRL_REG 0x00 +#define SGMII_ADAPTER_DISABLE 0x0001 +#define SGMII_ADAPTER_ENABLE 0x0000 +#define AUTONEGO_LINK_TIMER 20static int tse_pcs_reset (void __iomem *base,struct tse_pcs *pcs)
@@ -209,8 +213,12 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev, unsigned int speed) {void __iomem *tse_pcs_base = pcs->tse_pcs_base; +void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;u32 val; +writew (SGMII_ADAPTER_ENABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); + pcs->autoneg = phy_dev->autoneg;if (phy_dev->autoneg ==AUTONEG_ENABLE ) {
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h +0 -4
@@ -21,10 +21,6 @@#include <linux/phy.h> #include <linux/timer.h> -#define SGMII_ADAPTER_CTRL_REG 0x00 -#define SGMII_ADAPTER_ENABLE 0x0000 -#define SGMII_ADAPTER_DISABLE 0x0001 -struct tse_pcs {struct device *dev;void __iomem *tse_pcs_base;
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +8 -5
@@ -29,6 +29,9 @@#include "altr_tse_pcs.h" +#define SGMII_ADAPTER_CTRL_REG 0x00 +#define SGMII_ADAPTER_DISABLE 0x0001 +#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
@@ -62,14 +65,16 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed) {struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;void __iomem *splitter_base = dwmac->splitter_base; +void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;struct device *dev = dwmac->dev;struct net_device *ndev =dev_get_drvdata (dev);struct phy_device *phy_dev = ndev->phydev;u32 val; -writew (SGMII_ADAPTER_DISABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); +if ((tse_pcs_base) && (sgmii_adapter_base)) +writew (SGMII_ADAPTER_DISABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG );if (splitter_base) { val =readl (splitter_base +EMAC_SPLITTER_CTRL_REG );
@@ -91,9 +96,7 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)writel (val, splitter_base +EMAC_SPLITTER_CTRL_REG ); } -writew (SGMII_ADAPTER_ENABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); -if (phy_dev) +if (tse_pcs_base && sgmii_adapter_base)tse_pcs_fix_mac_speed (&dwmac->pcs, phy_dev, speed); }
drivers/net/hamradio/6pack.c +3 -2
@@ -311,7 +311,6 @@ static void sp_setup(struct net_device *dev) {/* Finish setting up the DEVICE info. */ dev->netdev_ops = &sp_netdev_ops; - dev->needs_free_netdev = true; dev->mtu =SIXP_MTU ; dev->hard_header_len =AX25_MAX_HEADER_LEN ; dev->header_ops = &ax25_header_ops;
@@ -679,9 +678,11 @@ static void sixpack_close(struct tty_struct *tty)del_timer_sync (&sp->tx_t);del_timer_sync (&sp->resync_t); -/* Free all 6pack frame buffers. */ +/* Free all 6pack frame buffers after unreg. */ kfree (sp->rbuff);kfree (sp->xbuff); + +free_netdev (sp->dev); }/* Perform I/O control on an active 6pack channel. */
net/sched/cls_u32.c +11 -7
@@ -404,15 +404,20 @@ static int u32_init(struct tcf_proto *tp)return 0 ; } -static int u32_destroy_key (struct tcf_proto *tp,struct tc_u_knode *n, -bool free_pf) +static void __u32_destroy_key (struct tc_u_knode *n) {struct tc_u_hnode *ht =rtnl_dereference (n->ht_down);tcf_exts_destroy (&n->exts); -tcf_exts_put_net (&n->exts);if (ht && --ht->refcnt ==0 )kfree (ht); +kfree (n); +} + +static void u32_destroy_key (struct tcf_proto *tp,struct tc_u_knode *n, +bool free_pf) +{ +tcf_exts_put_net (&n->exts);#ifdef CONFIG_CLS_U32_PERF if (free_pf)free_percpu (n->pf);
@@ -421,8 +426,7 @@ static int u32_destroy_key(struct tcf_proto *tp, struct tc_u_knode *n,if (free_pf)free_percpu (n->pcpu_success);#endif -kfree (n); -return 0 ; +__u32_destroy_key (n); }/* u32_delete_key_rcu should be called when free'ing a copied
@@ -965,13 +969,13 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, tca[TCA_RATE], ovr, extack);if (err) { -u32_destroy_key (tp, new, false); +__u32_destroy_key (new);return err; } err =u32_replace_hw_knode (tp, new, flags, extack);if (err) { -u32_destroy_key (tp, new, false); +__u32_destroy_key (new);return err; }