Linux 5.4.214
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.214 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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/input/joydev/joystick.rst | 1 Makefile | 2 drivers/gpu/drm/msm/msm_rd.c | 3 + drivers/hid/intel-ish-hid/ishtp-hid.h | 2 drivers/hid/intel-ish-hid/ishtp/client.c | 68 ++++++++++++++++------------ drivers/input/joystick/iforce/iforce-main.c | 1 drivers/net/ethernet/broadcom/tg3.c | 8 ++- drivers/net/ieee802154/cc2520.c | 1 drivers/net/phy/dp83822.c | 3 - drivers/nvme/target/tcp.c | 3 + drivers/perf/arm_pmu_platform.c | 2 drivers/platform/x86/acer-wmi.c | 9 +++ drivers/soc/fsl/Kconfig | 1 drivers/usb/storage/unusual_uas.h | 7 ++ fs/tracefs/inode.c | 31 +++++++++--- mm/mmap.c | 9 ++- 16 files changed, 104 insertions(+), 47 deletions(-)
Brian Norris (1):
tracefs: Only clobber mode/uid/gid on remount if asked
Enguerrand de Ribaucourt (1):
net: dp83822: disable rx error interrupt
Even Xu (1):
hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message
Greg Kroah-Hartman (1):
Linux 5.4.214
Greg Tulli (1):
Input: iforce - add support for Boeder Force Feedback Wheel
Hans de Goede (1):
platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes
Hu Xiaoying (1):
usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS
Jann Horn (1):
mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
Jason Wang (1):
HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo
Kai-Heng Feng (1):
tg3: Disable tg3 device on system reboot to avoid triggering AER
Li Qiong (1):
ieee802154: cc2520: add rc code in cc2520_tx()
Mathew McBride (1):
soc: fsl: select FSL_GUTS driver for DPIO
Maurizio Lombardi (1):
nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change()
Rob Clark (1):
drm/msm/rd: Fix FIFO-full deadlock
Yu Zhe (1):
perf/arm_pmu_platform: fix tests for platform_get_irq() failure
Greg Kroah-Hartman
maintainerDocumentation/input/joydev/joystick.rst +1 -0
@@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes: * AVB Mag Turbo Force * AVB Top Shot Pegasus * AVB Top Shot Force Feedback Racing Wheel +* Boeder Force Feedback Wheel * Logitech WingMan Force * Logitech WingMan Force Wheel * Guillemot Race Leader Force Feedback
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 213 +SUBLEVEL = 214 EXTRAVERSION = NAME = Kleptomaniac Octopus
drivers/gpu/drm/msm/msm_rd.c +3 -0
@@ -191,6 +191,9 @@ static int rd_open(struct inode *inode, struct file *file) file->private_data = rd; rd->open = true; +/* Reset fifo to clear any previously unread data: */ + rd->fifo.head = rd->fifo.tail =0 ; +/* the parsing tools need to know gpu-id to know which * register database to load. */
drivers/hid/intel-ish-hid/ishtp-hid.h +1 -1
@@ -110,7 +110,7 @@ struct report_list {* @multi_packet_cnt: Count of fragmented packet count * * This structure is used to store completion flags and per client data like -* like report description, number of HID devices etc. +* report description, number of HID devices etc. */ struct ishtp_cl_data {/* completion flags */
drivers/hid/intel-ish-hid/ishtp/client.c +39 -29
91 lines not on this page · raw message
drivers/input/joystick/iforce/iforce-main.c +1 -0
@@ -50,6 +50,7 @@ static struct iforce_device iforce_device[] = { { 0x046d, 0xc291, "Logitech WingMan Formula Force", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x020a, "AVB Top Shot Pegasus", btn_joystick_avb, abs_avb_pegasus, ff_iforce }, { 0x05ef, 0x8884, "AVB Mag Turbo Force", btn_wheel, abs_wheel, ff_iforce }, + { 0x05ef, 0x8886, "Boeder Force Feedback Wheel", btn_wheel, abs_wheel, ff_iforce }, { 0x05ef, 0x8888, "AVB Top Shot Force Feedback Racing Wheel", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc0a4, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce }, //? { 0x061c, 0xc084, "ACT LABS Force RS", btn_wheel, abs_wheel, ff_iforce },
drivers/net/ethernet/broadcom/tg3.c +6 -2
@@ -18154,16 +18154,20 @@ static void tg3_shutdown(struct pci_dev *pdev)struct net_device *dev =pci_get_drvdata (pdev);struct tg3 *tp =netdev_priv (dev); +tg3_reset_task_cancel (tp); +rtnl_lock (); +netif_device_detach (dev);if (netif_running (dev))dev_close (dev); -if (system_state ==SYSTEM_POWER_OFF ) -tg3_power_down (tp); +tg3_power_down (tp);rtnl_unlock (); + +pci_disable_device (pdev); }/**
drivers/net/ieee802154/cc2520.c +1 -0
@@ -507,6 +507,7 @@ cc2520_tx(struct ieee802154_hw *hw, struct sk_buff *skb) goto err_tx;if (status &CC2520_STATUS_TX_UNDERFLOW ) { + rc = -EINVAL ;dev_err (&priv->spi->dev,"cc2520 tx underflow exception\n" ); goto err_tx; }
drivers/net/phy/dp83822.c +1 -2
@@ -197,8 +197,7 @@ static int dp83822_config_intr(struct phy_device *phydev)if (misr_status <0 )return misr_status; - misr_status |= (DP83822_RX_ERR_HF_INT_EN | - DP83822_ANEG_COMPLETE_INT_EN | + misr_status |= (DP83822_ANEG_COMPLETE_INT_EN | DP83822_DUP_MODE_CHANGE_INT_EN | DP83822_SPEED_CHANGED_INT_EN | DP83822_LINK_STAT_INT_EN |
drivers/nvme/target/tcp.c +3 -0
@@ -1416,6 +1416,9 @@ static void nvmet_tcp_state_change(struct sock *sk) goto done;switch (sk->sk_state) { +case TCP_FIN_WAIT2 : +case TCP_LAST_ACK : +break ;case TCP_FIN_WAIT1 :case TCP_CLOSE_WAIT :case TCP_CLOSE :
drivers/perf/arm_pmu_platform.c +1 -1
@@ -118,7 +118,7 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)if (num_irqs ==1 ) {int irq =platform_get_irq (pdev,0 ); -if (irq &&irq_is_percpu_devid (irq)) +if ((irq >0 ) &&irq_is_percpu_devid (irq))return pmu_parse_percpu_irq (pmu, irq); }
drivers/platform/x86/acer-wmi.c +8 -1
@@ -93,6 +93,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */ {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */ {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */ + {KE_KEY, 0x27, {KEY_HELP} }, {KE_KEY, 0x29, {KEY_PROG3} }, /* P_Key for TM8372 */ {KE_IGNORE, 0x41, {KEY_MUTE} }, {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
@@ -106,7 +107,13 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_IGNORE, 0x48, {KEY_VOLUMEUP} }, {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} }, {KE_IGNORE, 0x4a, {KEY_VOLUMEDOWN} }, - {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} }, +/* +* 0x61 is KEY_SWITCHVIDEOMODE. Usually this is a duplicate input event +* with the "Video Bus" input device events. But sometimes it is not +* a dup. Map it to KEY_UNKNOWN instead of using KE_IGNORE so that +* udev/hwdb can override it on systems where it is not a dup. +*/ + {KE_KEY, 0x61, {KEY_UNKNOWN} }, {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} }, {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} }, {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
drivers/soc/fsl/Kconfig +1 -0
@@ -24,6 +24,7 @@ config FSL_MC_DPIO tristate "QorIQ DPAA2 DPIO driver" depends on FSL_MC_BUS select SOC_BUS + select FSL_GUTS help Driver for the DPAA2 DPIO object. A DPIO provides queue and buffer management facilities for software to interact with
drivers/usb/storage/unusual_uas.h +7 -0
@@ -62,6 +62,13 @@ UNUSUAL_DEV(0x0984, 0x0301, 0x0128, 0x0128, USB_SC_DEVICE, USB_PR_DEVICE, NULL, US_FL_IGNORE_UAS), +/* Reported-by: Tom Hu <[email protected]> */ +UNUSUAL_DEV (0x0b05 ,0x1932 ,0x0000 ,0x9999 , +"ASUS" , +"External HDD" , +USB_SC_DEVICE ,USB_PR_DEVICE ,NULL , +US_FL_IGNORE_UAS ), +/* Reported-by: David Webb <[email protected]> */ UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999, "Seagate",
fs/tracefs/inode.c +23 -8
@@ -139,6 +139,8 @@ struct tracefs_mount_opts {kuid_t uid;kgid_t gid;umode_t mode; +/* Opt_* bitfield. */ +unsigned int opts; };enum {
@@ -239,6 +241,7 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)kgid_t gid;char *p; + opts->opts =0 ; opts->mode =TRACEFS_DEFAULT_MODE ;while ((p =strsep (&data,"," )) !=NULL ) {
@@ -273,24 +276,36 @@ static int tracefs_parse_options(char *data, struct tracefs_mount_opts *opts)* but traditionally tracefs has ignored all mount options */ } + + opts->opts |=BIT (token); }return 0 ; } -static int tracefs_apply_options (struct super_block *sb) +static int tracefs_apply_options (struct super_block *sb,bool remount) {struct tracefs_fs_info *fsi = sb->s_fs_info;struct inode *inode = sb->s_root->d_inode;struct tracefs_mount_opts *opts = &fsi->mount_opts; - inode->i_mode &= ~S_IALLUGO ; - inode->i_mode |= opts->mode; +/* +* On remount, only reset mode/uid/gid if they were provided as mount +* options. +*/ + +if (!remount || opts->opts &BIT (Opt_mode)) { + inode->i_mode &= ~S_IALLUGO ; + inode->i_mode |= opts->mode; + } - inode->i_uid = opts->uid; +if (!remount || opts->opts &BIT (Opt_uid)) + inode->i_uid = opts->uid; -/* Set all the group ids to the mount option */ -set_gid (sb->s_root, opts->gid); +if (!remount || opts->opts &BIT (Opt_gid)) { +/* Set all the group ids to the mount option */ +set_gid (sb->s_root, opts->gid); + }return 0 ; }
@@ -305,7 +320,7 @@ static int tracefs_remount(struct super_block *sb, int *flags, char *data)if (err) goto fail; -tracefs_apply_options (sb); +tracefs_apply_options (sb, true); fail:return err;
@@ -357,7 +372,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent) sb->s_op = &tracefs_super_operations; -tracefs_apply_options (sb); +tracefs_apply_options (sb, false);return 0 ;
mm/mmap.c +7 -2
@@ -2605,6 +2605,7 @@ static void unmap_region(struct mm_struct *mm, {struct vm_area_struct *next = prev ? prev->vm_next : mm->mmap;struct mmu_gather tlb; +struct vm_area_struct *cur_vma;lru_add_drain ();tlb_gather_mmu (&tlb, mm, start, end);
@@ -2619,8 +2620,12 @@ static void unmap_region(struct mm_struct *mm,* concurrent flush in this region has to be coming through the rmap, * and we synchronize against that using the rmap lock. */ -if ((vma->vm_flags & (VM_PFNMAP |VM_MIXEDMAP )) !=0 ) -tlb_flush_mmu (&tlb); +for (cur_vma = vma; cur_vma; cur_vma = cur_vma->vm_next) { +if ((cur_vma->vm_flags & (VM_PFNMAP |VM_MIXEDMAP )) !=0 ) { +tlb_flush_mmu (&tlb); +break ; + } + }free_pgtables (&tlb, vma, prev ? prev->vm_end :FIRST_USER_ADDRESS , next ? next->vm_start :USER_PGTABLES_CEILING );