Linux 4.9.157
Greg KH
maintainerI'm announcing the release of the 4.9.157 kernel.
No one should upgrade to this release, use 4.9.158 instead.
The updated 4.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.9.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/mach-iop32x/n2100.c | 3 arch/arm/mach-tango/pm.c | 6 - arch/arm/mach-tango/pm.h | 7 + arch/arm/mach-tango/setup.c | 2 arch/mips/kernel/mips-cm.c | 2 arch/mips/pci/pci-octeon.c | 10 +- arch/mips/vdso/Makefile | 4 - drivers/gpu/drm/drm_modes.c | 2 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 9 +- drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 2 drivers/hid/hid-debug.c | 122 ++++++++++++-------------------- drivers/iio/chemical/atlas-ph-sensor.c | 7 - drivers/misc/vexpress-syscfg.c | 2 drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 15 +-- fs/cifs/Kconfig | 2 fs/debugfs/inode.c | 7 + fs/nfsd/nfs4state.c | 57 +++++++++++++- fs/nfsd/state.h | 2 fs/nfsd/xdr4.h | 13 ++- include/linux/hid-debug.h | 9 +- kernel/signal.c | 58 ++++++++++++++- net/batman-adv/hard-interface.c | 5 - net/batman-adv/soft-interface.c | 2 net/ceph/messenger.c | 5 - net/mac80211/tx.c | 12 ++- net/xfrm/xfrm_user.c | 13 ++- samples/mei/mei-amt-version.c | 2 28 files changed, 248 insertions(+), 134 deletions(-)
Aaro Koskinen (1):
MIPS: OCTEON: don't set octeon_dma_bar_type if PCI is disabled
Dan Carpenter (1):
misc: vexpress: Off by one in vexpress_syscfg_exec()
Eric W. Biederman (2):
signal: Always notice exiting tasks
signal: Better detection of synchronous signals
Felix Fietkau (1):
mac80211: ensure that mgmt tx skbs have tailroom for encryption
Florian Westphal (1):
xfrm: refine validation of template and selector families
Greg Kroah-Hartman (3):
debugfs: fix debugfs_rename parameter checking
Revert "cifs: In Kconfig CONFIG_CIFS_POSIX needs depends on legacy (insecure cifs)" Linux 4.9.157
Ilya Dryomov (1):
libceph: avoid KEEPALIVE_PENDING races in ceph_con_keepalive()
J. Bruce Fields (2):
nfsd4: fix cached replies to solo SEQUENCE compounds
nfsd4: catch some false session retries
Marc Gonzalez (1):
ARM: tango: Improve ARCH_MULTIPLATFORM compatibility
Martin Kepplinger (1):
mtd: rawnand: gpmi: fix MX28 bus master lockup problem
Matt Ranostay (1):
iio: chemical: atlas-ph-sensor: correct IIO_TEMP values to millicelsius
Paul Burton (1):
MIPS: VDSO: Include $(ccflags-vdso) in o32,n32 .lds builds
Russell King (1):
ARM: iop32x/n2100: fix PCI IRQ mapping
Sven Eckelmann (2):
batman-adv: Avoid WARN on net_device without parent in netns
batman-adv: Force mac header to start of data on xmit
Thomas Hellstrom (2):
drm/vmwgfx: Fix setting of dma masks
drm/vmwgfx: Return error code from vmw_execbuf_copy_fence_user
Tina Zhang (1):
drm/modes: Prevent division by zero htotal
Tomas Winkler (1):
samples: mei: use /dev/mei0 instead of /dev/mei
Vladimir Kondratiev (1):
mips: cm: reprime error cause
Vladis Dronov (1):
HID: debug: fix the ring buffer implementation
Greg KH
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 9 -SUBLEVEL = 156 +SUBLEVEL = 157 EXTRAVERSION = NAME = Roaring Lionus
arch/arm/mach-iop32x/n2100.c +1 -2
@@ -75,8 +75,7 @@ void __init n2100_map_io(void)/* * N2100 PCI. */ -static int __init -n2100_pci_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) +static int n2100_pci_map_irq (const struct pci_dev *dev,u8 slot,u8 pin) {int irq;
arch/arm/mach-tango/pm.c +2 -4
@@ -2,6 +2,7 @@#include <linux/suspend.h> #include <asm/suspend.h> #include "smc.h" +#include "pm.h" static int tango_pm_powerdown (unsigned long arg) {
@@ -23,10 +24,7 @@ static const struct platform_suspend_ops tango_pm_ops = { .valid = suspend_valid_only_mem, }; -static int __init tango_pm_init (void ) +void __init tango_pm_init (void ) {suspend_set_ops (&tango_pm_ops); -return 0 ; } - -late_initcall (tango_pm_init);
arch/arm/mach-tango/pm.h new file +7 -0
@@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifdef CONFIG_SUSPEND +void __init tango_pm_init (void ); +#else +#define tango_pm_init NULL +#endif
arch/arm/mach-tango/setup.c +2 -0
@@ -1,6 +1,7 @@#include <asm/mach/arch.h> #include <asm/hardware/cache-l2x0.h> #include "smc.h" +#include "pm.h" static void tango_l2c_write (unsigned long val,unsigned int reg) {
@@ -14,4 +15,5 @@ DT_MACHINE_START(TANGO_DT, "Sigma Tango DT") .dt_compat = tango_dt_compat, .l2c_aux_mask = ~0, .l2c_write_sec = tango_l2c_write, + .init_late = tango_pm_init,MACHINE_END
arch/mips/kernel/mips-cm.c +1 -1
@@ -424,5 +424,5 @@ void mips_cm_error_report(void) }/* reprime cause register */ -write_gcr_error_cause (0 ); +write_gcr_error_cause (cm_error); }
arch/mips/pci/pci-octeon.c +5 -5
@@ -573,6 +573,11 @@ static int __init octeon_pci_setup(void)if (octeon_has_feature (OCTEON_FEATURE_PCIE ))return 0 ; +if (!octeon_is_pci_host ()) { +pr_notice ("Not in host mode, PCI Controller not initialized\n" ); +return 0 ; + } +/* Point pcibios_map_irq() to the PCI version of it */ octeon_pcibios_map_irq = octeon_pci_pcibios_map_irq;
@@ -584,11 +589,6 @@ static int __init octeon_pci_setup(void)else octeon_dma_bar_type =OCTEON_DMA_BAR_TYPE_BIG ; -if (!octeon_is_pci_host ()) { -pr_notice ("Not in host mode, PCI Controller not initialized\n" ); -return 0 ; - } -/* PCI I/O and PCI MEM values */ set_io_port_base (OCTEON_PCI_IOSPACE_BASE ); ioport_resource.start =0 ;
arch/mips/vdso/Makefile +2 -2
@@ -116,7 +116,7 @@ $(obj)/%-o32.o: $(src)/%.c FORCE $(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) -$(obj)/vdso-o32.lds: KBUILD_CPPFLAGS := -mabi=32 +$(obj)/vdso-o32.lds: KBUILD_CPPFLAGS := $(ccflags-vdso) -mabi=32 $(obj)/vdso-o32.lds: $(src)/vdso.lds.S FORCE $(call if_changed_dep,cpp_lds_S)
@@ -156,7 +156,7 @@ $(obj)/%-n32.o: $(src)/%.c FORCE $(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) -$(obj)/vdso-n32.lds: KBUILD_CPPFLAGS := -mabi=n32 +$(obj)/vdso-n32.lds: KBUILD_CPPFLAGS := $(ccflags-vdso) -mabi=n32 $(obj)/vdso-n32.lds: $(src)/vdso.lds.S FORCE $(call if_changed_dep,cpp_lds_S)
drivers/gpu/drm/drm_modes.c +1 -1
@@ -753,7 +753,7 @@ int drm_mode_hsync(const struct drm_display_mode *mode)if (mode->hsync)return mode->hsync; -if (mode->htotal <0 ) +if (mode->htotal <=0 )return 0 ; calc_val = (mode->clock *1000 ) / mode->htotal;/* hsync in Hz */
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +6 -3
@@ -605,13 +605,16 @@ static int vmw_dma_select_mode(struct vmw_private *dev_priv)static int vmw_dma_masks (struct vmw_private *dev_priv) {struct drm_device *dev = dev_priv->dev; +int ret =0 ; -if (intel_iommu_enabled && + ret =dma_set_mask_and_coherent (dev->dev,DMA_BIT_MASK (64 )); +if (dev_priv->map_mode != vmw_dma_phys && (sizeof (unsigned long ) ==4 || vmw_restrict_dma_mask)) {DRM_INFO ("Restricting DMA addresses to 44 bits.\n" ); -return dma_set_mask (dev->dev,DMA_BIT_MASK (44 )); +return dma_set_mask_and_coherent (dev->dev,DMA_BIT_MASK (44 )); } -return 0 ; + +return ret; }#else static int vmw_dma_masks (struct vmw_private *dev_priv)
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +1 -1
@@ -3769,7 +3769,7 @@ int vmw_execbuf_fence_commands(struct drm_file *file_priv, *p_fence =NULL ; } -return 0 ; +return ret; }/**
drivers/hid/hid-debug.c +48 -74
189 lines not on this page · raw message
drivers/iio/chemical/atlas-ph-sensor.c +3 -4
@@ -453,9 +453,8 @@ static int atlas_read_raw(struct iio_dev *indio_dev,case IIO_CHAN_INFO_SCALE :switch (chan->type) {case IIO_TEMP : - *val =1 ;/* 0.01 */ - *val2 =100 ; -break ; + *val =10 ; +return IIO_VAL_INT ;case IIO_PH : *val =1 ;/* 0.001 */ *val2 =1000 ;
@@ -486,7 +485,7 @@ static int atlas_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct atlas_data *data = iio_priv(indio_dev); -__be32 reg =cpu_to_be32 (val); +__be32 reg =cpu_to_be32 (val /10 );if (val2 !=0 || val <0 || val >20000 )return -EINVAL ;
drivers/misc/vexpress-syscfg.c +1 -1
@@ -61,7 +61,7 @@ static int vexpress_syscfg_exec(struct vexpress_syscfg_func *func,int tries;long timeout; -if (WARN_ON (index > func->num_templates)) +if (WARN_ON (index >= func->num_templates))return -EINVAL ; command =readl (syscfg->base +SYS_CFGCTRL );
drivers/mtd/nand/gpmi-nand/gpmi-lib.c +7 -8
@@ -168,9 +168,10 @@ int gpmi_init(struct gpmi_nand_data *this)/* * Reset BCH here, too. We got failures otherwise :( -* See later BCH reset for explanation of MX23 handling +* See later BCH reset for explanation of MX23 and MX28 handling */ - ret =gpmi_reset_block (r->bch_regs,GPMI_IS_MX23 (this)); + ret =gpmi_reset_block (r->bch_regs, +GPMI_IS_MX23 (this) ||GPMI_IS_MX28 (this));if (ret) goto err_out;
@@ -275,13 +276,11 @@ int bch_set_geometry(struct gpmi_nand_data *this)/* * Due to erratum #2847 of the MX23, the BCH cannot be soft reset on this -* chip, otherwise it will lock up. So we skip resetting BCH on the MX23. -* On the other hand, the MX28 needs the reset, because one case has been -* seen where the BCH produced ECC errors constantly after 10000 -* consecutive reboots. The latter case has not been seen on the MX23 -* yet, still we don't know if it could happen there as well. +* chip, otherwise it will lock up. So we skip resetting BCH on the MX23 +* and MX28. */ - ret =gpmi_reset_block (r->bch_regs,GPMI_IS_MX23 (this)); + ret =gpmi_reset_block (r->bch_regs, +GPMI_IS_MX23 (this) ||GPMI_IS_MX28 (this));if (ret) goto err_out;
fs/cifs/Kconfig +1 -1
@@ -111,7 +111,7 @@ config CIFS_XATTR config CIFS_POSIX bool "CIFS POSIX Extensions" - depends on CIFS && CIFS_ALLOW_INSECURE_LEGACY && CIFS_XATTR + depends on CIFS_XATTR help Enabling this option will cause the cifs client to attempt to negotiate a newer dialect with servers, such as Samba 3.0.5
fs/debugfs/inode.c +7 -0
@@ -732,6 +732,13 @@ struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry,struct dentry *dentry =NULL , *trap;struct name_snapshot old_name; +if (IS_ERR (old_dir)) +return old_dir; +if (IS_ERR (new_dir)) +return new_dir; +if (IS_ERR_OR_NULL (old_dentry)) +return old_dentry; + trap =lock_rename (new_dir, old_dir);/* Source or destination directories don't exist? */ if (d_really_is_negative (old_dir) ||d_really_is_negative (new_dir))
fs/nfsd/nfs4state.c +51 -6
93 lines not on this page · raw message
fs/nfsd/state.h +2 -0
@@ -169,11 +169,13 @@ static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s)struct nfsd4_slot {u32 sl_seqid;__be32 sl_status; +struct svc_cred sl_cred;u32 sl_datalen;u16 sl_opcnt;#define NFSD4_SLOT_INUSE (1 << 0)#define NFSD4_SLOT_CACHETHIS (1 << 1)#define NFSD4_SLOT_INITIALIZED (1 << 2) +#define NFSD4_SLOT_CACHED (1 << 3)u8 sl_flags;char sl_data[]; };
fs/nfsd/xdr4.h +11 -2
@@ -645,9 +645,18 @@ static inline bool nfsd4_is_solo_sequence(struct nfsd4_compoundres *resp)return resp->opcnt ==1 && args->ops[0 ].opnum ==OP_SEQUENCE ; } -static inline bool nfsd4_not_cached (struct nfsd4_compoundres *resp) +/* +* The session reply cache only needs to cache replies that the client +* actually asked us to. But it's almost free for us to cache compounds +* consisting of only a SEQUENCE op, so we may as well cache those too. +* Also, the protocol doesn't give us a convenient response in the case +* of a replay of a solo SEQUENCE op that wasn't cached +* (RETRY_UNCACHED_REP can only be returned in the second op of a +* compound). +*/ +static inline bool nfsd4_cache_this (struct nfsd4_compoundres *resp) { -return !(resp->cstate.slot->sl_flags &NFSD4_SLOT_CACHETHIS ) +return (resp->cstate.slot->sl_flags &NFSD4_SLOT_CACHETHIS ) ||nfsd4_is_solo_sequence (resp); }
include/linux/hid-debug.h +4 -5
@@ -24,7 +24,10 @@#ifdef CONFIG_DEBUG_FS +#include <linux/kfifo.h> +#define HID_DEBUG_BUFSIZE 512 +#define HID_DEBUG_FIFOSIZE 512void hid_dump_input (struct hid_device *,struct hid_usage *,__s32 );void hid_dump_report (struct hid_device *,int ,u8 *,int );
@@ -37,11 +40,8 @@ void hid_debug_init(void);void hid_debug_exit (void );void hid_debug_event (struct hid_device *,char *); -struct hid_debug_list { -char *hid_debug_buf; -int head; -int tail; + DECLARE_KFIFO_PTR(hid_debug_fifo, char);struct fasync_struct *fasync;struct hid_device *hdev;struct list_head node;
@@ -64,4 +64,3 @@ struct hid_debug_list {#endif #endif -
kernel/signal.c +57 -1
82 lines not on this page · raw message
net/batman-adv/hard-interface.c +3 -2
@@ -19,7 +19,6 @@#include "main.h" #include <linux/atomic.h> -#include <linux/bug.h> #include <linux/byteorder/generic.h> #include <linux/errno.h> #include <linux/fs.h>
@@ -172,8 +171,10 @@ static bool batadv_is_on_batman_iface(const struct net_device *net_dev) parent_dev =__dev_get_by_index ((struct net *)parent_net,dev_get_iflink (net_dev));/* if we got a NULL parent_dev there is something broken.. */ -if (WARN (!parent_dev,"Cannot find parent device" )) +if (!parent_dev) { +pr_err ("Cannot find parent device\n" );return false; + }if (batadv_mutual_parents (net_dev, net, parent_dev, parent_net))return false;
net/batman-adv/soft-interface.c +2 -0
@@ -211,6 +211,8 @@ static int batadv_interface_tx(struct sk_buff *skb,netif_trans_update (soft_iface); vid =batadv_get_vid (skb,0 ); + +skb_reset_mac_header (skb); ethhdr =eth_hdr (skb);switch (ntohs (ethhdr->h_proto)) {
net/ceph/messenger.c +3 -2
@@ -3186,9 +3186,10 @@ void ceph_con_keepalive(struct ceph_connection *con)dout ("con_keepalive %p\n" , con);mutex_lock (&con->mutex);clear_standby (con); +con_flag_set (con,CON_FLAG_KEEPALIVE_PENDING );mutex_unlock (&con->mutex); -if (con_flag_test_and_set (con,CON_FLAG_KEEPALIVE_PENDING ) ==0 && -con_flag_test_and_set (con,CON_FLAG_WRITE_PENDING ) ==0 ) + +if (con_flag_test_and_set (con,CON_FLAG_WRITE_PENDING ) ==0 )queue_con (con); }EXPORT_SYMBOL (ceph_con_keepalive);
net/mac80211/tx.c +9 -3
@@ -1852,9 +1852,16 @@ static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata, int head_need, bool may_encrypt) {struct ieee80211_local *local = sdata->local; +struct ieee80211_hdr *hdr; +bool enc_tailroom;int tail_need =0 ; -if (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt) { + hdr = (struct ieee80211_hdr *) skb->data; + enc_tailroom = may_encrypt && + (sdata->crypto_tx_tailroom_needed_cnt || +ieee80211_is_mgmt (hdr->frame_control)); + +if (enc_tailroom) { tail_need =IEEE80211_ENCRYPT_TAILROOM ; tail_need -=skb_tailroom (skb); tail_need =max_t (int, tail_need,0 );
@@ -1862,8 +1869,7 @@ static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata,if (skb_cloned (skb) && (!ieee80211_hw_check (&local->hw,SUPPORTS_CLONED_SKBS ) || - !skb_clone_writable (skb,ETH_HLEN ) || - (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt))) + !skb_clone_writable (skb,ETH_HLEN ) || enc_tailroom))I802_DEBUG_INC (local->tx_expand_skb_head_cloned);else if (head_need || tail_need)I802_DEBUG_INC (local->tx_expand_skb_head);
net/xfrm/xfrm_user.c +9 -4
@@ -1408,10 +1408,15 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)if (!ut[i].family) ut[i].family = family; -if ((ut[i].mode ==XFRM_MODE_TRANSPORT ) && - (ut[i].family != prev_family)) -return -EINVAL ; - +switch (ut[i].mode) { +case XFRM_MODE_TUNNEL : +case XFRM_MODE_BEET : +break ; +default : +if (ut[i].family != prev_family) +return -EINVAL ; +break ; + }if (ut[i].mode >=XFRM_MODE_MAX )return -EINVAL ;
samples/mei/mei-amt-version.c +1 -1
@@ -117,7 +117,7 @@ static bool mei_init(struct mei *me, const uuid_le *guid, me->verbose = verbose; - me->fd =open ("/dev/mei" ,O_RDWR ); + me->fd =open ("/dev/mei0" ,O_RDWR );if (me->fd ==-1 ) {mei_err (me,"Cannot establish a handle to the Intel MEI driver\n" ); goto err;