Linux 4.14.310
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.310 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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/alpha/kernel/module.c | 4 +--- arch/mips/include/asm/mach-rc32434/pci.h | 2 +- arch/x86/kernel/cpu/amd.c | 11 ++++++++++- drivers/gpu/drm/i915/intel_ringbuffer.c | 4 ++-- drivers/macintosh/windfarm_lm75_sensor.c | 4 ++-- drivers/macintosh/windfarm_smu_sensors.c | 4 ++-- drivers/media/i2c/ov5640.c | 2 +- drivers/nfc/fdp/i2c.c | 4 ++++ fs/ext4/fsmap.c | 2 ++ fs/ext4/inline.c | 1 - fs/ext4/inode.c | 7 ++++++- fs/ext4/ioctl.c | 1 + fs/ext4/namei.c | 13 +++++++------ fs/ext4/xattr.c | 3 +++ fs/file.c | 1 + include/linux/pci_ids.h | 2 ++ net/caif/caif_usb.c | 3 +++ net/ipv6/ila/ila_xlat.c | 1 + net/nfc/netlink.c | 2 +- net/tipc/socket.c | 2 +- 21 files changed, 52 insertions(+), 23 deletions(-)
Alvaro Karsz (1):
PCI: Add SolidRun vendor ID
Andrew Cooper (1):
x86/CPU/AMD: Disable XSAVES on AMD family 0x17
Darrick J. Wong (1):
ext4: fix another off-by-one fsmap error on 1k block filesystems
Edward Humes (1):
alpha: fix R_ALPHA_LITERAL reloc for large modules
Eric Dumazet (1):
ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping()
Eric Whitney (1):
ext4: fix RENAME_WHITEOUT handling for inline directories
Fedor Pchelkin (1):
nfc: change order inside nfc_se_io error path
Greg Kroah-Hartman (1):
Linux 4.14.310
John Harrison (1):
drm/i915: Don't use BAR mappings for ring buffers with LLC
Kang Chen (1):
nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties
Nathan Chancellor (1):
macintosh: windfarm: Use unsigned type for 1-bit bitfields
Paul Elder (1):
media: ov5640: Fix analogue gain control
Rhythm Mahajan (1):
x86/cpu: Fix LFENCE serialization check in init_amd()
Shigeru Yoshida (1):
net: caif: Fix use-after-free in cfusbl_device_notify()
Theodore Ts'o (1):
fs: prevent out-of-bounds array speculation when closing a file descriptor
Tung Nguyen (1):
tipc: improve function tipc_wait_for_cond()
Ye Bin (2):
ext4: move where set the MAY_INLINE_DATA flag is set
ext4: fix WARNING in ext4_update_inline_data
Zhihao Cheng (1):
ext4: zero i_disksize when initializing the bootloader inode
xurui (1):
MIPS: Fix a compilation issue
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 309 +SUBLEVEL = 310 EXTRAVERSION = NAME = Petit Gorille
arch/alpha/kernel/module.c +1 -3
@@ -158,10 +158,8 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr; symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr; -/* The small sections were sorted to the end of the segment. -The following should definitely cover them. */ - gp = (u64 )me->core_layout.base + me->core_layout.size -0x8000 ; got = sechdrs[me->arch.gotsecindex].sh_addr; + gp = got +0x8000 ;for (i =0 ; i < n; i++) {unsigned long r_sym =ELF64_R_SYM (rela[i].r_info);
arch/mips/include/asm/mach-rc32434/pci.h +1 -1
@@ -377,7 +377,7 @@ struct pci_msu { PCI_CFG04_STAT_SSE | \ PCI_CFG04_STAT_PE) -#define KORINA_CNFG1 ((KORINA_STAT<<16)|KORINA_CMD) +#define KORINA_CNFG1 (KORINA_STAT | KORINA_CMD)#define KORINA_REVID 0#define KORINA_CLASS_CODE 0
arch/x86/kernel/cpu/amd.c +10 -1
@@ -197,6 +197,15 @@ static void init_amd_k6(struct cpuinfo_x86 *c) return; }#endif +/* +* Work around Erratum 1386. The XSAVES instruction malfunctions in +* certain circumstances on Zen1/2 uarch, and not all parts have had +* updated microcode at the time of writing (March 2023). +* +* Affected parts all have no supervisor XSAVE states, meaning that +* the XSAVEC instruction (which works fine) is equivalent. +*/ +clear_cpu_cap (c,X86_FEATURE_XSAVES ); }static void init_amd_k7 (struct cpuinfo_x86 *c)
@@ -941,7 +950,7 @@ static void init_amd(struct cpuinfo_x86 *c)* serializing. */ ret =rdmsrl_safe (MSR_AMD64_DE_CFG , &val); -if (!ret && (val &MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT )) { +if (!ret && (val &MSR_AMD64_DE_CFG_LFENCE_SERIALIZE )) {/* A serializing LFENCE stops RDTSC speculation */ set_cpu_cap (c,X86_FEATURE_LFENCE_RDTSC ); }else {
drivers/gpu/drm/i915/intel_ringbuffer.c +2 -2
@@ -1314,7 +1314,7 @@ int intel_ring_pin(struct intel_ring *ring,if (unlikely (ret))return ret; -if (i915_vma_is_map_and_fenceable (vma)) +if (i915_vma_is_map_and_fenceable (vma) && !HAS_LLC (vma->vm->i915)) addr = (void __force *)i915_vma_pin_iomap (vma);else addr =i915_gem_object_pin_map (vma->obj, map);
@@ -1346,7 +1346,7 @@ void intel_ring_unpin(struct intel_ring *ring)/* Discard any unused bytes beyond that submitted to hw. */ intel_ring_reset (ring, ring->tail); -if (i915_vma_is_map_and_fenceable (ring->vma)) +if (i915_vma_is_map_and_fenceable (ring->vma) && !HAS_LLC (ring->vma->vm->i915))i915_vma_unpin_iomap (ring->vma);else i915_gem_object_unpin_map (ring->vma->obj);
drivers/macintosh/windfarm_lm75_sensor.c +2 -2
@@ -34,8 +34,8 @@#endif struct wf_lm75_sensor { -int ds1775 :1 ; -int inited :1 ; +unsigned int ds1775 :1 ; +unsigned int inited :1 ;struct i2c_client *i2c;struct wf_sensor sens; };
drivers/macintosh/windfarm_smu_sensors.c +2 -2
@@ -275,8 +275,8 @@ struct smu_cpu_power_sensor {struct list_head link;struct wf_sensor *volts;struct wf_sensor *amps; - int fake_volts : 1; - int quadratic : 1; + unsigned int fake_volts : 1; + unsigned int quadratic : 1;struct wf_sensor sens; };#define to_smu_cpu_power (c) container_of(c, struct smu_cpu_power_sensor, sens)
drivers/media/i2c/ov5640.c +1 -1
@@ -2002,7 +2002,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor)/* Auto/manual gain */ ctrls->auto_gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_AUTOGAIN ,0 ,1 ,1 ,1 ); - ctrls->gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_GAIN , + ctrls->gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_ANALOGUE_GAIN ,0 ,1023 ,1 ,0 ); ctrls->saturation = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_SATURATION,
drivers/nfc/fdp/i2c.c +4 -0
@@ -263,6 +263,9 @@ static void fdp_nci_i2c_read_device_properties(struct device *dev, len *sizeof (**fw_vsc_cfg), GFP_KERNEL); +if (!*fw_vsc_cfg) + goto alloc_err; + r =device_property_read_u8_array (dev,FDP_DP_FW_VSC_CFG_NAME , *fw_vsc_cfg, len);
@@ -276,6 +279,7 @@ static void fdp_nci_i2c_read_device_properties(struct device *dev, *fw_vsc_cfg =NULL ; } +alloc_err:dev_dbg (dev,"Clock type: %d, clock frequency: %d, VSC: %s" , *clock_type, *clock_freq, *fw_vsc_cfg !=NULL ?"yes" :"no" ); }
fs/ext4/fsmap.c +2 -0
@@ -499,6 +499,8 @@ static int ext4_getfsmap_datadev(struct super_block *sb, keys[0 ].fmr_physical = bofs;if (keys[1 ].fmr_physical >= eofs) keys[1 ].fmr_physical = eofs -1 ; +if (keys[1 ].fmr_physical < keys[0 ].fmr_physical) +return 0 ; start_fsb = keys[0 ].fmr_physical; end_fsb = keys[1 ].fmr_physical;
fs/ext4/inline.c +0 -1
@@ -163,7 +163,6 @@ int ext4_find_inline_data_nolock(struct inode *inode) (void *)ext4_raw_inode(&is.iloc));EXT4_I (inode)->i_inline_size =EXT4_MIN_INLINE_DATA_SIZE +le32_to_cpu (is.s.here->e_value_size); -ext4_set_inode_state (inode,EXT4_STATE_MAY_INLINE_DATA ); } out:brelse (is.iloc.bh);
fs/ext4/inode.c +6 -1
@@ -4752,8 +4752,13 @@ static inline int ext4_iget_extra_inode(struct inode *inode,if (EXT4_INODE_HAS_XATTR_SPACE (inode) && *magic ==cpu_to_le32 (EXT4_XATTR_MAGIC )) { +int err; +ext4_set_inode_state (inode,EXT4_STATE_XATTR ); -return ext4_find_inline_data_nolock (inode); + err =ext4_find_inline_data_nolock (inode); +if (!err &&ext4_has_inline_data (inode)) +ext4_set_inode_state (inode,EXT4_STATE_MAY_INLINE_DATA ); +return err; }else EXT4_I (inode)->i_inline_off =0 ;return 0 ;
fs/ext4/ioctl.c +1 -0
@@ -150,6 +150,7 @@ static long swap_inode_boot_loader(struct super_block *sb, ei_bl->i_flags =0 ; inode_bl->i_version =1 ;i_size_write (inode_bl,0 ); +EXT4_I (inode_bl)->i_disksize = inode_bl->i_size; inode_bl->i_mode =S_IFREG ;if (ext4_has_feature_extents (sb)) {ext4_set_inode_flag (inode_bl,EXT4_INODE_EXTENTS );
fs/ext4/namei.c +7 -6
@@ -1425,11 +1425,10 @@ static struct buffer_head * ext4_find_entry (struct inode *dir,int has_inline_data =1 ; ret =ext4_find_inline_entry (dir, &fname, res_dir, &has_inline_data); -if (has_inline_data) { -if (inlined) - *inlined =1 ; +if (inlined) + *inlined = has_inline_data; +if (has_inline_data) goto cleanup_and_exit; - } } if ((namelen <= 2) && (name[0] == '.') &&
@@ -3520,7 +3519,8 @@ static void ext4_resetent(handle_t *handle, struct ext4_renament *ent,* so the old->de may no longer valid and need to find it again * before reset old inode info. */ - old.bh =ext4_find_entry (old.dir, &old.dentry->d_name, &old.de,NULL ); + old.bh =ext4_find_entry (old.dir, &old.dentry->d_name, &old.de, + &old.inlined);if (IS_ERR (old.bh)) retval =PTR_ERR (old.bh);if (!old.bh)
@@ -3688,7 +3688,8 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,return retval; } - old.bh =ext4_find_entry (old.dir, &old.dentry->d_name, &old.de,NULL ); + old.bh =ext4_find_entry (old.dir, &old.dentry->d_name, &old.de, + &old.inlined);if (IS_ERR (old.bh))return PTR_ERR (old.bh);/*
fs/ext4/xattr.c +3 -0
@@ -2809,6 +2809,9 @@ int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, (void *)header, total_ino);EXT4_I (inode)->i_extra_isize = new_extra_isize; +if (ext4_has_inline_data (inode)) + error =ext4_find_inline_data_nolock (inode); + cleanup:if (error && (mnt_count !=le16_to_cpu (sbi->s_es->s_mnt_count))) { ext4_warning(inode->i_sb, "Unable to expand inode %lu. Delete some EAs or run e2fsck.",
fs/file.c +1 -0
@@ -629,6 +629,7 @@ int __close_fd(struct files_struct *files, unsigned fd) fdt =files_fdtable (files);if (fd >= fdt->max_fds) goto out_unlock; + fd =array_index_nospec (fd, fdt->max_fds); file = fdt->fd[fd];if (!file) goto out_unlock;
include/linux/pci_ids.h +2 -0
@@ -3045,6 +3045,8 @@#define PCI_VENDOR_ID_3COM_2 0xa727 +#define PCI_VENDOR_ID_SOLIDRUN 0xd063 +#define PCI_VENDOR_ID_DIGIUM 0xd161#define PCI_DEVICE_ID_DIGIUM_HFC4S 0xb410
net/caif/caif_usb.c +3 -0
@@ -135,6 +135,9 @@ static int cfusbl_device_notify(struct notifier_block *me, unsigned long what,struct usb_device *usbdev;int res; +if (what ==NETDEV_UNREGISTER && dev->reg_state >=NETREG_UNREGISTERED ) +return 0 ; +/* Check whether we have a NCM device, and find its VID/PID. */ if (!(dev->dev.parent && dev->dev.parent->driver &&strcmp (dev->dev.parent->driver->name,"cdc_ncm" ) ==0 ))
net/ipv6/ila/ila_xlat.c +1 -0
@@ -442,6 +442,7 @@ static int ila_nl_cmd_get_mapping(struct sk_buff *skb, struct genl_info *info)rcu_read_lock (); + ret = -ESRCH ; ila =ila_lookup_by_params (&xp, ilan);if (ila) { ret = ila_dump_info(ila,
net/nfc/netlink.c +1 -1
@@ -1454,8 +1454,8 @@ static int nfc_se_io(struct nfc_dev *dev, u32 se_idx,return rc; error: -kfree (cb_context);device_unlock (&dev->dev); +kfree (cb_context);return rc; }
net/tipc/socket.c +1 -1
@@ -373,7 +373,7 @@ static int tipc_sk_sock_err(struct socket *sock, long *timeout) rc_ =tipc_sk_sock_err ((sock_), timeo_); \if (rc_) \break ; \ -prepare_to_wait (sk_sleep (sk_), &wait_,TASK_INTERRUPTIBLE ); \ +add_wait_queue (sk_sleep (sk_), &wait_); \release_sock (sk_); \ *(timeo_) =wait_woken (&wait_,TASK_INTERRUPTIBLE , *(timeo_)); \sched_annotate_sleep (); \