Linux 4.4.265
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.4.265 kernel.
All users of the 4.4 kernel series must upgrade.
The updated 4.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.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 - drivers/extcon/extcon.c | 1 drivers/firewire/nosy.c | 9 +++++-- drivers/net/wan/lmc/lmc_main.c | 2 + drivers/pinctrl/pinctrl-rockchip.c | 13 ++++++---- drivers/scsi/qla2xxx/qla_target.h | 2 - drivers/scsi/st.c | 2 - drivers/staging/comedi/drivers/cb_pcidas.c | 2 - drivers/staging/comedi/drivers/cb_pcidas64.c | 2 - drivers/staging/rtl8192e/rtllib.h | 2 - drivers/staging/rtl8192e/rtllib_rx.c | 2 - drivers/usb/class/cdc-acm.c | 12 ++++++++- drivers/usb/core/quirks.c | 4 +++ fs/ext4/inode.c | 6 ++-- fs/ext4/namei.c | 18 +++++++------- fs/reiserfs/xattr.h | 2 - kernel/trace/trace.c | 3 +- mm/memory.c | 2 - net/appletalk/ddp.c | 33 +++++++++++++++++---------- net/dccp/ipv6.c | 5 ++++ net/ipv6/ip6_input.c | 10 -------- net/ipv6/tcp_ipv6.c | 5 ++++ net/sunrpc/auth_gss/svcauth_gss.c | 11 +++++---- net/vmw_vsock/af_vsock.c | 1 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/rt5640.c | 4 +-- sound/soc/codecs/rt5651.c | 4 +-- sound/soc/codecs/sgtl5000.c | 2 - sound/usb/quirks.c | 1 29 files changed, 101 insertions(+), 62 deletions(-)
Alexey Dobriyan (1):
scsi: qla2xxx: Fix broken #endif placement
Atul Gopinathan (2):
staging: rtl8192e: Fix incorrect source in memcpy()
staging: rtl8192e: Change state information from u16 to u8
Benjamin Rood (1):
ASoC: sgtl5000: set DAP_AVC_CTRL register to correct default value on probe
David Brazdil (1):
selinux: vsock: Set SID for socket returned by accept()
Dinghao Liu (1):
extcon: Fix error handling in extcon_dev_register
Doug Brown (1):
appletalk: Fix skb allocation size in loopback case
Greg Kroah-Hartman (1):
Linux 4.4.265
Hans de Goede (2):
ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10
ASoC: rt5651: Fix dac- and adc- vol-tlv values being off by a factor of 10
Hui Wang (1):
ALSA: hda/realtek: call alc_update_headset_mode() in hp_automute_hook
Ikjoon Jang (1):
ALSA: usb-audio: Apply sample rate quirk to Logitech Connect
Ilya Lipnitskiy (1):
mm: fix race by making init_zero_pfn() early_initcall
J. Bruce Fields (1):
rpc: fix NULL dereference on kmalloc failure
Jakub Kicinski (1):
ipv6: weaken the v4mapped source check
Johan Hovold (1):
USB: cdc-acm: fix use-after-free after probe failure
Lv Yunlong (1):
scsi: st: Fix a use after free in st_open()
Oliver Neukum (2):
cdc-acm: fix BREAK rx code path adding necessary calls
USB: cdc-acm: downgrade message to debug
Steven Rostedt (VMware) (1):
tracing: Fix stack trace event size
Tetsuo Handa (1):
reiserfs: update reiserfs_xattrs_initialized() condition
Tong Zhang (3):
staging: comedi: cb_pcidas: fix request_irq() warn
staging: comedi: cb_pcidas64: fix request_irq() warn
net: wan/lmc: unregister device when no matching device is found
Vincent Palatin (1):
USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem
Wang Panzhenzhuan (1):
pinctrl: rockchip: fix restore error in resume
Zhaolong Zhang (1):
ext4: fix bh ref count on error paths
Zheyu Ma (1):
firewire: nosy: Fix a use-after-free bug in nosy_ioctl()
zhangyi (F) (1):
ext4: do not iput inode under running transaction in ext4_rename()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 4 PATCHLEVEL = 4 -SUBLEVEL = 264 +SUBLEVEL = 265 EXTRAVERSION = NAME = Blurry Fish Butt
drivers/extcon/extcon.c +1 -0
@@ -932,6 +932,7 @@ int extcon_dev_register(struct extcon_dev *edev) sizeof(*edev->nh) * edev->max_supported, GFP_KERNEL);if (!edev->nh) { ret = -ENOMEM ; +device_unregister (&edev->dev); goto err_dev; }
drivers/firewire/nosy.c +7 -2
@@ -358,6 +358,7 @@ nosy_ioctl(struct file *file, unsigned int cmd, unsigned long arg)struct client *client = file->private_data;spinlock_t *client_list_lock = &client->lynx->client_list_lock;struct nosy_stats stats; +int ret;switch (cmd) {case NOSY_IOC_GET_STATS :
@@ -372,11 +373,15 @@ nosy_ioctl(struct file *file, unsigned int cmd, unsigned long arg)return 0 ;case NOSY_IOC_START : + ret = -EBUSY ;spin_lock_irq (client_list_lock); -list_add_tail (&client->link, &client->lynx->client_list); +if (list_empty (&client->link)) { +list_add_tail (&client->link, &client->lynx->client_list); + ret =0 ; + }spin_unlock_irq (client_list_lock); -return 0 ; +return ret;case NOSY_IOC_STOP :spin_lock_irq (client_list_lock);
drivers/net/wan/lmc/lmc_main.c +2 -0
@@ -926,6 +926,8 @@ static int lmc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)break ;default :printk (KERN_WARNING "%s: LMC UNKNOWN CARD!\n" , dev->name); +unregister_hdlc_device (dev); +return -EIO ;break ; }
drivers/pinctrl/pinctrl-rockchip.c +8 -5
@@ -1967,12 +1967,15 @@ static int __maybe_unused rockchip_pinctrl_suspend(struct device *dev)static int __maybe_unused rockchip_pinctrl_resume (struct device *dev) {struct rockchip_pinctrl *info =dev_get_drvdata (dev); -int ret =regmap_write (info->regmap_base,RK3288_GRF_GPIO6C_IOMUX , - rk3288_grf_gpio6c_iomux | -GPIO6C6_SEL_WRITE_ENABLE ); +int ret; -if (ret) -return ret; +if (info->ctrl->type ==RK3288 ) { + ret =regmap_write (info->regmap_base,RK3288_GRF_GPIO6C_IOMUX , + rk3288_grf_gpio6c_iomux | +GPIO6C6_SEL_WRITE_ENABLE ); +if (ret) +return ret; + }return pinctrl_force_default (info->pctl_dev); }
drivers/scsi/qla2xxx/qla_target.h +1 -1
@@ -112,7 +112,6 @@ (min (1270 , ((ql) >0 ) ? (QLA_TGT_DATASEGS_PER_CMD_24XX + \ QLA_TGT_DATASEGS_PER_CONT_24XX*((ql) - 1)) : 0))#endif -#endif #define GET_TARGET_ID (ha, iocb) ((HAS_EXTENDED_IDS(ha)) \ ? le16_to_cpu((iocb)->u.isp2x.target.extended) \
@@ -323,6 +322,7 @@ struct ctio_to_2xxx {#ifndef CTIO_RET_TYPE #define CTIO_RET_TYPE 0x17/* CTIO return entry */ #define ATIO_TYPE7 0x06/* Accept target I/O entry for 24xx */ +#endif struct fcp_hdr {uint8_t r_ctl;
drivers/scsi/st.c +1 -1
@@ -1267,8 +1267,8 @@ static int st_open(struct inode *inode, struct file *filp)spin_lock (&st_use_lock);if (STp->in_use) {spin_unlock (&st_use_lock); -scsi_tape_put (STp);DEBC_printk (STp,"Device already in use.\n" ); +scsi_tape_put (STp);return (-EBUSY ); }
drivers/staging/comedi/drivers/cb_pcidas.c +1 -1
@@ -1290,7 +1290,7 @@ static int cb_pcidas_auto_attach(struct comedi_device *dev, devpriv->amcc + AMCC_OP_REG_INTCSR); ret =request_irq (pcidev->irq, cb_pcidas_interrupt,IRQF_SHARED , - dev->board_name, dev); +"cb_pcidas" , dev);if (ret) {dev_dbg (dev->class_dev,"unable to allocate irq %d\n" , pcidev->irq);
drivers/staging/comedi/drivers/cb_pcidas64.c +1 -1
@@ -4040,7 +4040,7 @@ static int auto_attach(struct comedi_device *dev,init_stc_registers (dev); retval =request_irq (pcidev->irq, handle_interrupt,IRQF_SHARED , - dev->board_name, dev); +"cb_pcidas64" , dev);if (retval) {dev_dbg (dev->class_dev,"unable to allocate irq %u\n" , pcidev->irq);
drivers/staging/rtl8192e/rtllib.h +1 -1
@@ -1160,7 +1160,7 @@ struct rtllib_network {bool bWithAironetIE;bool bCkipSupported;bool bCcxRmEnable; -u16 CcxRmState[2 ]; +u8 CcxRmState[2 ];bool bMBssidValid;u8 MBssidMask;u8 MBssid[ETH_ALEN ];
drivers/staging/rtl8192e/rtllib_rx.c +1 -1
@@ -1988,7 +1988,7 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee, info_element->data[2] == 0x96 && info_element->data[3] == 0x01) {if (info_element->len ==6 ) { -memcpy (network->CcxRmState, &info_element[4 ],2 ); +memcpy (network->CcxRmState, &info_element->data[4 ],2 );if (network->CcxRmState[0 ] !=0 ) network->bCcxRmEnable = true;else
drivers/usb/class/cdc-acm.c +10 -2
@@ -334,8 +334,10 @@ static void acm_ctrl_irq(struct urb *urb) acm->iocount.dsr++;if (difference &ACM_CTRL_DCD ) acm->iocount.dcd++; -if (newctrl &ACM_CTRL_BRK ) +if (newctrl &ACM_CTRL_BRK ) { acm->iocount.brk++; +tty_insert_flip_char (&acm->port,0 ,TTY_BREAK ); + }if (newctrl &ACM_CTRL_RI ) acm->iocount.rng++;if (newctrl &ACM_CTRL_FRAMING )
@@ -548,7 +550,8 @@ static void acm_port_dtr_rts(struct tty_port *port, int raise) res =acm_set_control (acm, val);if (res && (acm->ctrl_caps &USB_CDC_CAP_LINE )) -dev_err (&acm->control->dev,"failed to set dtr/rts\n" ); +/* This is broken in too many devices to spam the logs */ +dev_dbg (&acm->control->dev,"failed to set dtr/rts\n" ); }static int acm_port_activate (struct tty_port *port,struct tty_struct *tty)
@@ -1499,6 +1502,11 @@ skip_countries:return 0 ; alloc_fail8: +if (!acm->combined_interfaces) { +/* Clear driver data so that disconnect() returns early. */ +usb_set_intfdata (data_interface,NULL ); +usb_driver_release_interface (&acm_driver, data_interface); + }if (acm->country_codes) {device_remove_file (&acm->control->dev, &dev_attr_wCountryCodes);
drivers/usb/core/quirks.c +4 -0
@@ -321,6 +321,10 @@ static const struct usb_device_id usb_quirk_list[] = {/* DJI CineSSD */ { USB_DEVICE(0x2ca3, 0x0031), .driver_info = USB_QUIRK_NO_LPM }, + /* Fibocom L850-GL LTE Modem */ + { USB_DEVICE(0x2cb7, 0x0007), .driver_info = + USB_QUIRK_IGNORE_REMOTE_WAKEUP }, + /* INTEL VALUE SSD */ { USB_DEVICE(0x8086, 0xf1a5), .driver_info = USB_QUIRK_RESET_RESUME },
fs/ext4/inode.c +3 -3
@@ -1824,13 +1824,13 @@ static int __ext4_journalled_writepage(struct page *page,if (!ret) ret = err; -if (!ext4_has_inline_data (inode)) -ext4_walk_page_buffers (NULL , page_bufs,0 , len, -NULL , bput_one);ext4_set_inode_state (inode,EXT4_STATE_JDATA ); out:unlock_page (page); out_no_pagelock: +if (!inline_data && page_bufs) +ext4_walk_page_buffers (NULL , page_bufs,0 , len, +NULL , bput_one);brelse (inode_bh);return ret; }
fs/ext4/namei.c +9 -9
@@ -3554,7 +3554,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,*/ retval = -ENOENT ;if (!old.bh ||le32_to_cpu (old.de->inode) != old.inode->i_ino) - goto end_rename; + goto release_bh; if ((old.dir != new.dir) && ext4_encrypted_inode(new.dir) &&
@@ -3569,7 +3569,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry,if (IS_ERR (new.bh)) { retval =PTR_ERR (new.bh); new.bh =NULL ; - goto end_rename; + goto release_bh; }if (new.bh) {if (!new.inode) {
@@ -3586,15 +3586,13 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, handle =ext4_journal_start (old.dir,EXT4_HT_DIR , credits);if (IS_ERR (handle)) { retval =PTR_ERR (handle); - handle =NULL ; - goto end_rename; + goto release_bh; } }else { whiteout =ext4_whiteout_for_rename (&old, credits, &handle);if (IS_ERR (whiteout)) { retval =PTR_ERR (whiteout); - whiteout =NULL ; - goto end_rename; + goto release_bh; } }
@@ -3702,16 +3700,18 @@ end_rename:ext4_resetent (handle, &old, old.inode->i_ino, old_file_type);drop_nlink (whiteout); +ext4_orphan_add (handle, whiteout); }unlock_new_inode (whiteout); +ext4_journal_stop (handle);iput (whiteout); - + }else { +ext4_journal_stop (handle); } +release_bh:brelse (old.dir_bh);brelse (old.bh);brelse (new.bh); -if (handle) -ext4_journal_stop (handle);return retval; }
fs/reiserfs/xattr.h +1 -1
@@ -42,7 +42,7 @@ void reiserfs_security_free(struct reiserfs_security_handle *sec);static inline int reiserfs_xattrs_initialized (struct super_block *sb) { -return REISERFS_SB (sb)->priv_root !=NULL ; +return REISERFS_SB (sb)->priv_root &&REISERFS_SB (sb)->xattr_root; }#define xattr_size (size) ((size) + sizeof(struct reiserfs_xattr_header))
kernel/trace/trace.c +2 -1
@@ -1867,7 +1867,8 @@ static void __ftrace_trace_stack(struct ring_buffer *buffer, size *=sizeof (unsigned long ); event =trace_buffer_lock_reserve (buffer,TRACE_STACK , -sizeof (*entry) + size, flags, pc); + (sizeof (*entry) -sizeof (entry->caller)) + size, + flags, pc);if (!event) goto out; entry =ring_buffer_event_data (event);
mm/memory.c +1 -1
@@ -129,7 +129,7 @@ static int __init init_zero_pfn(void) zero_pfn =page_to_pfn (ZERO_PAGE (0 ));return 0 ; } -core_initcall (init_zero_pfn); +early_initcall (init_zero_pfn);#if defined(SPLIT_RSS_COUNTING )
net/appletalk/ddp.c +21 -12
@@ -1575,8 +1575,8 @@ static int atalk_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)struct sk_buff *skb;struct net_device *dev;struct ddpehdr *ddp; -int size; -struct atalk_route *rt; +int size, hard_header_len; +struct atalk_route *rt, *rt_lo =NULL ;int err;if (flags & ~(MSG_DONTWAIT |MSG_CMSG_COMPAT ))
@@ -1639,7 +1639,22 @@ static int atalk_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)SOCK_DEBUG (sk,"SK %p: Size needed %d, device %s\n" , sk, size, dev->name); - size += dev->hard_header_len; + hard_header_len = dev->hard_header_len; +/* Leave room for loopback hardware header if necessary */ +if (usat->sat_addr.s_node ==ATADDR_BCAST && + (dev->flags &IFF_LOOPBACK || !(rt->flags &RTF_GATEWAY ))) { +struct atalk_addr at_lo; + + at_lo.s_node =0 ; + at_lo.s_net =0 ; + + rt_lo =atrtr_find (&at_lo); + +if (rt_lo && rt_lo->dev->hard_header_len > hard_header_len) + hard_header_len = rt_lo->dev->hard_header_len; + } + + size += hard_header_len;release_sock (sk); skb =sock_alloc_send_skb (sk, size, (flags &MSG_DONTWAIT ), &err);lock_sock (sk);
@@ -1647,7 +1662,7 @@ static int atalk_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) goto out;skb_reserve (skb, ddp_dl->header_length); -skb_reserve (skb, dev->hard_header_len); +skb_reserve (skb, hard_header_len); skb->dev = dev;SOCK_DEBUG (sk,"SK %p: Begin build.\n" , sk);
@@ -1698,18 +1713,12 @@ static int atalk_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)/* loop back */ skb_orphan (skb);if (ddp->deh_dnode ==ATADDR_BCAST ) { -struct atalk_addr at_lo; - - at_lo.s_node =0 ; - at_lo.s_net =0 ; - - rt =atrtr_find (&at_lo); -if (!rt) { +if (!rt_lo) {kfree_skb (skb); err = -ENETUNREACH ; goto out; } - dev = rt->dev; + dev = rt_lo->dev; skb->dev = dev; } ddp_dl->request (ddp_dl, skb, dev->dev_addr);
net/dccp/ipv6.c +5 -0
@@ -313,6 +313,11 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)if (!ipv6_unicast_destination (skb))return 0 ;/* discard, don't send a reset here */ +if (ipv6_addr_v4mapped (&ipv6_hdr (skb)->saddr)) { +IP6_INC_STATS_BH (sock_net (sk),NULL ,IPSTATS_MIB_INHDRERRORS ); +return 0 ; + } +if (dccp_bad_service_code (sk, service)) { dcb->dccpd_reset_code =DCCP_RESET_CODE_BAD_SERVICE_CODE ; goto drop;
net/ipv6/ip6_input.c +0 -10
@@ -151,16 +151,6 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *ptif (ipv6_addr_is_multicast (&hdr->saddr)) goto err; -/* While RFC4291 is not explicit about v4mapped addresses -* in IPv6 headers, it seems clear linux dual-stack -* model can not deal properly with these. -* Security models could be fooled by ::ffff:127.0.0.1 for example. -* -* https://tools.ietf.org/html/draft-itojun-v6ops-v4mapped-harmful-02 -*/ -if (ipv6_addr_v4mapped (&hdr->saddr)) - goto err; - skb->transport_header = skb->network_header +sizeof (*hdr);IP6CB (skb)->nhoff = offsetof(struct ipv6hdr , nexthdr);
net/ipv6/tcp_ipv6.c +5 -0
@@ -978,6 +978,11 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)if (!ipv6_unicast_destination (skb)) goto drop; +if (ipv6_addr_v4mapped (&ipv6_hdr (skb)->saddr)) { +IP6_INC_STATS_BH (sock_net (sk),NULL ,IPSTATS_MIB_INHDRERRORS ); +return 0 ; + } +return tcp_conn_request (&tcp6_request_sock_ops, &tcp_request_sock_ipv6_ops, sk, skb);
net/sunrpc/auth_gss/svcauth_gss.c +7 -4
@@ -1697,11 +1697,14 @@ static int svcauth_gss_release(struct svc_rqst *rqstp) {struct gss_svc_data *gsd = (struct gss_svc_data *)rqstp->rq_auth_data; -struct rpc_gss_wire_cred *gc = &gsd->clcred; +struct rpc_gss_wire_cred *gc;struct xdr_buf *resbuf = &rqstp->rq_res;int stat = -EINVAL ;struct sunrpc_net *sn =net_generic (SVC_NET (rqstp), sunrpc_net_id); +if (!gsd) + goto out; + gc = &gsd->clcred;if (gc->gc_proc !=RPC_GSS_PROC_DATA ) goto out;/* Release can be called twice, but we only wrap once. */
@@ -1742,10 +1745,10 @@ out_err:if (rqstp->rq_cred.cr_group_info)put_group_info (rqstp->rq_cred.cr_group_info); rqstp->rq_cred.cr_group_info =NULL ; -if (gsd->rsci) +if (gsd && gsd->rsci) {cache_put (&gsd->rsci->h, sn->rsc_cache); - gsd->rsci =NULL ; - + gsd->rsci =NULL ; + }return stat; }
net/vmw_vsock/af_vsock.c +1 -0
@@ -632,6 +632,7 @@ struct sock *__vsock_create(struct net *net, vsk->trusted = psk->trusted; vsk->owner =get_cred (psk->owner); vsk->connect_timeout = psk->connect_timeout; +security_sk_clone (parent, sk); }else { vsk->trusted =ns_capable_noaudit (&init_user_ns,CAP_NET_ADMIN ); vsk->owner =get_current_cred ();
sound/pci/hda/patch_realtek.c +1 -0
@@ -4294,6 +4294,7 @@ static void alc_update_headset_jack_cb(struct hda_codec *codec,struct alc_spec *spec = codec->spec; spec->current_headset_type =ALC_HEADSET_TYPE_UNKNOWN ;snd_hda_gen_hp_automute (codec, jack); +alc_update_headset_mode (codec); }static void alc_probe_headset_mode (struct hda_codec *codec)
sound/soc/codecs/rt5640.c +2 -2
@@ -341,9 +341,9 @@ static bool rt5640_readable_register(struct device *dev, unsigned int reg) } static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0); -static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0); static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); -static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000); static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);/* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
sound/soc/codecs/rt5651.c +2 -2
@@ -286,9 +286,9 @@ static bool rt5651_readable_register(struct device *dev, unsigned int reg) } static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0); -static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0); static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); -static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0); +static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000); static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);/* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
sound/soc/codecs/sgtl5000.c +1 -1
@@ -78,7 +78,7 @@ static const struct reg_default sgtl5000_reg_defaults[] = { { SGTL5000_DAP_EQ_BASS_BAND4, 0x002f }, { SGTL5000_DAP_MAIN_CHAN, 0x8000 }, { SGTL5000_DAP_MIX_CHAN, 0x0000 }, - { SGTL5000_DAP_AVC_CTRL, 0x0510 }, + { SGTL5000_DAP_AVC_CTRL, 0x5100 }, { SGTL5000_DAP_AVC_THRESHOLD, 0x1473 }, { SGTL5000_DAP_AVC_ATTACK, 0x0028 }, { SGTL5000_DAP_AVC_DECAY, 0x0050 },
sound/usb/quirks.c +1 -0
@@ -1155,6 +1155,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)case USB_ID (0x21B4 ,0x0081 ):/* AudioQuest DragonFly */ case USB_ID (0x2912 ,0x30c8 ):/* Audioengine D1 */ case USB_ID (0x413c ,0xa506 ):/* Dell AE515 sound bar */ +case USB_ID (0x046d ,0x084c ):/* Logitech ConferenceCam Connect */ return true; }return false;