commit:     9e0cefaa3b8df1043bea644c4041d990369d8110
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Wed Apr  7 12:10:44 2021 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Wed Apr  7 12:10:44 2021 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=9e0cefaa

Linux patch 4.4.265

Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>

 0000_README              |   4 +
 1264_linux-4.4.265.patch | 591 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 595 insertions(+)

diff --git a/0000_README b/0000_README
index 5125e01..64744c8 100644
--- a/0000_README
+++ b/0000_README
@@ -1099,6 +1099,10 @@ Patch:  1263_linux-4.4.264.patch
 From:   http://www.kernel.org
 Desc:   Linux 4.4.264
 
+Patch:  1264_linux-4.4.265.patch
+From:   http://www.kernel.org
+Desc:   Linux 4.4.264
+
 Patch:  1500_XATTR_USER_PREFIX.patch
 From:   https://bugs.gentoo.org/show_bug.cgi?id=470644
 Desc:   Support for namespace user.pax.* on tmpfs.

diff --git a/1264_linux-4.4.265.patch b/1264_linux-4.4.265.patch
new file mode 100644
index 0000000..d6b84ca
--- /dev/null
+++ b/1264_linux-4.4.265.patch
@@ -0,0 +1,591 @@
+diff --git a/Makefile b/Makefile
+index 54115c5ca4e29..af742b6f9e235 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 4
+ PATCHLEVEL = 4
+-SUBLEVEL = 264
++SUBLEVEL = 265
+ EXTRAVERSION =
+ NAME = Blurry Fish Butt
+ 
+diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
+index 21a123cadf782..e7fef10bd12c5 100644
+--- a/drivers/extcon/extcon.c
++++ b/drivers/extcon/extcon.c
+@@ -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;
+       }
+ 
+diff --git a/drivers/firewire/nosy.c b/drivers/firewire/nosy.c
+index 76b2d390f6ec9..40ed4d8c61f55 100644
+--- a/drivers/firewire/nosy.c
++++ b/drivers/firewire/nosy.c
+@@ -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);
+diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
+index c178e12183474..88cf948ce8d45 100644
+--- a/drivers/net/wan/lmc/lmc_main.c
++++ b/drivers/net/wan/lmc/lmc_main.c
+@@ -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;
+     }
+ 
+diff --git a/drivers/pinctrl/pinctrl-rockchip.c 
b/drivers/pinctrl/pinctrl-rockchip.c
+index eba400df82154..59f103c115ccf 100644
+--- a/drivers/pinctrl/pinctrl-rockchip.c
++++ b/drivers/pinctrl/pinctrl-rockchip.c
+@@ -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);
+ }
+diff --git a/drivers/scsi/qla2xxx/qla_target.h 
b/drivers/scsi/qla2xxx/qla_target.h
+index bca584ae45b7e..7a6fafa8ba56b 100644
+--- a/drivers/scsi/qla2xxx/qla_target.h
++++ b/drivers/scsi/qla2xxx/qla_target.h
+@@ -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;
+diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
+index 088a68ab4246b..3a3876091a9d1 100644
+--- a/drivers/scsi/st.c
++++ b/drivers/scsi/st.c
+@@ -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);
+       }
+ 
+diff --git a/drivers/staging/comedi/drivers/cb_pcidas.c 
b/drivers/staging/comedi/drivers/cb_pcidas.c
+index 3ea15bb0e56ef..15b9cc8531f02 100644
+--- a/drivers/staging/comedi/drivers/cb_pcidas.c
++++ b/drivers/staging/comedi/drivers/cb_pcidas.c
+@@ -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);
+diff --git a/drivers/staging/comedi/drivers/cb_pcidas64.c 
b/drivers/staging/comedi/drivers/cb_pcidas64.c
+index d33b8fe872a72..93d8c0b06d552 100644
+--- a/drivers/staging/comedi/drivers/cb_pcidas64.c
++++ b/drivers/staging/comedi/drivers/cb_pcidas64.c
+@@ -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);
+diff --git a/drivers/staging/rtl8192e/rtllib.h 
b/drivers/staging/rtl8192e/rtllib.h
+index 563ac12f0b2c3..b9e978e895c6a 100644
+--- a/drivers/staging/rtl8192e/rtllib.h
++++ b/drivers/staging/rtl8192e/rtllib.h
+@@ -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];
+diff --git a/drivers/staging/rtl8192e/rtllib_rx.c 
b/drivers/staging/rtl8192e/rtllib_rx.c
+index 37343ec3b4841..6921e036a828b 100644
+--- a/drivers/staging/rtl8192e/rtllib_rx.c
++++ b/drivers/staging/rtl8192e/rtllib_rx.c
+@@ -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
+diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
+index 53d2f02e18a32..8c476a785360f 100644
+--- a/drivers/usb/class/cdc-acm.c
++++ b/drivers/usb/class/cdc-acm.c
+@@ -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);
+diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
+index 2fc735efc3dc5..cd43e11d74f34 100644
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -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 },
+ 
+diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
+index 4c32a484f8bc4..6551f08e89a7c 100644
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -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;
+ }
+diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
+index 6168bcdadeba8..f22fcb3936841 100644
+--- a/fs/ext4/namei.c
++++ b/fs/ext4/namei.c
+@@ -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;
+ }
+ 
+diff --git a/fs/reiserfs/xattr.h b/fs/reiserfs/xattr.h
+index 613ff5aef94ea..19ca3745301fd 100644
+--- a/fs/reiserfs/xattr.h
++++ b/fs/reiserfs/xattr.h
+@@ -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))
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index b34462b6d653f..ca8c8bdc1143d 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -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);
+diff --git a/mm/memory.c b/mm/memory.c
+index 86ca97c24f1d9..360d28224a8e2 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -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)
+diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
+index ace94170f55e1..1048cddcc9a36 100644
+--- a/net/appletalk/ddp.c
++++ b/net/appletalk/ddp.c
+@@ -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);
+diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
+index 736cc95b52011..bb1a7405dc0e0 100644
+--- a/net/dccp/ipv6.c
++++ b/net/dccp/ipv6.c
+@@ -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;
+diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
+index c83c0faf5ae9d..9075acf081dda 100644
+--- a/net/ipv6/ip6_input.c
++++ b/net/ipv6/ip6_input.c
+@@ -151,16 +151,6 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, 
struct packet_type *pt
+       if (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);
+ 
+diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
+index b4ffcec732b49..53e15514d90d2 100644
+--- a/net/ipv6/tcp_ipv6.c
++++ b/net/ipv6/tcp_ipv6.c
+@@ -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);
+ 
+diff --git a/net/sunrpc/auth_gss/svcauth_gss.c 
b/net/sunrpc/auth_gss/svcauth_gss.c
+index 91263d6a103bd..bb8b0ef5de82c 100644
+--- a/net/sunrpc/auth_gss/svcauth_gss.c
++++ b/net/sunrpc/auth_gss/svcauth_gss.c
+@@ -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;
+ }
+ 
+diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
+index cdd91a60b89aa..8f5fec0956bd9 100644
+--- a/net/vmw_vsock/af_vsock.c
++++ b/net/vmw_vsock/af_vsock.c
+@@ -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();
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index c7061a5dd809a..4bfe06650277c 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -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)
+diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
+index b1c8bb39cdf1e..db7734e45dd1e 100644
+--- a/sound/soc/codecs/rt5640.c
++++ b/sound/soc/codecs/rt5640.c
+@@ -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 */
+diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
+index 1d40318189666..883b93f0bd38a 100644
+--- a/sound/soc/codecs/rt5651.c
++++ b/sound/soc/codecs/rt5651.c
+@@ -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 */
+diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
+index a3dd7030f629c..321b1ac52bfd1 100644
+--- a/sound/soc/codecs/sgtl5000.c
++++ b/sound/soc/codecs/sgtl5000.c
+@@ -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 },
+diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
+index 79cffe44388f9..cd615514a5ffa 100644
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -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;

Reply via email to