Linux 4.14.274
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.274 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/x86/kernel/acpi/boot.c | 24 +++++++ drivers/acpi/battery.c | 12 +++ drivers/acpi/video_detect.c | 75 ++++++++++++++++++++++ drivers/crypto/qat/qat_common/qat_crypto.c | 8 ++ drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 12 ++- drivers/nfc/st21nfca/se.c | 10 ++ drivers/staging/fbtft/fb_st7789v.c | 2 drivers/thermal/int340x_thermal/int3400_thermal.c | 4 + include/net/esp.h | 2 include/net/sock.h | 3 net/core/sock.c | 3 net/ipv4/esp4.c | 5 + net/ipv6/esp6.c | 5 + net/ipv6/ip6_output.c | 4 - net/llc/af_llc.c | 49 +++++++++----- net/mac80211/cfg.c | 3 net/netfilter/nf_tables_core.c | 2 sound/core/pcm_native.c | 4 + sound/pci/ac97/ac97_codec.c | 4 - sound/pci/cmipci.c | 3 sound/usb/mixer_quirks.c | 7 +- 22 files changed, 204 insertions(+), 39 deletions(-)
Chuansheng Liu (1):
thermal: int340x: fix memory leak in int3400_notify()
Eric Dumazet (2):
llc: fix netdevice reference leaks in llc_ui_bind()
llc: only change llc->dev when bind() succeeds
Giacomo Guiduzzi (1):
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec
Giovanni Cabiddu (1):
crypto: qat - disable registration of algorithms
Greg Kroah-Hartman (1):
Linux 4.14.274
Jonathan Teh (1):
ALSA: cmipci: Restore aux vol on suspend/resume
Jordy Zomer (1):
nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION
Lars-Peter Clausen (1):
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB
Linus Lüssing (1):
mac80211: fix potential double free on mesh join
Mark Cilissen (1):
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board
Maximilian Luz (1):
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3
Oliver Graute (1):
staging: fbtft: fb_st7789v: reset display before initialization
Pablo Neira Ayuso (1):
netfilter: nf_tables: initialize registers in nft_do_chain()
Steffen Klassert (1):
esp: Fix possible buffer overflow in ESP transformation
Stephane Graber (1):
drivers: net: xgene: Fix regression in CRC stripping
Tadeusz Struk (1):
net: ipv6: fix skb_over_panic in __ip6_append_data
Takashi Iwai (1):
ALSA: pcm: Add stream lock during PCM reset ioctl operations
Werner Sembach (1):
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 273 +SUBLEVEL = 274 EXTRAVERSION = NAME = Petit Gorille
arch/x86/kernel/acpi/boot.c +24 -0
@@ -1343,6 +1343,17 @@ static int __init disable_acpi_pci(const struct dmi_system_id *d)return 0 ; } +static int __init disable_acpi_xsdt (const struct dmi_system_id *d) +{ +if (!acpi_force) { +pr_notice ("%s detected: force use of acpi=rsdt\n" , d->ident); + acpi_gbl_do_not_use_xsdt = TRUE; + }else { +pr_notice ("Warning: DMI blacklist says broken, but acpi XSDT forced\n" ); + } +return 0 ; +} +static int __init dmi_disable_acpi (const struct dmi_system_id *d) {if (!acpi_force) {
@@ -1463,6 +1474,19 @@ static const struct dmi_system_id acpi_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), }, }, +/* +* Boxes that need ACPI XSDT use disabled due to corrupted tables +*/ + { + .callback = disable_acpi_xsdt, + .ident = "Advantech DAC-BJ01", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "NEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "Bearlake CRB Board"), + DMI_MATCH(DMI_BIOS_VERSION, "V1.12"), + DMI_MATCH(DMI_BIOS_DATE, "02/01/2011"), + }, + }, {} };
drivers/acpi/battery.c +12 -0
@@ -89,6 +89,10 @@ enum acpi_battery_files {static const struct acpi_device_id battery_device_ids[] = { {"PNP0C0A" ,0 }, + +/* Microsoft Surface Go 3 */ + {"MSHW0146" ,0 }, + {"" ,0 }, };
@@ -1183,6 +1187,14 @@ static const struct dmi_system_id bat_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "Aspire V5-573G"), }, }, + { + /* Microsoft Surface Go 3 */ + .callback = battery_notification_delay_quirk, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go 3"), + }, + }, {}, };
drivers/acpi/video_detect.c +75 -0
81 lines not on this page · raw message
drivers/crypto/qat/qat_common/qat_crypto.c +8 -0
@@ -170,6 +170,14 @@ int qat_crypto_dev_config(struct adf_accel_dev *accel_dev) goto err;if (adf_cfg_section_add (accel_dev,"Accelerator0" )) goto err; + +/* Temporarily set the number of crypto instances to zero to avoid +* registering the crypto algorithms. +* This will be removed when the algorithms will support the +* CRYPTO_TFM_REQ_MAY_BACKLOG flag +*/ + instances =0 ; +for (i =0 ; i < instances; i++) { val = i;snprintf (key,sizeof (key),ADF_CY "%d" ADF_RING_BANK_NUM , i);
drivers/net/ethernet/apm/xgene/xgene_enet_main.c +7 -5
@@ -707,6 +707,12 @@ static int xgene_enet_rx_frame(struct xgene_enet_desc_ring *rx_ring, buf_pool->rx_skb[skb_index] =NULL ; datalen =xgene_enet_get_data_len (le64_to_cpu (raw_desc->m1)); + +/* strip off CRC as HW isn't doing this */ + nv =GET_VAL (NV ,le64_to_cpu (raw_desc->m0)); +if (!nv) + datalen -=4 ; +skb_put (skb, datalen);prefetch (skb->data -NET_IP_ALIGN ); skb->protocol =eth_type_trans (skb, ndev);
@@ -728,12 +734,8 @@ static int xgene_enet_rx_frame(struct xgene_enet_desc_ring *rx_ring, } } - nv =GET_VAL (NV ,le64_to_cpu (raw_desc->m0)); -if (!nv) { -/* strip off CRC as HW isn't doing this */ - datalen -=4 ; +if (!nv) goto skip_jumbo; - } slots = page_pool->slots -1 ; head = page_pool->head;
drivers/nfc/st21nfca/se.c +10 -0
@@ -330,6 +330,11 @@ int st21nfca_connectivity_event_received(struct nfc_hci_dev *hdev, u8 host,return -ENOMEM ; transaction->aid_len = skb->data[1 ]; + +/* Checking if the length of the AID is valid */ +if (transaction->aid_len >sizeof (transaction->aid)) +return -EINVAL ; +memcpy (transaction->aid, &skb->data[2 ], transaction->aid_len);
@@ -339,6 +344,11 @@ int st21nfca_connectivity_event_received(struct nfc_hci_dev *hdev, u8 host,return -EPROTO ; transaction->params_len = skb->data[transaction->aid_len +3 ]; + +/* Total size is allocated (skb->len - 2) minus fixed array members */ +if (transaction->params_len > ((skb->len -2 ) -sizeof (struct nfc_evt_transaction ))) +return -EINVAL ; +memcpy (transaction->params, skb->data + transaction->aid_len +4 , transaction->params_len);
drivers/staging/fbtft/fb_st7789v.c +2 -0
@@ -85,6 +85,8 @@ enum st7789v_command {*/ static int init_display (struct fbtft_par *par) { + par->fbtftops.reset (par); +/* turn off sleep mode */ write_reg (par,MIPI_DCS_EXIT_SLEEP_MODE );mdelay (120 );
drivers/thermal/int340x_thermal/int3400_thermal.c +4 -0
@@ -223,6 +223,10 @@ static void int3400_notify(acpi_handle handle, thermal_prop[4 ] =NULL ;kobject_uevent_env (&priv->thermal->device.kobj,KOBJ_CHANGE , thermal_prop); +kfree (thermal_prop[0 ]); +kfree (thermal_prop[1 ]); +kfree (thermal_prop[2 ]); +kfree (thermal_prop[3 ]);break ;default :dev_err (&priv->adev->dev,"Unsupported event [0x%x]\n" , event);
include/net/esp.h +2 -0
@@ -4,6 +4,8 @@#include <linux/skbuff.h> +#define ESP_SKB_FRAG_MAXSIZE (PAGE_SIZE << SKB_FRAG_PAGE_ORDER) +struct ip_esp_hdr ;static inline struct ip_esp_hdr *ip_esp_hdr (const struct sk_buff *skb)
include/net/sock.h +3 -0
@@ -2438,4 +2438,7 @@ extern int sysctl_optmem_max;extern __u32 sysctl_wmem_default;extern __u32 sysctl_rmem_default; +/* On 32bit arches, an skb frag is limited to 2^15 */ +#define SKB_FRAG_PAGE_ORDER get_order(32768) +#endif /* _SOCK_H */
net/core/sock.c +0 -3
@@ -2193,9 +2193,6 @@ static void sk_leave_memory_pressure(struct sock *sk) } } -/* On 32bit arches, an skb frag is limited to 2^15 */ -#define SKB_FRAG_PAGE_ORDER get_order(32768) -/** * skb_page_frag_refill - check that a page_frag contains enough room * @sz: minimum size of the fragment we want to get
net/ipv4/esp4.c +5 -0
@@ -257,6 +257,7 @@ int esp_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *struct page *page;struct sk_buff *trailer;int tailen = esp->tailen; +unsigned int allocsz;/* this is non-NULL only with UDP Encapsulation */ if (x->encap) {
@@ -266,6 +267,10 @@ int esp_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info *return err; } + allocsz =ALIGN (skb->data_len + tailen,L1_CACHE_BYTES ); +if (allocsz >ESP_SKB_FRAG_MAXSIZE ) + goto cow; +if (!skb_cloned (skb)) {if (tailen <=skb_tailroom (skb)) { nfrags =1 ;
net/ipv6/esp6.c +5 -0
@@ -223,6 +223,11 @@ int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_infostruct page *page;struct sk_buff *trailer;int tailen = esp->tailen; +unsigned int allocsz; + + allocsz =ALIGN (skb->data_len + tailen,L1_CACHE_BYTES ); +if (allocsz >ESP_SKB_FRAG_MAXSIZE ) + goto cow;if (!skb_cloned (skb)) {if (tailen <=skb_tailroom (skb)) {
net/ipv6/ip6_output.c +2 -2
@@ -1321,8 +1321,8 @@ static int __ip6_append_data(struct sock *sk, sizeof(struct frag_hdr) : 0) + rt->rt6i_nfheader_len; -if (mtu < fragheaderlen || - ((mtu - fragheaderlen) & ~7 ) + fragheaderlen <sizeof (struct frag_hdr )) +if (mtu <= fragheaderlen || + ((mtu - fragheaderlen) & ~7 ) + fragheaderlen <=sizeof (struct frag_hdr )) goto emsgsize; maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen -
net/llc/af_llc.c +32 -17
107 lines not on this page · raw message
net/mac80211/cfg.c +0 -3
@@ -1811,13 +1811,11 @@ static int copy_mesh_setup(struct ieee80211_if_mesh *ifmsh, const struct mesh_setup *setup) {u8 *new_ie; -const u8 *old_ie;struct ieee80211_sub_if_data *sdata =container_of (ifmsh, struct ieee80211_sub_if_data, u.mesh);/* allocate information elements */ new_ie =NULL ; - old_ie = ifmsh->ie;if (setup->ie_len) { new_ie = kmemdup(setup->ie, setup->ie_len,
@@ -1827,7 +1825,6 @@ static int copy_mesh_setup(struct ieee80211_if_mesh *ifmsh, } ifmsh->ie_len = setup->ie_len; ifmsh->ie = new_ie; -kfree (old_ie);/* now copy the rest of the setup parameters */ ifmsh->mesh_id_len = setup->mesh_id_len;
net/netfilter/nf_tables_core.c +1 -1
@@ -150,7 +150,7 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv)const struct net *net =nft_net (pkt);const struct nft_rule *rule;const struct nft_expr *expr, *last; -struct nft_regs regs; +struct nft_regs regs = {};unsigned int stackptr =0 ;struct nft_jumpstack jumpstack[NFT_JUMP_STACK_SIZE ];int rulenum;
sound/core/pcm_native.c +4 -0
@@ -1616,21 +1616,25 @@ static int snd_pcm_do_reset(struct snd_pcm_substream *substream, int state)int err = substream->ops->ioctl (substream,SNDRV_PCM_IOCTL1_RESET ,NULL );if (err <0 )return err; +snd_pcm_stream_lock_irq (substream); runtime->hw_ptr_base =0 ; runtime->hw_ptr_interrupt = runtime->status->hw_ptr - runtime->status->hw_ptr % runtime->period_size; runtime->silence_start = runtime->status->hw_ptr; runtime->silence_filled =0 ; +snd_pcm_stream_unlock_irq (substream);return 0 ; }static void snd_pcm_post_reset (struct snd_pcm_substream *substream,int state) {struct snd_pcm_runtime *runtime = substream->runtime; +snd_pcm_stream_lock_irq (substream); runtime->control->appl_ptr = runtime->status->hw_ptr;if (substream->stream ==SNDRV_PCM_STREAM_PLAYBACK && runtime->silence_size >0 )snd_pcm_playback_silence (substream,ULONG_MAX ); +snd_pcm_stream_unlock_irq (substream); }static const struct action_ops snd_pcm_action_reset = {
sound/pci/ac97/ac97_codec.c +2 -2
@@ -958,8 +958,8 @@ static int snd_ac97_ad18xx_pcm_get_volume(struct snd_kcontrol *kcontrol, structint codec = kcontrol->private_value &3 ;mutex_lock (&ac97->page_mutex); - ucontrol->value.integer.value[0 ] =31 - ((ac97->spec.ad18xx.pcmreg[codec] >>0 ) &31 ); - ucontrol->value.integer.value[1 ] =31 - ((ac97->spec.ad18xx.pcmreg[codec] >>8 ) &31 ); + ucontrol->value.integer.value[0 ] =31 - ((ac97->spec.ad18xx.pcmreg[codec] >>8 ) &31 ); + ucontrol->value.integer.value[1 ] =31 - ((ac97->spec.ad18xx.pcmreg[codec] >>0 ) &31 );mutex_unlock (&ac97->page_mutex);return 0 ; }
sound/pci/cmipci.c +1 -2
@@ -315,7 +315,6 @@ MODULE_PARM_DESC(joystick_port, "Joystick port address.");#define CM_MICGAINZ 0x01/* mic boost */ #define CM_MICGAINZ_SHIFT 0 -#define CM_REG_MIXER3 0x24#define CM_REG_AUX_VOL 0x26#define CM_VAUXL_MASK 0xf0#define CM_VAUXR_MASK 0x0f
@@ -3326,7 +3325,7 @@ static void snd_cmipci_remove(struct pci_dev *pci)*/ static unsigned char saved_regs[] = {CM_REG_FUNCTRL1 ,CM_REG_CHFORMAT ,CM_REG_LEGACY_CTRL ,CM_REG_MISC_CTRL , -CM_REG_MIXER0 ,CM_REG_MIXER1 ,CM_REG_MIXER2 ,CM_REG_MIXER3 ,CM_REG_PLL , +CM_REG_MIXER0 ,CM_REG_MIXER1 ,CM_REG_MIXER2 ,CM_REG_AUX_VOL ,CM_REG_PLL ,CM_REG_CH0_FRAME1 ,CM_REG_CH0_FRAME2 ,CM_REG_CH1_FRAME1 ,CM_REG_CH1_FRAME2 ,CM_REG_EXT_MISC ,CM_REG_INT_STATUS ,CM_REG_INT_HLDCLR ,CM_REG_FUNCTRL0 ,
sound/usb/mixer_quirks.c +4 -3
@@ -1884,9 +1884,10 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,if (unitid ==7 && cval->control ==UAC_FU_VOLUME )snd_dragonfly_quirk_db_scale (mixer, cval, kctl);break ; -/* lowest playback value is muted on C-Media devices */ -case USB_ID (0x0d8c ,0x000c ): -case USB_ID (0x0d8c ,0x0014 ): +/* lowest playback value is muted on some devices */ +case USB_ID (0x0d8c ,0x000c ):/* C-Media */ +case USB_ID (0x0d8c ,0x0014 ):/* C-Media */ +case USB_ID (0x19f7 ,0x0003 ):/* RODE NT-USB */ if (strstr (kctl->id.name,"Playback" )) cval->min_mute =1 ;break ;