commit:     a6dcad8ba5c7a6b74d6cbb44a53f6fcf37cd4a72
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 16 22:29:59 2017 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Wed Aug 16 22:29:59 2017 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=a6dcad8b

Linux patch 4.4.83

 0000_README             |   4 +
 1082_linux-4.4.83.patch | 476 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 480 insertions(+)

diff --git a/0000_README b/0000_README
index 0fe7ce9..6ff83b9 100644
--- a/0000_README
+++ b/0000_README
@@ -371,6 +371,10 @@ Patch:  1081_linux-4.4.82.patch
 From:   http://www.kernel.org
 Desc:   Linux 4.4.82
 
+Patch:  1082_linux-4.4.83.patch
+From:   http://www.kernel.org
+Desc:   Linux 4.4.83
+
 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/1082_linux-4.4.83.patch b/1082_linux-4.4.83.patch
new file mode 100644
index 0000000..104c0c3
--- /dev/null
+++ b/1082_linux-4.4.83.patch
@@ -0,0 +1,476 @@
+diff --git a/Makefile b/Makefile
+index 52f2dd8dcebd..7f67b35caf99 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 4
+ PATCHLEVEL = 4
+-SUBLEVEL = 82
++SUBLEVEL = 83
+ EXTRAVERSION =
+ NAME = Blurry Fish Butt
+ 
+diff --git a/drivers/iio/accel/bmc150-accel-core.c 
b/drivers/iio/accel/bmc150-accel-core.c
+index fa24d5196615..c7122919a8c0 100644
+--- a/drivers/iio/accel/bmc150-accel-core.c
++++ b/drivers/iio/accel/bmc150-accel-core.c
+@@ -194,7 +194,6 @@ struct bmc150_accel_data {
+       struct device *dev;
+       int irq;
+       struct bmc150_accel_interrupt interrupts[BMC150_ACCEL_INTERRUPTS];
+-      atomic_t active_intr;
+       struct bmc150_accel_trigger triggers[BMC150_ACCEL_TRIGGERS];
+       struct mutex mutex;
+       u8 fifo_mode, watermark;
+@@ -489,11 +488,6 @@ static int bmc150_accel_set_interrupt(struct 
bmc150_accel_data *data, int i,
+               goto out_fix_power_state;
+       }
+ 
+-      if (state)
+-              atomic_inc(&data->active_intr);
+-      else
+-              atomic_dec(&data->active_intr);
+-
+       return 0;
+ 
+ out_fix_power_state:
+@@ -1704,8 +1698,7 @@ static int bmc150_accel_resume(struct device *dev)
+       struct bmc150_accel_data *data = iio_priv(indio_dev);
+ 
+       mutex_lock(&data->mutex);
+-      if (atomic_read(&data->active_intr))
+-              bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_NORMAL, 0);
++      bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_NORMAL, 0);
+       bmc150_accel_fifo_set_mode(data);
+       mutex_unlock(&data->mutex);
+ 
+diff --git a/drivers/iio/adc/vf610_adc.c b/drivers/iio/adc/vf610_adc.c
+index b10f629cc44b..1dbc2143cdfc 100644
+--- a/drivers/iio/adc/vf610_adc.c
++++ b/drivers/iio/adc/vf610_adc.c
+@@ -77,7 +77,7 @@
+ #define VF610_ADC_ADSTS_MASK          0x300
+ #define VF610_ADC_ADLPC_EN            0x80
+ #define VF610_ADC_ADHSC_EN            0x400
+-#define VF610_ADC_REFSEL_VALT         0x100
++#define VF610_ADC_REFSEL_VALT         0x800
+ #define VF610_ADC_REFSEL_VBG          0x1000
+ #define VF610_ADC_ADTRG_HARD          0x2000
+ #define VF610_ADC_AVGS_8              0x4000
+diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
+index 12731d6b89ec..ec1b2e798cc1 100644
+--- a/drivers/iio/light/tsl2563.c
++++ b/drivers/iio/light/tsl2563.c
+@@ -626,7 +626,7 @@ static irqreturn_t tsl2563_event_handler(int irq, void 
*private)
+       struct tsl2563_chip *chip = iio_priv(dev_info);
+ 
+       iio_push_event(dev_info,
+-                     IIO_UNMOD_EVENT_CODE(IIO_LIGHT,
++                     IIO_UNMOD_EVENT_CODE(IIO_INTENSITY,
+                                           0,
+                                           IIO_EV_TYPE_THRESH,
+                                           IIO_EV_DIR_EITHER),
+diff --git a/drivers/pinctrl/samsung/pinctrl-exynos.c 
b/drivers/pinctrl/samsung/pinctrl-exynos.c
+index 71ccf6a90b22..2551e4adb33f 100644
+--- a/drivers/pinctrl/samsung/pinctrl-exynos.c
++++ b/drivers/pinctrl/samsung/pinctrl-exynos.c
+@@ -194,8 +194,6 @@ static int exynos_irq_request_resources(struct irq_data 
*irqd)
+ 
+       spin_unlock_irqrestore(&bank->slock, flags);
+ 
+-      exynos_irq_unmask(irqd);
+-
+       return 0;
+ }
+ 
+@@ -216,8 +214,6 @@ static void exynos_irq_release_resources(struct irq_data 
*irqd)
+       shift = irqd->hwirq * bank_type->fld_width[PINCFG_TYPE_FUNC];
+       mask = (1 << bank_type->fld_width[PINCFG_TYPE_FUNC]) - 1;
+ 
+-      exynos_irq_mask(irqd);
+-
+       spin_lock_irqsave(&bank->slock, flags);
+ 
+       con = readl(d->virt_base + reg_con);
+diff --git a/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c 
b/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
+index 862a096c5dba..be5c71df148d 100644
+--- a/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
++++ b/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
+@@ -811,6 +811,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
+                 SUNXI_FUNCTION(0x2, "lcd1"),          /* D16 */
+                 SUNXI_FUNCTION(0x3, "pata"),          /* ATAD12 */
+                 SUNXI_FUNCTION(0x4, "keypad"),        /* IN6 */
++                SUNXI_FUNCTION(0x5, "sim"),           /* DET */
+                 SUNXI_FUNCTION_IRQ(0x6, 16),          /* EINT16 */
+                 SUNXI_FUNCTION(0x7, "csi1")),         /* D16 */
+       SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17),
+diff --git a/drivers/staging/iio/resolver/ad2s1210.c 
b/drivers/staging/iio/resolver/ad2s1210.c
+index d97aa2827412..8eb7179da342 100644
+--- a/drivers/staging/iio/resolver/ad2s1210.c
++++ b/drivers/staging/iio/resolver/ad2s1210.c
+@@ -468,7 +468,7 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev,
+                            long m)
+ {
+       struct ad2s1210_state *st = iio_priv(indio_dev);
+-      bool negative;
++      u16 negative;
+       int ret = 0;
+       u16 pos;
+       s16 vel;
+diff --git a/drivers/target/iscsi/iscsi_target.c 
b/drivers/target/iscsi/iscsi_target.c
+index 31d5d9c0e10b..1ff1c83e2df5 100644
+--- a/drivers/target/iscsi/iscsi_target.c
++++ b/drivers/target/iscsi/iscsi_target.c
+@@ -418,6 +418,7 @@ int iscsit_reset_np_thread(
+               return 0;
+       }
+       np->np_thread_state = ISCSI_NP_THREAD_RESET;
++      atomic_inc(&np->np_reset_count);
+ 
+       if (np->np_thread) {
+               spin_unlock_bh(&np->np_thread_lock);
+@@ -1996,6 +1997,7 @@ iscsit_setup_text_cmd(struct iscsi_conn *conn, struct 
iscsi_cmd *cmd,
+       cmd->cmd_sn             = be32_to_cpu(hdr->cmdsn);
+       cmd->exp_stat_sn        = be32_to_cpu(hdr->exp_statsn);
+       cmd->data_direction     = DMA_NONE;
++      kfree(cmd->text_in_ptr);
+       cmd->text_in_ptr        = NULL;
+ 
+       return 0;
+diff --git a/drivers/target/iscsi/iscsi_target_login.c 
b/drivers/target/iscsi/iscsi_target_login.c
+index b19edffa7d98..bc2cbffec27e 100644
+--- a/drivers/target/iscsi/iscsi_target_login.c
++++ b/drivers/target/iscsi/iscsi_target_login.c
+@@ -1219,9 +1219,11 @@ static int __iscsi_target_login_thread(struct iscsi_np 
*np)
+       flush_signals(current);
+ 
+       spin_lock_bh(&np->np_thread_lock);
+-      if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
++      if (atomic_dec_if_positive(&np->np_reset_count) >= 0) {
+               np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
++              spin_unlock_bh(&np->np_thread_lock);
+               complete(&np->np_restart_comp);
++              return 1;
+       } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) {
+               spin_unlock_bh(&np->np_thread_lock);
+               goto exit;
+@@ -1254,7 +1256,8 @@ static int __iscsi_target_login_thread(struct iscsi_np 
*np)
+               goto exit;
+       } else if (rc < 0) {
+               spin_lock_bh(&np->np_thread_lock);
+-              if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
++              if (atomic_dec_if_positive(&np->np_reset_count) >= 0) {
++                      np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
+                       spin_unlock_bh(&np->np_thread_lock);
+                       complete(&np->np_restart_comp);
+                       iscsit_put_transport(conn->conn_transport);
+diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
+index b403596818db..5c0952995280 100644
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -1851,7 +1851,7 @@ void usb_hcd_flush_endpoint(struct usb_device *udev,
+       /* No more submits can occur */
+       spin_lock_irq(&hcd_urb_list_lock);
+ rescan:
+-      list_for_each_entry (urb, &ep->urb_list, urb_list) {
++      list_for_each_entry_reverse(urb, &ep->urb_list, urb_list) {
+               int     is_in;
+ 
+               if (urb->unlinked)
+@@ -2448,6 +2448,8 @@ void usb_hc_died (struct usb_hcd *hcd)
+       }
+       if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
+               hcd = hcd->shared_hcd;
++              clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
++              set_bit(HCD_FLAG_DEAD, &hcd->flags);
+               if (hcd->rh_registered) {
+                       clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
+ 
+diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
+index 1d59d489a1ad..cdf4be3939f5 100644
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -4661,7 +4661,8 @@ hub_power_remaining(struct usb_hub *hub)
+ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
+               u16 portchange)
+ {
+-      int status, i;
++      int status = -ENODEV;
++      int i;
+       unsigned unit_load;
+       struct usb_device *hdev = hub->hdev;
+       struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
+@@ -4865,9 +4866,10 @@ loop:
+ 
+ done:
+       hub_port_disable(hub, port1, 1);
+-      if (hcd->driver->relinquish_port && !hub->hdev->parent)
+-              hcd->driver->relinquish_port(hcd, port1);
+-
++      if (hcd->driver->relinquish_port && !hub->hdev->parent) {
++              if (status != -ENOTCONN && status != -ENODEV)
++                      hcd->driver->relinquish_port(hcd, port1);
++      }
+ }
+ 
+ /* Handle physical or logical connection change events.
+diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
+index 3116edfcdc18..574da2b4529c 100644
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -150,6 +150,9 @@ static const struct usb_device_id usb_quirk_list[] = {
+       /* appletouch */
+       { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME },
+ 
++      /* Genesys Logic hub, internally used by Moshi USB to Ethernet Adapter 
*/
++      { USB_DEVICE(0x05e3, 0x0616), .driver_info = USB_QUIRK_NO_LPM },
++
+       /* Avision AV600U */
+       { USB_DEVICE(0x0638, 0x0a13), .driver_info =
+         USB_QUIRK_STRING_FETCH_255 },
+@@ -249,6 +252,7 @@ static const struct usb_device_id 
usb_amd_resume_quirk_list[] = {
+       { USB_DEVICE(0x093a, 0x2500), .driver_info = USB_QUIRK_RESET_RESUME },
+       { USB_DEVICE(0x093a, 0x2510), .driver_info = USB_QUIRK_RESET_RESUME },
+       { USB_DEVICE(0x093a, 0x2521), .driver_info = USB_QUIRK_RESET_RESUME },
++      { USB_DEVICE(0x03f0, 0x2b4a), .driver_info = USB_QUIRK_RESET_RESUME },
+ 
+       /* Logitech Optical Mouse M90/M100 */
+       { USB_DEVICE(0x046d, 0xc05a), .driver_info = USB_QUIRK_RESET_RESUME },
+diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
+index f9400564cb72..03b9a372636f 100644
+--- a/drivers/usb/host/pci-quirks.c
++++ b/drivers/usb/host/pci-quirks.c
+@@ -89,6 +89,7 @@ enum amd_chipset_gen {
+       AMD_CHIPSET_HUDSON2,
+       AMD_CHIPSET_BOLTON,
+       AMD_CHIPSET_YANGTZE,
++      AMD_CHIPSET_TAISHAN,
+       AMD_CHIPSET_UNKNOWN,
+ };
+ 
+@@ -132,6 +133,11 @@ static int amd_chipset_sb_type_init(struct 
amd_chipset_info *pinfo)
+                       pinfo->sb_type.gen = AMD_CHIPSET_SB700;
+               else if (rev >= 0x40 && rev <= 0x4f)
+                       pinfo->sb_type.gen = AMD_CHIPSET_SB800;
++      }
++      pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
++                                        0x145c, NULL);
++      if (pinfo->smbus_dev) {
++              pinfo->sb_type.gen = AMD_CHIPSET_TAISHAN;
+       } else {
+               pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
+                               PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL);
+@@ -251,11 +257,12 @@ int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev)
+ {
+       /* Make sure amd chipset type has already been initialized */
+       usb_amd_find_chipset_info();
+-      if (amd_chipset.sb_type.gen != AMD_CHIPSET_YANGTZE)
+-              return 0;
+-
+-      dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n");
+-      return 1;
++      if (amd_chipset.sb_type.gen == AMD_CHIPSET_YANGTZE ||
++          amd_chipset.sb_type.gen == AMD_CHIPSET_TAISHAN) {
++              dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n");
++              return 1;
++      }
++      return 0;
+ }
+ EXPORT_SYMBOL_GPL(usb_hcd_amd_remote_wakeup_quirk);
+ 
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 13d5614f37f1..0d843e0f8055 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -138,6 +138,7 @@ static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep)
+                               "Could not flush host TX%d fifo: csr: %04x\n",
+                               ep->epnum, csr))
+                       return;
++              mdelay(1);
+       }
+ }
+ 
+diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
+index b0dc6da3d970..41a6513646de 100644
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -135,6 +135,7 @@ static const struct usb_device_id id_table[] = {
+       { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */
+       { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */
+       { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long 
Range */
++      { USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */
+       { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+       { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
+diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
+index ebe51f11105d..fe123153b1a5 100644
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -2025,6 +2025,8 @@ static const struct usb_device_id option_ids[] = {
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) },                   
/* D-Link DWM-158 */
+       { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff),                     
/* D-Link DWM-221 B1 */
+         .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
++      { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e35, 0xff),                     
/* D-Link DWM-222 */
++        .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* 
D-Link DWM-152/C1 */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* 
D-Link DWM-156/C1 */
+       { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* 
D-Link DWM-156/A3 */
+diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
+index 1db4b61bdf7b..a51b28379850 100644
+--- a/drivers/usb/serial/pl2303.c
++++ b/drivers/usb/serial/pl2303.c
+@@ -49,6 +49,7 @@ static const struct usb_device_id id_table[] = {
+       { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) },
+       { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) },
+       { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) },
++      { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_UC485) },
+       { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID2) },
+       { USB_DEVICE(ATEN_VENDOR_ID2, ATEN_PRODUCT_ID) },
+       { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) },
+diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
+index 09d9be88209e..3b5a15d1dc0d 100644
+--- a/drivers/usb/serial/pl2303.h
++++ b/drivers/usb/serial/pl2303.h
+@@ -27,6 +27,7 @@
+ #define ATEN_VENDOR_ID                0x0557
+ #define ATEN_VENDOR_ID2               0x0547
+ #define ATEN_PRODUCT_ID               0x2008
++#define ATEN_PRODUCT_UC485    0x2021
+ #define ATEN_PRODUCT_ID2      0x2118
+ 
+ #define IODATA_VENDOR_ID      0x04bb
+diff --git a/drivers/usb/storage/unusual_uas.h 
b/drivers/usb/storage/unusual_uas.h
+index 53341a77d89f..a37ed1e59e99 100644
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -123,9 +123,9 @@ UNUSUAL_DEV(0x0bc2, 0xab2a, 0x0000, 0x9999,
+ /* Reported-by: Benjamin Tissoires <[email protected]> */
+ UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
+               "Initio Corporation",
+-              "",
++              "INIC-3069",
+               USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+-              US_FL_NO_ATA_1X),
++              US_FL_NO_ATA_1X | US_FL_IGNORE_RESIDUE),
+ 
+ /* Reported-by: Tom Arild Naess <[email protected]> */
+ UNUSUAL_DEV(0x152d, 0x0539, 0x0000, 0x9999,
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
+index 11538a8be9f0..1a063cbfe503 100644
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -46,7 +46,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
+ {
+       struct fuse_file *ff;
+ 
+-      ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL);
++      ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL);
+       if (unlikely(!ff))
+               return NULL;
+ 
+diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
+index f31fd0dd92c6..b1daeafbea92 100644
+--- a/fs/nfs/Kconfig
++++ b/fs/nfs/Kconfig
+@@ -121,6 +121,7 @@ config PNFS_FILE_LAYOUT
+ config PNFS_BLOCK
+       tristate
+       depends on NFS_V4_1 && BLK_DEV_DM
++      depends on 64BIT || LBDAF
+       default NFS_V4
+ 
+ config PNFS_OBJLAYOUT
+diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c 
b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+index e125e55de86d..2603d7589946 100644
+--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
++++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+@@ -30,6 +30,7 @@ void nfs4_ff_layout_free_deviceid(struct nfs4_ff_layout_ds 
*mirror_ds)
+ {
+       nfs4_print_deviceid(&mirror_ds->id_node.deviceid);
+       nfs4_pnfs_ds_put(mirror_ds->ds);
++      kfree(mirror_ds->ds_versions);
+       kfree_rcu(mirror_ds, id_node.rcu);
+ }
+ 
+diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
+index 85a868ccb493..8397dc235e84 100644
+--- a/include/linux/cpuset.h
++++ b/include/linux/cpuset.h
+@@ -16,6 +16,7 @@
+ 
+ #ifdef CONFIG_CPUSETS
+ 
++extern struct static_key cpusets_pre_enable_key;
+ extern struct static_key cpusets_enabled_key;
+ static inline bool cpusets_enabled(void)
+ {
+@@ -30,12 +31,14 @@ static inline int nr_cpusets(void)
+ 
+ static inline void cpuset_inc(void)
+ {
++      static_key_slow_inc(&cpusets_pre_enable_key);
+       static_key_slow_inc(&cpusets_enabled_key);
+ }
+ 
+ static inline void cpuset_dec(void)
+ {
+       static_key_slow_dec(&cpusets_enabled_key);
++      static_key_slow_dec(&cpusets_pre_enable_key);
+ }
+ 
+ extern int cpuset_init(void);
+@@ -104,7 +107,7 @@ extern void cpuset_print_current_mems_allowed(void);
+  */
+ static inline unsigned int read_mems_allowed_begin(void)
+ {
+-      if (!cpusets_enabled())
++      if (!static_key_false(&cpusets_pre_enable_key))
+               return 0;
+ 
+       return read_seqcount_begin(&current->mems_allowed_seq);
+@@ -118,7 +121,7 @@ static inline unsigned int read_mems_allowed_begin(void)
+  */
+ static inline bool read_mems_allowed_retry(unsigned int seq)
+ {
+-      if (!cpusets_enabled())
++      if (!static_key_false(&cpusets_enabled_key))
+               return false;
+ 
+       return read_seqcount_retry(&current->mems_allowed_seq, seq);
+diff --git a/include/target/iscsi/iscsi_target_core.h 
b/include/target/iscsi/iscsi_target_core.h
+index fdda45f26f75..22f442ab85f9 100644
+--- a/include/target/iscsi/iscsi_target_core.h
++++ b/include/target/iscsi/iscsi_target_core.h
+@@ -784,6 +784,7 @@ struct iscsi_np {
+       int                     np_sock_type;
+       enum np_thread_state_table np_thread_state;
+       bool                    enabled;
++      atomic_t                np_reset_count;
+       enum iscsi_timer_flags_table np_login_timer_flags;
+       u32                     np_exports;
+       enum np_flags_table     np_flags;
+diff --git a/kernel/cpuset.c b/kernel/cpuset.c
+index 3b5e5430f5d0..8ccd66a97c8b 100644
+--- a/kernel/cpuset.c
++++ b/kernel/cpuset.c
+@@ -60,6 +60,7 @@
+ #include <linux/cgroup.h>
+ #include <linux/wait.h>
+ 
++struct static_key cpusets_pre_enable_key __read_mostly = 
STATIC_KEY_INIT_FALSE;
+ struct static_key cpusets_enabled_key __read_mostly = STATIC_KEY_INIT_FALSE;
+ 
+ /* See "Frequency meter" comments, below. */
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index f9d648fce8cd..53286b2f5b1c 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -6804,7 +6804,7 @@ int alloc_contig_range(unsigned long start, unsigned 
long end,
+ 
+       /* Make sure the range is really isolated. */
+       if (test_pages_isolated(outer_start, end, false)) {
+-              pr_info("%s: [%lx, %lx) PFNs busy\n",
++              pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
+                       __func__, outer_start, end);
+               ret = -EBUSY;
+               goto done;

Reply via email to