Linux 5.4.188
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.188 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
------------
Makefile | 2 arch/nds32/include/asm/uaccess.h | 22 + arch/x86/kernel/acpi/boot.c | 24 + drivers/acpi/battery.c | 12 drivers/acpi/video_detect.c | 75 ++++ drivers/char/tpm/tpm-dev-common.c | 8 drivers/char/tpm/tpm2-space.c | 8 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/intel/int340x_thermal/int3400_thermal.c | 4 fs/nfsd/filecache.c | 247 +++++++++++++--- fs/nfsd/filecache.h | 2 fs/nfsd/nfssvc.c | 9 include/net/esp.h | 2 include/net/sock.h | 3 kernel/rcu/tree_plugin.h | 9 net/core/sock.c | 2 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/oss/pcm_oss.c | 12 sound/core/oss/pcm_plugin.c | 5 sound/core/pcm_native.c | 4 sound/pci/ac97/ac97_codec.c | 4 sound/pci/cmipci.c | 3 sound/pci/hda/patch_realtek.c | 2 sound/soc/sti/uniperif_player.c | 6 sound/soc/sti/uniperif_reader.c | 2 sound/usb/mixer_quirks.c | 7 34 files changed, 466 insertions(+), 108 deletions(-)
Arnd Bergmann (1):
nds32: fix access_ok() checks in get/put_user
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 5.4.188
James Bottomley (1):
tpm: use try_get_ops() in tpm-space.c
Jason Zheng (1):
ALSA: hda/realtek: Add quirk for ASUS GA402
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()
Paul E. McKenney (1):
rcu: Don't deboost before reporting expedited quiescent state
Steffen Klassert (1):
esp: Fix possible buffer overflow in ESP transformation
Stephane Graber (1):
drivers: net: xgene: Fix regression in CRC stripping
Tadeusz Struk (2):
net: ipv6: fix skb_over_panic in __ip6_append_data
tpm: Fix error handling in async work
Takashi Iwai (3):
ALSA: pcm: Add stream lock during PCM reset ioctl operations
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call
ALSA: oss: Fix PCM OSS buffer allocation overflow
Trond Myklebust (2):
nfsd: cleanup nfsd_file_lru_dispose()
nfsd: Containerise filecache laundrette
Werner Sembach (1):
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU
huangwenhui (1):
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 187 +SUBLEVEL = 188 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/nds32/include/asm/uaccess.h +17 -5
@@ -71,9 +71,7 @@ static inline void set_fs(mm_segment_t fs)* versions are void (ie, don't return a value as such). */ -#define get_user __get_user \ - -#define __get_user (x, ptr) \ +#define get_user (x, ptr) \ ({ \ long __gu_err = 0; \ __get_user_check((x), (ptr), __gu_err); \
@@ -86,6 +84,14 @@ static inline void set_fs(mm_segment_t fs) (void )0 ; \ }) +#define __get_user (x, ptr) \ +({ \ + long __gu_err = 0; \ + const __typeof__(*(ptr)) __user *__p = (ptr); \ + __get_user_err((x), __p, (__gu_err)); \ + __gu_err; \ +}) +#define __get_user_check (x, ptr, err) \ ({ \ const __typeof__(*(ptr)) __user *__p = (ptr); \
@@ -166,12 +172,18 @@ do { \ : "r"(addr), "i"(-EFAULT) \ : "cc") -#define put_user __put_user \ +#define put_user (x, ptr) \ +({ \ + long __pu_err = 0; \ + __put_user_check((x), (ptr), __pu_err); \ + __pu_err; \ +})#define __put_user (x, ptr) \ ({ \ long __pu_err = 0; \ - __put_user_err((x), (ptr), __pu_err); \ + __typeof__(*(ptr)) __user *__p = (ptr); \ + __put_user_err((x), __p, __pu_err); \ __pu_err; \ })
arch/x86/kernel/acpi/boot.c +24 -0
@@ -1339,6 +1339,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
@@ -77,6 +77,10 @@ extern void *acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir);static const struct acpi_device_id battery_device_ids[] = { {"PNP0C0A" ,0 }, + +/* Microsoft Surface Go 3 */ + {"MSHW0146" ,0 }, + {"" ,0 }, };
@@ -1403,6 +1407,14 @@ static const struct dmi_system_id bat_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad"), }, }, + { + /* 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/char/tpm/tpm-dev-common.c +7 -1
@@ -70,7 +70,13 @@ static void tpm_dev_async_work(struct work_struct *work) ret =tpm_dev_transmit (priv->chip, priv->space, priv->data_buffer,sizeof (priv->data_buffer));tpm_put_ops (priv->chip); -if (ret >0 ) { + +/* +* If ret is > 0 then tpm_dev_transmit returned the size of the +* response. If ret is < 0 then tpm_dev_transmit failed and +* returned an error code. +*/ +if (ret !=0 ) { priv->response_length = ret;mod_timer (&priv->user_read_timer, jiffies + (120 *HZ )); }
drivers/char/tpm/tpm2-space.c +4 -4
@@ -58,12 +58,12 @@ int tpm2_init_space(struct tpm_space *space, unsigned int buf_size)void tpm2_del_space (struct tpm_chip *chip,struct tpm_space *space) { -mutex_lock (&chip->tpm_mutex); -if (!tpm_chip_start (chip)) { + +if (tpm_try_get_ops (chip) ==0 ) {tpm2_flush_sessions (chip, space); -tpm_chip_stop (chip); +tpm_put_ops (chip); } -mutex_unlock (&chip->tpm_mutex); +kfree (space->context_buf);kfree (space->session_buf); }
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
@@ -696,6 +696,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);
@@ -717,12 +723,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
@@ -321,6 +321,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);
@@ -330,6 +335,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
@@ -76,6 +76,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/intel/int340x_thermal/int3400_thermal.c +4 -0
@@ -216,6 +216,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 :/* Ignore unknown notification codes sent to INT3400 device */
fs/nfsd/filecache.c +202 -45
358 lines not on this page · raw message
fs/nfsd/filecache.h +2 -0
@@ -51,6 +51,8 @@ struct nfsd_file {int nfsd_file_cache_init (void );void nfsd_file_cache_purge (struct net *);void nfsd_file_cache_shutdown (void ); +int nfsd_file_cache_start_net (struct net *net); +void nfsd_file_cache_shutdown_net (struct net *net);void nfsd_file_put (struct nfsd_file *nf);struct nfsd_file *nfsd_file_get (struct nfsd_file *nf);void nfsd_file_close_inode_sync (struct inode *inode);
fs/nfsd/nfssvc.c +7 -2
@@ -394,13 +394,18 @@ static int nfsd_startup_net(int nrservs, struct net *net, const struct cred *cre nn->lockd_up =1 ; } - ret =nfs4_state_start_net (net); + ret =nfsd_file_cache_start_net (net);if (ret) goto out_lockd; + ret =nfs4_state_start_net (net); +if (ret) + goto out_filecache; nn->nfsd_net_up = true;return 0 ; +out_filecache: +nfsd_file_cache_shutdown_net (net); out_lockd:if (nn->lockd_up) {lockd_down (net);
@@ -415,7 +420,7 @@ static void nfsd_shutdown_net(struct net *net) {struct nfsd_net *nn =net_generic (net, nfsd_net_id); -nfsd_file_cache_purge (net); +nfsd_file_cache_shutdown_net (net);nfs4_state_shutdown_net (net);if (nn->lockd_up) {lockd_down (net);
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
@@ -2583,6 +2583,9 @@ 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)DECLARE_STATIC_KEY_FALSE (net_high_order_alloc_disable_key);static inline int sk_get_wmem0 (const struct sock *sk,const struct proto *proto)
kernel/rcu/tree_plugin.h +5 -4
@@ -523,16 +523,17 @@ rcu_preempt_deferred_qs_irqrestore(struct task_struct *t, unsigned long flags)raw_spin_unlock_irqrestore_rcu_node (rnp, flags); } -/* Unboost if we were boosted. */ -if (IS_ENABLED (CONFIG_RCU_BOOST ) && drop_boost_mutex) -rt_mutex_futex_unlock (&rnp->boost_mtx); -/* * If this was the last task on the expedited lists, * then we need to report up the rcu_node hierarchy. */ if (!empty_exp && empty_exp_now)rcu_report_exp_rnp (rnp, true); + +/* Unboost if we were boosted. */ +if (IS_ENABLED (CONFIG_RCU_BOOST ) && drop_boost_mutex) +rt_mutex_futex_unlock (&rnp->boost_mtx); + }else {local_irq_restore (flags); }
net/core/sock.c +0 -2
@@ -2355,8 +2355,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)DEFINE_STATIC_KEY_FALSE (net_high_order_alloc_disable_key);/**
net/ipv4/esp4.c +5 -0
@@ -277,6 +277,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) {
@@ -286,6 +287,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
@@ -230,6 +230,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
@@ -1429,8 +1429,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
@@ -1949,13 +1949,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,
@@ -1965,7 +1963,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
@@ -153,7 +153,7 @@ nft_do_chain(struct nft_pktinfo *pkt, void *priv)struct nft_rule *const *rules;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 ];bool genbit =READ_ONCE (net->nft.gencursor);
sound/core/oss/pcm_oss.c +8 -4
@@ -774,6 +774,11 @@ static int snd_pcm_oss_period_size(struct snd_pcm_substream *substream,if (oss_period_size <16 )return -EINVAL ; + +/* don't allocate too large period; 1MB period must be enough */ +if (oss_period_size >1024 *1024 ) +return -ENOMEM ; + runtime->oss.period_bytes = oss_period_size; runtime->oss.period_frames =1 ; runtime->oss.periods = oss_periods;
@@ -1045,10 +1050,9 @@ static int snd_pcm_oss_change_params_locked(struct snd_pcm_substream *substream) goto failure; }#endif - oss_period_size *= oss_frame_size; - - oss_buffer_size = oss_period_size * runtime->oss.periods; -if (oss_buffer_size <0 ) { + oss_period_size =array_size (oss_period_size, oss_frame_size); + oss_buffer_size =array_size (oss_period_size, runtime->oss.periods); +if (oss_buffer_size <=0 ) { err = -EINVAL ; goto failure; }
sound/core/oss/pcm_plugin.c +4 -1
@@ -61,7 +61,10 @@ static int snd_pcm_plugin_alloc(struct snd_pcm_plugin *plugin, snd_pcm_uframes_t }if ((width =snd_pcm_format_physical_width (format->format)) <0 )return width; - size = frames * format->channels * width; + size =array3_size (frames, format->channels, width); +/* check for too large period size once again */ +if (size >1024 *1024 ) +return -ENOMEM ;if (snd_BUG_ON (size %8 ))return -ENXIO ; size /=8 ;
sound/core/pcm_native.c +4 -0
@@ -1656,21 +1656,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
@@ -938,8 +938,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
@@ -302,7 +302,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
@@ -3310,7 +3309,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/pci/hda/patch_realtek.c +2 -0
@@ -8183,6 +8183,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {SND_PCI_QUIRK (0x1043 ,0x1e51 ,"ASUS Zephyrus M15" ,ALC294_FIXUP_ASUS_GU502_PINS ),SND_PCI_QUIRK (0x1043 ,0x1e8e ,"ASUS Zephyrus G15" ,ALC289_FIXUP_ASUS_GA401 ),SND_PCI_QUIRK (0x1043 ,0x1f11 ,"ASUS Zephyrus G14" ,ALC289_FIXUP_ASUS_GA401 ), +SND_PCI_QUIRK (0x1043 ,0x1d42 ,"ASUS Zephyrus G14 2022" ,ALC289_FIXUP_ASUS_GA401 ),SND_PCI_QUIRK (0x1043 ,0x16b2 ,"ASUS GU603" ,ALC289_FIXUP_ASUS_GA401 ),SND_PCI_QUIRK (0x1043 ,0x3030 ,"ASUS ZN270IE" ,ALC256_FIXUP_ASUS_AIO_GPIO2 ), SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
@@ -10201,6 +10202,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {SND_PCI_QUIRK (0x1028 ,0x069f ,"Dell" ,ALC668_FIXUP_DELL_MIC_NO_PRESENCE ),SND_PCI_QUIRK (0x103c ,0x1632 ,"HP RP5800" ,ALC662_FIXUP_HP_RP5800 ),SND_PCI_QUIRK (0x103c ,0x873e ,"HP" ,ALC671_FIXUP_HP_HEADSET_MIC2 ), +SND_PCI_QUIRK (0x103c ,0x885f ,"HP 288 Pro G8" ,ALC671_FIXUP_HP_HEADSET_MIC2 ),SND_PCI_QUIRK (0x1043 ,0x1080 ,"Asus UX501VW" ,ALC668_FIXUP_HEADSET_MODE ),SND_PCI_QUIRK (0x1043 ,0x11cd ,"Asus N550" , ALC662_FIXUP_ASUS_Nx50), SND_PCI_QUIRK(0x1043, 0x129d, "Asus N750", ALC662_FIXUP_ASUS_Nx50),
sound/soc/sti/uniperif_player.c +3 -3
@@ -91,7 +91,7 @@ static irqreturn_t uni_player_irq_handler(int irq, void *dev_id)SET_UNIPERIF_ITM_BCLR_FIFO_ERROR (player);/* Stop the player */ -snd_pcm_stop_xrun (player->substream); +snd_pcm_stop (player->substream,SNDRV_PCM_STATE_XRUN ); } ret =IRQ_HANDLED ;
@@ -105,7 +105,7 @@ static irqreturn_t uni_player_irq_handler(int irq, void *dev_id)SET_UNIPERIF_ITM_BCLR_DMA_ERROR (player);/* Stop the player */ -snd_pcm_stop_xrun (player->substream); +snd_pcm_stop (player->substream,SNDRV_PCM_STATE_XRUN ); ret =IRQ_HANDLED ; }
@@ -138,7 +138,7 @@ static irqreturn_t uni_player_irq_handler(int irq, void *dev_id)dev_err (player->dev,"Underflow recovery failed\n" );/* Stop the player */ -snd_pcm_stop_xrun (player->substream); +snd_pcm_stop (player->substream,SNDRV_PCM_STATE_XRUN ); ret =IRQ_HANDLED ; }
sound/soc/sti/uniperif_reader.c +1 -1
@@ -65,7 +65,7 @@ static irqreturn_t uni_reader_irq_handler(int irq, void *dev_id)if (unlikely (status &UNIPERIF_ITS_FIFO_ERROR_MASK (reader))) {dev_err (reader->dev,"FIFO error detected\n" ); -snd_pcm_stop_xrun (reader->substream); +snd_pcm_stop (reader->substream,SNDRV_PCM_STATE_XRUN ); ret =IRQ_HANDLED ; }
sound/usb/mixer_quirks.c +4 -3
@@ -2370,9 +2370,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 ;