Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:4.4 commit in: /
Date: Tue, 29 Oct 2019 10:08:32
Message-Id: 1572343687.1851ea6d5b5babc7df0ca2f6b9c680a38f3154d7.mpagano@gentoo
1 commit: 1851ea6d5b5babc7df0ca2f6b9c680a38f3154d7
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Tue Oct 29 10:08:07 2019 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Tue Oct 29 10:08:07 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=1851ea6d
7
8 Linux patch 4.4.198
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 +
13 1197_linux-4.4.198.patch | 1004 ++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 1008 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index e5ffd05..9bdacaa 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -831,6 +831,10 @@ Patch: 1196_linux-4.4.197.patch
21 From: http://www.kernel.org
22 Desc: Linux 4.4.197
23
24 +Patch: 1197_linux-4.4.198.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 4.4.198
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1197_linux-4.4.198.patch b/1197_linux-4.4.198.patch
33 new file mode 100644
34 index 0000000..14f4fd1
35 --- /dev/null
36 +++ b/1197_linux-4.4.198.patch
37 @@ -0,0 +1,1004 @@
38 +diff --git a/Makefile b/Makefile
39 +index 5c150d32cae7..3de38e5e93d1 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,6 +1,6 @@
43 + VERSION = 4
44 + PATCHLEVEL = 4
45 +-SUBLEVEL = 197
46 ++SUBLEVEL = 198
47 + EXTRAVERSION =
48 + NAME = Blurry Fish Butt
49 +
50 +diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
51 +index 3ef1d5a26389..3bb5254a227a 100644
52 +--- a/arch/arm/boot/dts/am4372.dtsi
53 ++++ b/arch/arm/boot/dts/am4372.dtsi
54 +@@ -1002,6 +1002,8 @@
55 + ti,hwmods = "dss_dispc";
56 + clocks = <&disp_clk>;
57 + clock-names = "fck";
58 ++
59 ++ max-memory-bandwidth = <230000000>;
60 + };
61 +
62 + rfbi: rfbi@4832a800 {
63 +diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
64 +index b31ad596be79..6b09debcf484 100644
65 +--- a/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
66 ++++ b/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
67 +@@ -1020,7 +1020,8 @@ static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = {
68 + .rev_offs = 0x0000,
69 + .sysc_offs = 0x0010,
70 + .syss_offs = 0x0014,
71 +- .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
72 ++ .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
73 ++ SYSC_HAS_RESET_STATUS,
74 + .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
75 + SIDLE_SMART_WKUP),
76 + .sysc_fields = &omap_hwmod_sysc_type2,
77 +diff --git a/arch/mips/loongson64/common/serial.c b/arch/mips/loongson64/common/serial.c
78 +index ffefc1cb2612..98c3a7feb10f 100644
79 +--- a/arch/mips/loongson64/common/serial.c
80 ++++ b/arch/mips/loongson64/common/serial.c
81 +@@ -110,7 +110,7 @@ static int __init serial_init(void)
82 + }
83 + module_init(serial_init);
84 +
85 +-static void __init serial_exit(void)
86 ++static void __exit serial_exit(void)
87 + {
88 + platform_device_unregister(&uart8250_device);
89 + }
90 +diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c
91 +index 838d0259cd27..3741f91fc186 100644
92 +--- a/arch/parisc/mm/ioremap.c
93 ++++ b/arch/parisc/mm/ioremap.c
94 +@@ -2,7 +2,7 @@
95 + * arch/parisc/mm/ioremap.c
96 + *
97 + * (C) Copyright 1995 1996 Linus Torvalds
98 +- * (C) Copyright 2001-2006 Helge Deller <deller@×××.de>
99 ++ * (C) Copyright 2001-2019 Helge Deller <deller@×××.de>
100 + * (C) Copyright 2005 Kyle McMartin <kyle@××××××××××××.org>
101 + */
102 +
103 +@@ -83,7 +83,7 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
104 + addr = (void __iomem *) area->addr;
105 + if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size,
106 + phys_addr, pgprot)) {
107 +- vfree(addr);
108 ++ vunmap(addr);
109 + return NULL;
110 + }
111 +
112 +@@ -91,9 +91,11 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
113 + }
114 + EXPORT_SYMBOL(__ioremap);
115 +
116 +-void iounmap(const volatile void __iomem *addr)
117 ++void iounmap(const volatile void __iomem *io_addr)
118 + {
119 +- if (addr > high_memory)
120 +- return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
121 ++ unsigned long addr = (unsigned long)io_addr & PAGE_MASK;
122 ++
123 ++ if (is_vmalloc_addr((void *)addr))
124 ++ vunmap((void *)addr);
125 + }
126 + EXPORT_SYMBOL(iounmap);
127 +diff --git a/arch/xtensa/kernel/xtensa_ksyms.c b/arch/xtensa/kernel/xtensa_ksyms.c
128 +index 4d2872fd9bb5..e2dd9109df63 100644
129 +--- a/arch/xtensa/kernel/xtensa_ksyms.c
130 ++++ b/arch/xtensa/kernel/xtensa_ksyms.c
131 +@@ -116,13 +116,6 @@ EXPORT_SYMBOL(__invalidate_icache_range);
132 + // FIXME EXPORT_SYMBOL(screen_info);
133 + #endif
134 +
135 +-EXPORT_SYMBOL(outsb);
136 +-EXPORT_SYMBOL(outsw);
137 +-EXPORT_SYMBOL(outsl);
138 +-EXPORT_SYMBOL(insb);
139 +-EXPORT_SYMBOL(insw);
140 +-EXPORT_SYMBOL(insl);
141 +-
142 + extern long common_exception_return;
143 + EXPORT_SYMBOL(common_exception_return);
144 +
145 +diff --git a/drivers/base/core.c b/drivers/base/core.c
146 +index af948fedd232..64b59552e744 100644
147 +--- a/drivers/base/core.c
148 ++++ b/drivers/base/core.c
149 +@@ -10,6 +10,7 @@
150 + *
151 + */
152 +
153 ++#include <linux/cpufreq.h>
154 + #include <linux/device.h>
155 + #include <linux/err.h>
156 + #include <linux/fwnode.h>
157 +@@ -2124,6 +2125,8 @@ void device_shutdown(void)
158 + {
159 + struct device *dev, *parent;
160 +
161 ++ cpufreq_suspend();
162 ++
163 + spin_lock(&devices_kset->list_lock);
164 + /*
165 + * Walk the devices list backward, shutting down each in turn.
166 +diff --git a/drivers/block/loop.c b/drivers/block/loop.c
167 +index da3902ac16c8..8aadd4d0c3a8 100644
168 +--- a/drivers/block/loop.c
169 ++++ b/drivers/block/loop.c
170 +@@ -1557,6 +1557,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
171 + arg = (unsigned long) compat_ptr(arg);
172 + case LOOP_SET_FD:
173 + case LOOP_CHANGE_FD:
174 ++ case LOOP_SET_DIRECT_IO:
175 + err = lo_ioctl(bdev, mode, cmd, arg);
176 + break;
177 + default:
178 +diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
179 +index 205df72ee873..0836d2939c7a 100644
180 +--- a/drivers/cpufreq/cpufreq.c
181 ++++ b/drivers/cpufreq/cpufreq.c
182 +@@ -2512,14 +2512,6 @@ int cpufreq_unregister_driver(struct cpufreq_driver *driver)
183 + }
184 + EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
185 +
186 +-/*
187 +- * Stop cpufreq at shutdown to make sure it isn't holding any locks
188 +- * or mutexes when secondary CPUs are halted.
189 +- */
190 +-static struct syscore_ops cpufreq_syscore_ops = {
191 +- .shutdown = cpufreq_suspend,
192 +-};
193 +-
194 + struct kobject *cpufreq_global_kobject;
195 + EXPORT_SYMBOL(cpufreq_global_kobject);
196 +
197 +@@ -2531,8 +2523,6 @@ static int __init cpufreq_core_init(void)
198 + cpufreq_global_kobject = kobject_create_and_add("cpufreq", &cpu_subsys.dev_root->kobj);
199 + BUG_ON(!cpufreq_global_kobject);
200 +
201 +- register_syscore_ops(&cpufreq_syscore_ops);
202 +-
203 + return 0;
204 + }
205 + core_initcall(cpufreq_core_init);
206 +diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
207 +index 724f7cf52253..b439e2f8ee00 100644
208 +--- a/drivers/gpu/drm/drm_edid.c
209 ++++ b/drivers/gpu/drm/drm_edid.c
210 +@@ -150,6 +150,9 @@ static struct edid_quirk {
211 + /* Medion MD 30217 PG */
212 + { "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
213 +
214 ++ /* Lenovo G50 */
215 ++ { "SDC", 18514, EDID_QUIRK_FORCE_6BPC },
216 ++
217 + /* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
218 + { "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
219 +
220 +diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
221 +index 8218d714fa01..4b682375f465 100644
222 +--- a/drivers/infiniband/hw/cxgb4/mem.c
223 ++++ b/drivers/infiniband/hw/cxgb4/mem.c
224 +@@ -254,13 +254,17 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
225 + u64 len, u8 page_size, u32 pbl_size, u32 pbl_addr)
226 + {
227 + int err;
228 +- struct fw_ri_tpte tpt;
229 ++ struct fw_ri_tpte *tpt;
230 + u32 stag_idx;
231 + static atomic_t key;
232 +
233 + if (c4iw_fatal_error(rdev))
234 + return -EIO;
235 +
236 ++ tpt = kmalloc(sizeof(*tpt), GFP_KERNEL);
237 ++ if (!tpt)
238 ++ return -ENOMEM;
239 ++
240 + stag_state = stag_state > 0;
241 + stag_idx = (*stag) >> 8;
242 +
243 +@@ -270,6 +274,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
244 + mutex_lock(&rdev->stats.lock);
245 + rdev->stats.stag.fail++;
246 + mutex_unlock(&rdev->stats.lock);
247 ++ kfree(tpt);
248 + return -ENOMEM;
249 + }
250 + mutex_lock(&rdev->stats.lock);
251 +@@ -284,28 +289,28 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
252 +
253 + /* write TPT entry */
254 + if (reset_tpt_entry)
255 +- memset(&tpt, 0, sizeof(tpt));
256 ++ memset(tpt, 0, sizeof(*tpt));
257 + else {
258 +- tpt.valid_to_pdid = cpu_to_be32(FW_RI_TPTE_VALID_F |
259 ++ tpt->valid_to_pdid = cpu_to_be32(FW_RI_TPTE_VALID_F |
260 + FW_RI_TPTE_STAGKEY_V((*stag & FW_RI_TPTE_STAGKEY_M)) |
261 + FW_RI_TPTE_STAGSTATE_V(stag_state) |
262 + FW_RI_TPTE_STAGTYPE_V(type) | FW_RI_TPTE_PDID_V(pdid));
263 +- tpt.locread_to_qpid = cpu_to_be32(FW_RI_TPTE_PERM_V(perm) |
264 ++ tpt->locread_to_qpid = cpu_to_be32(FW_RI_TPTE_PERM_V(perm) |
265 + (bind_enabled ? FW_RI_TPTE_MWBINDEN_F : 0) |
266 + FW_RI_TPTE_ADDRTYPE_V((zbva ? FW_RI_ZERO_BASED_TO :
267 + FW_RI_VA_BASED_TO))|
268 + FW_RI_TPTE_PS_V(page_size));
269 +- tpt.nosnoop_pbladdr = !pbl_size ? 0 : cpu_to_be32(
270 ++ tpt->nosnoop_pbladdr = !pbl_size ? 0 : cpu_to_be32(
271 + FW_RI_TPTE_PBLADDR_V(PBL_OFF(rdev, pbl_addr)>>3));
272 +- tpt.len_lo = cpu_to_be32((u32)(len & 0xffffffffUL));
273 +- tpt.va_hi = cpu_to_be32((u32)(to >> 32));
274 +- tpt.va_lo_fbo = cpu_to_be32((u32)(to & 0xffffffffUL));
275 +- tpt.dca_mwbcnt_pstag = cpu_to_be32(0);
276 +- tpt.len_hi = cpu_to_be32((u32)(len >> 32));
277 ++ tpt->len_lo = cpu_to_be32((u32)(len & 0xffffffffUL));
278 ++ tpt->va_hi = cpu_to_be32((u32)(to >> 32));
279 ++ tpt->va_lo_fbo = cpu_to_be32((u32)(to & 0xffffffffUL));
280 ++ tpt->dca_mwbcnt_pstag = cpu_to_be32(0);
281 ++ tpt->len_hi = cpu_to_be32((u32)(len >> 32));
282 + }
283 + err = write_adapter_mem(rdev, stag_idx +
284 + (rdev->lldi.vr->stag.start >> 5),
285 +- sizeof(tpt), &tpt);
286 ++ sizeof(*tpt), tpt);
287 +
288 + if (reset_tpt_entry) {
289 + c4iw_put_resource(&rdev->resource.tpt_table, stag_idx);
290 +@@ -313,6 +318,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
291 + rdev->stats.stag.cur -= 32;
292 + mutex_unlock(&rdev->stats.lock);
293 + }
294 ++ kfree(tpt);
295 + return err;
296 + }
297 +
298 +diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c
299 +index 48db922075e2..08fa6400d255 100644
300 +--- a/drivers/memstick/host/jmb38x_ms.c
301 ++++ b/drivers/memstick/host/jmb38x_ms.c
302 +@@ -947,7 +947,7 @@ static int jmb38x_ms_probe(struct pci_dev *pdev,
303 + if (!cnt) {
304 + rc = -ENODEV;
305 + pci_dev_busy = 1;
306 +- goto err_out;
307 ++ goto err_out_int;
308 + }
309 +
310 + jm = kzalloc(sizeof(struct jmb38x_ms)
311 +diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
312 +index ce20bc939b38..e651845c6605 100644
313 +--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h
314 ++++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
315 +@@ -362,6 +362,7 @@ struct bcmgenet_mib_counters {
316 + #define EXT_ENERGY_DET_MASK (1 << 12)
317 +
318 + #define EXT_RGMII_OOB_CTRL 0x0C
319 ++#define RGMII_MODE_EN_V123 (1 << 0)
320 + #define RGMII_LINK (1 << 4)
321 + #define OOB_DISABLE (1 << 5)
322 + #define RGMII_MODE_EN (1 << 6)
323 +diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
324 +index 0565efad6e6e..3ad016f500b5 100644
325 +--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
326 ++++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
327 +@@ -328,7 +328,11 @@ int bcmgenet_mii_config(struct net_device *dev)
328 + */
329 + if (priv->ext_phy) {
330 + reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
331 +- reg |= RGMII_MODE_EN | id_mode_dis;
332 ++ reg |= id_mode_dis;
333 ++ if (GENET_IS_V1(priv) || GENET_IS_V2(priv) || GENET_IS_V3(priv))
334 ++ reg |= RGMII_MODE_EN_V123;
335 ++ else
336 ++ reg |= RGMII_MODE_EN;
337 + bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
338 + }
339 +
340 +@@ -342,11 +346,12 @@ int bcmgenet_mii_probe(struct net_device *dev)
341 + struct bcmgenet_priv *priv = netdev_priv(dev);
342 + struct device_node *dn = priv->pdev->dev.of_node;
343 + struct phy_device *phydev;
344 +- u32 phy_flags;
345 ++ u32 phy_flags = 0;
346 + int ret;
347 +
348 + /* Communicate the integrated PHY revision */
349 +- phy_flags = priv->gphy_rev;
350 ++ if (priv->internal_phy)
351 ++ phy_flags = priv->gphy_rev;
352 +
353 + /* Initialize link state variables that bcmgenet_mii_setup() uses */
354 + priv->old_link = -1;
355 +diff --git a/drivers/net/ethernet/hisilicon/hns_mdio.c b/drivers/net/ethernet/hisilicon/hns_mdio.c
356 +index 6ff13c559e52..09fcc821b7da 100644
357 +--- a/drivers/net/ethernet/hisilicon/hns_mdio.c
358 ++++ b/drivers/net/ethernet/hisilicon/hns_mdio.c
359 +@@ -156,11 +156,15 @@ static int mdio_sc_cfg_reg_write(struct hns_mdio_device *mdio_dev,
360 + {
361 + u32 time_cnt;
362 + u32 reg_value;
363 ++ int ret;
364 +
365 + regmap_write(mdio_dev->subctrl_vbase, cfg_reg, set_val);
366 +
367 + for (time_cnt = MDIO_TIMEOUT; time_cnt; time_cnt--) {
368 +- regmap_read(mdio_dev->subctrl_vbase, st_reg, &reg_value);
369 ++ ret = regmap_read(mdio_dev->subctrl_vbase, st_reg, &reg_value);
370 ++ if (ret)
371 ++ return ret;
372 ++
373 + reg_value &= st_msk;
374 + if ((!!check_st) == (!!reg_value))
375 + break;
376 +diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
377 +index 60b26f32d31d..2008c6a02b8a 100644
378 +--- a/drivers/net/xen-netback/interface.c
379 ++++ b/drivers/net/xen-netback/interface.c
380 +@@ -620,7 +620,6 @@ err_tx_unbind:
381 + err_unmap:
382 + xenvif_unmap_frontend_rings(queue);
383 + err:
384 +- module_put(THIS_MODULE);
385 + return err;
386 + }
387 +
388 +diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
389 +index 82b0c2cc2fd3..b7f65fc54dc2 100644
390 +--- a/drivers/pci/pci.c
391 ++++ b/drivers/pci/pci.c
392 +@@ -703,19 +703,6 @@ void pci_update_current_state(struct pci_dev *dev, pci_power_t state)
393 + }
394 + }
395 +
396 +-/**
397 +- * pci_power_up - Put the given device into D0 forcibly
398 +- * @dev: PCI device to power up
399 +- */
400 +-void pci_power_up(struct pci_dev *dev)
401 +-{
402 +- if (platform_pci_power_manageable(dev))
403 +- platform_pci_set_power_state(dev, PCI_D0);
404 +-
405 +- pci_raw_set_power_state(dev, PCI_D0);
406 +- pci_update_current_state(dev, PCI_D0);
407 +-}
408 +-
409 + /**
410 + * pci_platform_power_transition - Use platform to change device power state
411 + * @dev: PCI device to handle.
412 +@@ -891,6 +878,17 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
413 + }
414 + EXPORT_SYMBOL(pci_set_power_state);
415 +
416 ++/**
417 ++ * pci_power_up - Put the given device into D0 forcibly
418 ++ * @dev: PCI device to power up
419 ++ */
420 ++void pci_power_up(struct pci_dev *dev)
421 ++{
422 ++ __pci_start_power_transition(dev, PCI_D0);
423 ++ pci_raw_set_power_state(dev, PCI_D0);
424 ++ pci_update_current_state(dev, PCI_D0);
425 ++}
426 ++
427 + /**
428 + * pci_choose_state - Choose the power state of a PCI device
429 + * @dev: PCI device to be suspended
430 +diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
431 +index 1964391db904..a3aaef4c53a3 100644
432 +--- a/drivers/s390/scsi/zfcp_fsf.c
433 ++++ b/drivers/s390/scsi/zfcp_fsf.c
434 +@@ -20,6 +20,11 @@
435 +
436 + struct kmem_cache *zfcp_fsf_qtcb_cache;
437 +
438 ++static bool ber_stop = true;
439 ++module_param(ber_stop, bool, 0600);
440 ++MODULE_PARM_DESC(ber_stop,
441 ++ "Shuts down FCP devices for FCP channels that report a bit-error count in excess of its threshold (default on)");
442 ++
443 + static void zfcp_fsf_request_timeout_handler(unsigned long data)
444 + {
445 + struct zfcp_adapter *adapter = (struct zfcp_adapter *) data;
446 +@@ -231,10 +236,15 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req)
447 + case FSF_STATUS_READ_SENSE_DATA_AVAIL:
448 + break;
449 + case FSF_STATUS_READ_BIT_ERROR_THRESHOLD:
450 +- dev_warn(&adapter->ccw_device->dev,
451 +- "The error threshold for checksum statistics "
452 +- "has been exceeded\n");
453 + zfcp_dbf_hba_bit_err("fssrh_3", req);
454 ++ if (ber_stop) {
455 ++ dev_warn(&adapter->ccw_device->dev,
456 ++ "All paths over this FCP device are disused because of excessive bit errors\n");
457 ++ zfcp_erp_adapter_shutdown(adapter, 0, "fssrh_b");
458 ++ } else {
459 ++ dev_warn(&adapter->ccw_device->dev,
460 ++ "The error threshold for checksum statistics has been exceeded\n");
461 ++ }
462 + break;
463 + case FSF_STATUS_READ_LINK_DOWN:
464 + zfcp_fsf_status_read_link_down(req);
465 +diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
466 +index 19bffe0b2cc0..2cbfec6a7466 100644
467 +--- a/drivers/scsi/megaraid.c
468 ++++ b/drivers/scsi/megaraid.c
469 +@@ -4219,11 +4219,11 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
470 + */
471 + if (pdev->subsystem_vendor == PCI_VENDOR_ID_COMPAQ &&
472 + pdev->subsystem_device == 0xC000)
473 +- return -ENODEV;
474 ++ goto out_disable_device;
475 + /* Now check the magic signature byte */
476 + pci_read_config_word(pdev, PCI_CONF_AMISIG, &magic);
477 + if (magic != HBA_SIGNATURE_471 && magic != HBA_SIGNATURE)
478 +- return -ENODEV;
479 ++ goto out_disable_device;
480 + /* Ok it is probably a megaraid */
481 + }
482 +
483 +diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
484 +index 824e27eec7a1..6c4f54aa60df 100644
485 +--- a/drivers/scsi/qla2xxx/qla_target.c
486 ++++ b/drivers/scsi/qla2xxx/qla_target.c
487 +@@ -437,6 +437,7 @@ static void qlt_free_session_done(struct work_struct *work)
488 +
489 + if (logout_started) {
490 + bool traced = false;
491 ++ u16 cnt = 0;
492 +
493 + while (!ACCESS_ONCE(sess->logout_completed)) {
494 + if (!traced) {
495 +@@ -446,6 +447,9 @@ static void qlt_free_session_done(struct work_struct *work)
496 + traced = true;
497 + }
498 + msleep(100);
499 ++ cnt++;
500 ++ if (cnt > 200)
501 ++ break;
502 + }
503 +
504 + ql_dbg(ql_dbg_tgt_mgt, vha, 0xf087,
505 +diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
506 +index 085e470d1c49..b89af3841e44 100644
507 +--- a/drivers/scsi/scsi_sysfs.c
508 ++++ b/drivers/scsi/scsi_sysfs.c
509 +@@ -679,6 +679,14 @@ sdev_store_delete(struct device *dev, struct device_attribute *attr,
510 + const char *buf, size_t count)
511 + {
512 + struct kernfs_node *kn;
513 ++ struct scsi_device *sdev = to_scsi_device(dev);
514 ++
515 ++ /*
516 ++ * We need to try to get module, avoiding the module been removed
517 ++ * during delete.
518 ++ */
519 ++ if (scsi_device_get(sdev))
520 ++ return -ENODEV;
521 +
522 + kn = sysfs_break_active_protection(&dev->kobj, &attr->attr);
523 + WARN_ON_ONCE(!kn);
524 +@@ -693,9 +701,10 @@ sdev_store_delete(struct device *dev, struct device_attribute *attr,
525 + * state into SDEV_DEL.
526 + */
527 + device_remove_file(dev, attr);
528 +- scsi_remove_device(to_scsi_device(dev));
529 ++ scsi_remove_device(sdev);
530 + if (kn)
531 + sysfs_unbreak_active_protection(kn);
532 ++ scsi_device_put(sdev);
533 + return count;
534 + };
535 + static DEVICE_ATTR(delete, S_IWUSR, NULL, sdev_store_delete);
536 +diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
537 +index fd8bbd2b5d0e..504d36796152 100644
538 +--- a/drivers/scsi/ufs/ufshcd.c
539 ++++ b/drivers/scsi/ufs/ufshcd.c
540 +@@ -5371,6 +5371,9 @@ int ufshcd_shutdown(struct ufs_hba *hba)
541 + {
542 + int ret = 0;
543 +
544 ++ if (!hba->is_powered)
545 ++ goto out;
546 ++
547 + if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba))
548 + goto out;
549 +
550 +diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
551 +index 0669fbb0ec25..07c3c3449147 100644
552 +--- a/drivers/usb/class/usblp.c
553 ++++ b/drivers/usb/class/usblp.c
554 +@@ -458,6 +458,7 @@ static void usblp_cleanup(struct usblp *usblp)
555 + kfree(usblp->readbuf);
556 + kfree(usblp->device_id_string);
557 + kfree(usblp->statusbuf);
558 ++ usb_put_intf(usblp->intf);
559 + kfree(usblp);
560 + }
561 +
562 +@@ -1120,7 +1121,7 @@ static int usblp_probe(struct usb_interface *intf,
563 + init_waitqueue_head(&usblp->wwait);
564 + init_usb_anchor(&usblp->urbs);
565 + usblp->ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
566 +- usblp->intf = intf;
567 ++ usblp->intf = usb_get_intf(intf);
568 +
569 + /* Malloc device ID string buffer to the largest expected length,
570 + * since we can re-query it on an ioctl and a dynamic string
571 +@@ -1209,6 +1210,7 @@ abort:
572 + kfree(usblp->readbuf);
573 + kfree(usblp->statusbuf);
574 + kfree(usblp->device_id_string);
575 ++ usb_put_intf(usblp->intf);
576 + kfree(usblp);
577 + abort_ret:
578 + return retval;
579 +diff --git a/drivers/usb/gadget/udc/lpc32xx_udc.c b/drivers/usb/gadget/udc/lpc32xx_udc.c
580 +index 90d24f62bd81..ea43cb74a6f2 100644
581 +--- a/drivers/usb/gadget/udc/lpc32xx_udc.c
582 ++++ b/drivers/usb/gadget/udc/lpc32xx_udc.c
583 +@@ -1225,11 +1225,11 @@ static void udc_pop_fifo(struct lpc32xx_udc *udc, u8 *data, u32 bytes)
584 + tmp = readl(USBD_RXDATA(udc->udp_baseaddr));
585 +
586 + bl = bytes - n;
587 +- if (bl > 3)
588 +- bl = 3;
589 ++ if (bl > 4)
590 ++ bl = 4;
591 +
592 + for (i = 0; i < bl; i++)
593 +- data[n + i] = (u8) ((tmp >> (n * 8)) & 0xFF);
594 ++ data[n + i] = (u8) ((tmp >> (i * 8)) & 0xFF);
595 + }
596 + break;
597 +
598 +diff --git a/drivers/usb/misc/ldusb.c b/drivers/usb/misc/ldusb.c
599 +index 84f12c1bf9e6..7da242bbe37b 100644
600 +--- a/drivers/usb/misc/ldusb.c
601 ++++ b/drivers/usb/misc/ldusb.c
602 +@@ -384,10 +384,7 @@ static int ld_usb_release(struct inode *inode, struct file *file)
603 + goto exit;
604 + }
605 +
606 +- if (mutex_lock_interruptible(&dev->mutex)) {
607 +- retval = -ERESTARTSYS;
608 +- goto exit;
609 +- }
610 ++ mutex_lock(&dev->mutex);
611 +
612 + if (dev->open_count != 1) {
613 + retval = -ENODEV;
614 +@@ -471,7 +468,7 @@ static ssize_t ld_usb_read(struct file *file, char __user *buffer, size_t count,
615 +
616 + /* wait for data */
617 + spin_lock_irq(&dev->rbsl);
618 +- if (dev->ring_head == dev->ring_tail) {
619 ++ while (dev->ring_head == dev->ring_tail) {
620 + dev->interrupt_in_done = 0;
621 + spin_unlock_irq(&dev->rbsl);
622 + if (file->f_flags & O_NONBLOCK) {
623 +@@ -481,12 +478,17 @@ static ssize_t ld_usb_read(struct file *file, char __user *buffer, size_t count,
624 + retval = wait_event_interruptible(dev->read_wait, dev->interrupt_in_done);
625 + if (retval < 0)
626 + goto unlock_exit;
627 +- } else {
628 +- spin_unlock_irq(&dev->rbsl);
629 ++
630 ++ spin_lock_irq(&dev->rbsl);
631 + }
632 ++ spin_unlock_irq(&dev->rbsl);
633 +
634 + /* actual_buffer contains actual_length + interrupt_in_buffer */
635 + actual_buffer = (size_t*)(dev->ring_buffer + dev->ring_tail*(sizeof(size_t)+dev->interrupt_in_endpoint_size));
636 ++ if (*actual_buffer > dev->interrupt_in_endpoint_size) {
637 ++ retval = -EIO;
638 ++ goto unlock_exit;
639 ++ }
640 + bytes_to_read = min(count, *actual_buffer);
641 + if (bytes_to_read < *actual_buffer)
642 + dev_warn(&dev->intf->dev, "Read buffer overflow, %zd bytes dropped\n",
643 +@@ -706,7 +708,9 @@ static int ld_usb_probe(struct usb_interface *intf, const struct usb_device_id *
644 + dev_warn(&intf->dev, "Interrupt out endpoint not found (using control endpoint instead)\n");
645 +
646 + dev->interrupt_in_endpoint_size = usb_endpoint_maxp(dev->interrupt_in_endpoint);
647 +- dev->ring_buffer = kmalloc(ring_buffer_size*(sizeof(size_t)+dev->interrupt_in_endpoint_size), GFP_KERNEL);
648 ++ dev->ring_buffer = kcalloc(ring_buffer_size,
649 ++ sizeof(size_t) + dev->interrupt_in_endpoint_size,
650 ++ GFP_KERNEL);
651 + if (!dev->ring_buffer) {
652 + dev_err(&intf->dev, "Couldn't allocate ring_buffer\n");
653 + goto error;
654 +diff --git a/drivers/usb/misc/legousbtower.c b/drivers/usb/misc/legousbtower.c
655 +index 20e3d577ae5d..32b41eb07f00 100644
656 +--- a/drivers/usb/misc/legousbtower.c
657 ++++ b/drivers/usb/misc/legousbtower.c
658 +@@ -425,10 +425,7 @@ static int tower_release (struct inode *inode, struct file *file)
659 + goto exit;
660 + }
661 +
662 +- if (mutex_lock_interruptible(&dev->lock)) {
663 +- retval = -ERESTARTSYS;
664 +- goto exit;
665 +- }
666 ++ mutex_lock(&dev->lock);
667 +
668 + if (dev->open_count != 1) {
669 + dev_dbg(&dev->udev->dev, "%s: device not opened exactly once\n",
670 +diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
671 +index fe7f5ace6064..a33acb8c16d3 100644
672 +--- a/drivers/usb/serial/ti_usb_3410_5052.c
673 ++++ b/drivers/usb/serial/ti_usb_3410_5052.c
674 +@@ -542,7 +542,6 @@ static void ti_close(struct usb_serial_port *port)
675 + struct ti_port *tport;
676 + int port_number;
677 + int status;
678 +- int do_unlock;
679 + unsigned long flags;
680 +
681 + tdev = usb_get_serial_data(port->serial);
682 +@@ -569,16 +568,13 @@ static void ti_close(struct usb_serial_port *port)
683 + "%s - cannot send close port command, %d\n"
684 + , __func__, status);
685 +
686 +- /* if mutex_lock is interrupted, continue anyway */
687 +- do_unlock = !mutex_lock_interruptible(&tdev->td_open_close_lock);
688 ++ mutex_lock(&tdev->td_open_close_lock);
689 + --tport->tp_tdev->td_open_port_count;
690 +- if (tport->tp_tdev->td_open_port_count <= 0) {
691 ++ if (tport->tp_tdev->td_open_port_count == 0) {
692 + /* last port is closed, shut down interrupt urb */
693 + usb_kill_urb(port->serial->port[0]->interrupt_in_urb);
694 +- tport->tp_tdev->td_open_port_count = 0;
695 + }
696 +- if (do_unlock)
697 +- mutex_unlock(&tdev->td_open_close_lock);
698 ++ mutex_unlock(&tdev->td_open_close_lock);
699 + }
700 +
701 +
702 +diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
703 +index 4c316ca3ee78..34ffc125763f 100644
704 +--- a/fs/btrfs/extent-tree.c
705 ++++ b/fs/btrfs/extent-tree.c
706 +@@ -9905,6 +9905,7 @@ int btrfs_read_block_groups(struct btrfs_root *root)
707 + btrfs_err(info,
708 + "bg %llu is a mixed block group but filesystem hasn't enabled mixed block groups",
709 + cache->key.objectid);
710 ++ btrfs_put_block_group(cache);
711 + ret = -EINVAL;
712 + goto error;
713 + }
714 +diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
715 +index f7a9adab0b84..6f5d78b172ba 100644
716 +--- a/fs/cifs/smb1ops.c
717 ++++ b/fs/cifs/smb1ops.c
718 +@@ -180,6 +180,9 @@ cifs_get_next_mid(struct TCP_Server_Info *server)
719 + /* we do not want to loop forever */
720 + last_mid = cur_mid;
721 + cur_mid++;
722 ++ /* avoid 0xFFFF MID */
723 ++ if (cur_mid == 0xffff)
724 ++ cur_mid++;
725 +
726 + /*
727 + * This nested loop looks more expensive than it is.
728 +diff --git a/mm/shmem.c b/mm/shmem.c
729 +index f11aec40f2e1..62668379623b 100644
730 +--- a/mm/shmem.c
731 ++++ b/mm/shmem.c
732 +@@ -1854,11 +1854,12 @@ static void shmem_tag_pins(struct address_space *mapping)
733 + void **slot;
734 + pgoff_t start;
735 + struct page *page;
736 ++ unsigned int tagged = 0;
737 +
738 + lru_add_drain();
739 + start = 0;
740 +- rcu_read_lock();
741 +
742 ++ spin_lock_irq(&mapping->tree_lock);
743 + restart:
744 + radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) {
745 + page = radix_tree_deref_slot(slot);
746 +@@ -1866,19 +1867,20 @@ restart:
747 + if (radix_tree_deref_retry(page))
748 + goto restart;
749 + } else if (page_count(page) - page_mapcount(page) > 1) {
750 +- spin_lock_irq(&mapping->tree_lock);
751 + radix_tree_tag_set(&mapping->page_tree, iter.index,
752 + SHMEM_TAG_PINNED);
753 +- spin_unlock_irq(&mapping->tree_lock);
754 + }
755 +
756 +- if (need_resched()) {
757 +- cond_resched_rcu();
758 +- start = iter.index + 1;
759 +- goto restart;
760 +- }
761 ++ if (++tagged % 1024)
762 ++ continue;
763 ++
764 ++ spin_unlock_irq(&mapping->tree_lock);
765 ++ cond_resched();
766 ++ start = iter.index + 1;
767 ++ spin_lock_irq(&mapping->tree_lock);
768 ++ goto restart;
769 + }
770 +- rcu_read_unlock();
771 ++ spin_unlock_irq(&mapping->tree_lock);
772 + }
773 +
774 + /*
775 +diff --git a/mm/slub.c b/mm/slub.c
776 +index c33b0e13cca7..8f5dcb0ac24f 100644
777 +--- a/mm/slub.c
778 ++++ b/mm/slub.c
779 +@@ -4522,7 +4522,17 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
780 + }
781 + }
782 +
783 +- get_online_mems();
784 ++ /*
785 ++ * It is impossible to take "mem_hotplug_lock" here with "kernfs_mutex"
786 ++ * already held which will conflict with an existing lock order:
787 ++ *
788 ++ * mem_hotplug_lock->slab_mutex->kernfs_mutex
789 ++ *
790 ++ * We don't really need mem_hotplug_lock (to hold off
791 ++ * slab_mem_going_offline_callback) here because slab's memory hot
792 ++ * unplug code doesn't destroy the kmem_cache->node[] data.
793 ++ */
794 ++
795 + #ifdef CONFIG_SLUB_DEBUG
796 + if (flags & SO_ALL) {
797 + struct kmem_cache_node *n;
798 +@@ -4563,7 +4573,6 @@ static ssize_t show_slab_objects(struct kmem_cache *s,
799 + x += sprintf(buf + x, " N%d=%lu",
800 + node, nodes[node]);
801 + #endif
802 +- put_online_mems();
803 + kfree(nodes);
804 + return x + sprintf(buf + x, "\n");
805 + }
806 +diff --git a/net/ipv4/route.c b/net/ipv4/route.c
807 +index a60078de1191..42132ac2c497 100644
808 +--- a/net/ipv4/route.c
809 ++++ b/net/ipv4/route.c
810 +@@ -2209,7 +2209,7 @@ struct rtable *__ip_route_output_key_hash(struct net *net, struct flowi4 *fl4,
811 + struct fib_result res;
812 + struct rtable *rth;
813 + int orig_oif;
814 +- int err = -ENETUNREACH;
815 ++ int err;
816 +
817 + res.tclassid = 0;
818 + res.fi = NULL;
819 +@@ -2224,11 +2224,14 @@ struct rtable *__ip_route_output_key_hash(struct net *net, struct flowi4 *fl4,
820 +
821 + rcu_read_lock();
822 + if (fl4->saddr) {
823 +- rth = ERR_PTR(-EINVAL);
824 + if (ipv4_is_multicast(fl4->saddr) ||
825 + ipv4_is_lbcast(fl4->saddr) ||
826 +- ipv4_is_zeronet(fl4->saddr))
827 ++ ipv4_is_zeronet(fl4->saddr)) {
828 ++ rth = ERR_PTR(-EINVAL);
829 + goto out;
830 ++ }
831 ++
832 ++ rth = ERR_PTR(-ENETUNREACH);
833 +
834 + /* I removed check for oif == dev_out->oif here.
835 + It was wrong for two reasons:
836 +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
837 +index 24eec3cb922d..031fbfd36d58 100644
838 +--- a/net/mac80211/mlme.c
839 ++++ b/net/mac80211/mlme.c
840 +@@ -2431,7 +2431,8 @@ struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,
841 +
842 + rcu_read_lock();
843 + ssid = ieee80211_bss_get_ie(cbss, WLAN_EID_SSID);
844 +- if (WARN_ON_ONCE(ssid == NULL))
845 ++ if (WARN_ONCE(!ssid || ssid[1] > IEEE80211_MAX_SSID_LEN,
846 ++ "invalid SSID element (len=%d)", ssid ? ssid[1] : -1))
847 + ssid_len = 0;
848 + else
849 + ssid_len = ssid[1];
850 +@@ -4669,7 +4670,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
851 +
852 + rcu_read_lock();
853 + ssidie = ieee80211_bss_get_ie(req->bss, WLAN_EID_SSID);
854 +- if (!ssidie) {
855 ++ if (!ssidie || ssidie[1] > sizeof(assoc_data->ssid)) {
856 + rcu_read_unlock();
857 + kfree(assoc_data);
858 + return -EINVAL;
859 +diff --git a/net/sched/act_api.c b/net/sched/act_api.c
860 +index f44fea22d69c..b3a165cb63ee 100644
861 +--- a/net/sched/act_api.c
862 ++++ b/net/sched/act_api.c
863 +@@ -946,10 +946,15 @@ static int
864 + tcf_action_add(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
865 + u32 portid, int ovr)
866 + {
867 +- int ret = 0;
868 ++ int loop, ret;
869 + LIST_HEAD(actions);
870 +
871 +- ret = tcf_action_init(net, nla, NULL, NULL, ovr, 0, &actions);
872 ++ for (loop = 0; loop < 10; loop++) {
873 ++ ret = tcf_action_init(net, nla, NULL, NULL, ovr, 0, &actions);
874 ++ if (ret != -EAGAIN)
875 ++ break;
876 ++ }
877 ++
878 + if (ret)
879 + goto done;
880 +
881 +@@ -992,10 +997,7 @@ static int tc_ctl_action(struct sk_buff *skb, struct nlmsghdr *n)
882 + */
883 + if (n->nlmsg_flags & NLM_F_REPLACE)
884 + ovr = 1;
885 +-replay:
886 + ret = tcf_action_add(net, tca[TCA_ACT_TAB], n, portid, ovr);
887 +- if (ret == -EAGAIN)
888 +- goto replay;
889 + break;
890 + case RTM_DELACTION:
891 + ret = tca_action_gd(net, tca[TCA_ACT_TAB], n,
892 +diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c
893 +index 4fbb67430ce4..4d745a2efd20 100644
894 +--- a/net/sched/cls_u32.c
895 ++++ b/net/sched/cls_u32.c
896 +@@ -734,6 +734,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb,
897 + struct nlattr *opt = tca[TCA_OPTIONS];
898 + struct nlattr *tb[TCA_U32_MAX + 1];
899 + u32 htid;
900 ++ size_t sel_size;
901 + int err;
902 + #ifdef CONFIG_CLS_U32_PERF
903 + size_t size;
904 +@@ -827,8 +828,11 @@ static int u32_change(struct net *net, struct sk_buff *in_skb,
905 + return -EINVAL;
906 +
907 + s = nla_data(tb[TCA_U32_SEL]);
908 ++ sel_size = sizeof(*s) + sizeof(*s->keys) * s->nkeys;
909 ++ if (nla_len(tb[TCA_U32_SEL]) < sel_size)
910 ++ return -EINVAL;
911 +
912 +- n = kzalloc(sizeof(*n) + s->nkeys*sizeof(struct tc_u32_key), GFP_KERNEL);
913 ++ n = kzalloc(offsetof(typeof(*n), sel) + sel_size, GFP_KERNEL);
914 + if (n == NULL)
915 + return -ENOBUFS;
916 +
917 +@@ -841,7 +845,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb,
918 + }
919 + #endif
920 +
921 +- memcpy(&n->sel, s, sizeof(*s) + s->nkeys*sizeof(struct tc_u32_key));
922 ++ memcpy(&n->sel, s, sel_size);
923 + RCU_INIT_POINTER(n->ht_up, ht);
924 + n->handle = handle;
925 + n->fshift = s->hmask ? ffs(ntohl(s->hmask)) - 1 : 0;
926 +diff --git a/net/sctp/socket.c b/net/sctp/socket.c
927 +index 53f1b33bca4e..191fd251e8a0 100644
928 +--- a/net/sctp/socket.c
929 ++++ b/net/sctp/socket.c
930 +@@ -7443,7 +7443,7 @@ struct proto sctp_prot = {
931 + .backlog_rcv = sctp_backlog_rcv,
932 + .hash = sctp_hash,
933 + .unhash = sctp_unhash,
934 +- .get_port = sctp_get_port,
935 ++ .no_autobind = true,
936 + .obj_size = sizeof(struct sctp_sock),
937 + .sysctl_mem = sysctl_sctp_mem,
938 + .sysctl_rmem = sysctl_sctp_rmem,
939 +@@ -7482,7 +7482,7 @@ struct proto sctpv6_prot = {
940 + .backlog_rcv = sctp_backlog_rcv,
941 + .hash = sctp_hash,
942 + .unhash = sctp_unhash,
943 +- .get_port = sctp_get_port,
944 ++ .no_autobind = true,
945 + .obj_size = sizeof(struct sctp6_sock),
946 + .sysctl_mem = sysctl_sctp_mem,
947 + .sysctl_rmem = sysctl_sctp_rmem,
948 +diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
949 +index 95c8e682b491..2023802b6c77 100644
950 +--- a/net/wireless/nl80211.c
951 ++++ b/net/wireless/nl80211.c
952 +@@ -4816,6 +4816,9 @@ static int nl80211_del_mpath(struct sk_buff *skb, struct genl_info *info)
953 + if (!rdev->ops->del_mpath)
954 + return -EOPNOTSUPP;
955 +
956 ++ if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
957 ++ return -EOPNOTSUPP;
958 ++
959 + return rdev_del_mpath(rdev, dev, dst);
960 + }
961 +
962 +diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c
963 +index a4e8af3321d2..98ff9d9e1aa9 100644
964 +--- a/net/wireless/wext-sme.c
965 ++++ b/net/wireless/wext-sme.c
966 +@@ -225,6 +225,7 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev,
967 + struct iw_point *data, char *ssid)
968 + {
969 + struct wireless_dev *wdev = dev->ieee80211_ptr;
970 ++ int ret = 0;
971 +
972 + /* call only for station! */
973 + if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION))
974 +@@ -242,7 +243,10 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev,
975 + if (ie) {
976 + data->flags = 1;
977 + data->length = ie[1];
978 +- memcpy(ssid, ie + 2, data->length);
979 ++ if (data->length > IW_ESSID_MAX_SIZE)
980 ++ ret = -EINVAL;
981 ++ else
982 ++ memcpy(ssid, ie + 2, data->length);
983 + }
984 + rcu_read_unlock();
985 + } else if (wdev->wext.connect.ssid && wdev->wext.connect.ssid_len) {
986 +@@ -252,7 +256,7 @@ int cfg80211_mgd_wext_giwessid(struct net_device *dev,
987 + }
988 + wdev_unlock(wdev);
989 +
990 +- return 0;
991 ++ return ret;
992 + }
993 +
994 + int cfg80211_mgd_wext_siwap(struct net_device *dev,
995 +diff --git a/scripts/namespace.pl b/scripts/namespace.pl
996 +index a71be6b7cdec..9a2a32ce8a3b 100755
997 +--- a/scripts/namespace.pl
998 ++++ b/scripts/namespace.pl
999 +@@ -65,13 +65,14 @@
1000 + require 5; # at least perl 5
1001 + use strict;
1002 + use File::Find;
1003 ++use File::Spec;
1004 +
1005 + my $nm = ($ENV{'NM'} || "nm") . " -p";
1006 + my $objdump = ($ENV{'OBJDUMP'} || "objdump") . " -s -j .comment";
1007 +-my $srctree = "";
1008 +-my $objtree = "";
1009 +-$srctree = "$ENV{'srctree'}/" if (exists($ENV{'srctree'}));
1010 +-$objtree = "$ENV{'objtree'}/" if (exists($ENV{'objtree'}));
1011 ++my $srctree = File::Spec->curdir();
1012 ++my $objtree = File::Spec->curdir();
1013 ++$srctree = File::Spec->rel2abs($ENV{'srctree'}) if (exists($ENV{'srctree'}));
1014 ++$objtree = File::Spec->rel2abs($ENV{'objtree'}) if (exists($ENV{'objtree'}));
1015 +
1016 + if ($#ARGV != -1) {
1017 + print STDERR "usage: $0 takes no parameters\n";
1018 +@@ -229,9 +230,9 @@ sub do_nm
1019 + }
1020 + ($source = $basename) =~ s/\.o$//;
1021 + if (-e "$source.c" || -e "$source.S") {
1022 +- $source = "$objtree$File::Find::dir/$source";
1023 ++ $source = File::Spec->catfile($objtree, $File::Find::dir, $source)
1024 + } else {
1025 +- $source = "$srctree$File::Find::dir/$source";
1026 ++ $source = File::Spec->catfile($srctree, $File::Find::dir, $source)
1027 + }
1028 + if (! -e "$source.c" && ! -e "$source.S") {
1029 + # No obvious source, exclude the object if it is conglomerate
1030 +diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
1031 +index e00dfbec22c5..f18485c6a5d8 100644
1032 +--- a/sound/soc/sh/rcar/core.c
1033 ++++ b/sound/soc/sh/rcar/core.c
1034 +@@ -524,6 +524,7 @@ static int rsnd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
1035 + }
1036 +
1037 + /* set format */
1038 ++ rdai->bit_clk_inv = 0;
1039 + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
1040 + case SND_SOC_DAIFMT_I2S:
1041 + rdai->sys_delay = 0;