Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0157-4.9.58-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3608 - (show annotations) (download)
Fri Aug 14 07:34:29 2020 UTC (3 years, 8 months ago) by niro
File size: 51106 byte(s)
-added kerenl-alx-legacy pkg
1 diff --git a/Makefile b/Makefile
2 index d5a2ab9b3291..32686667bb7e 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 4
7 PATCHLEVEL = 9
8 -SUBLEVEL = 57
9 +SUBLEVEL = 58
10 EXTRAVERSION =
11 NAME = Roaring Lionus
12
13 diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h
14 index ddd1c918103b..c5d351786416 100644
15 --- a/arch/mips/include/asm/irq.h
16 +++ b/arch/mips/include/asm/irq.h
17 @@ -18,7 +18,7 @@
18 #include <irq.h>
19
20 #define IRQ_STACK_SIZE THREAD_SIZE
21 -#define IRQ_STACK_START (IRQ_STACK_SIZE - sizeof(unsigned long))
22 +#define IRQ_STACK_START (IRQ_STACK_SIZE - 16)
23
24 extern void *irq_stack[NR_CPUS];
25
26 diff --git a/arch/powerpc/perf/isa207-common.h b/arch/powerpc/perf/isa207-common.h
27 index 4d0a4e5017c2..8e6dd17fe603 100644
28 --- a/arch/powerpc/perf/isa207-common.h
29 +++ b/arch/powerpc/perf/isa207-common.h
30 @@ -201,6 +201,10 @@
31 CNST_PMC_VAL(1) | CNST_PMC_VAL(2) | CNST_PMC_VAL(3) | \
32 CNST_PMC_VAL(4) | CNST_PMC_VAL(5) | CNST_PMC_VAL(6) | CNST_NC_VAL
33
34 +/*
35 + * Lets restrict use of PMC5 for instruction counting.
36 + */
37 +#define P9_DD1_TEST_ADDER (ISA207_TEST_ADDER | CNST_PMC_VAL(5))
38
39 /* Bits in MMCR1 for PowerISA v2.07 */
40 #define MMCR1_UNIT_SHIFT(pmc) (60 - (4 * ((pmc) - 1)))
41 diff --git a/arch/powerpc/perf/power9-pmu.c b/arch/powerpc/perf/power9-pmu.c
42 index 8e9a81967ff8..9abcd8f65504 100644
43 --- a/arch/powerpc/perf/power9-pmu.c
44 +++ b/arch/powerpc/perf/power9-pmu.c
45 @@ -295,7 +295,7 @@ static struct power_pmu power9_pmu = {
46 .name = "POWER9",
47 .n_counter = MAX_PMU_COUNTERS,
48 .add_fields = ISA207_ADD_FIELDS,
49 - .test_adder = ISA207_TEST_ADDER,
50 + .test_adder = P9_DD1_TEST_ADDER,
51 .compute_mmcr = isa207_compute_mmcr,
52 .config_bhrb = power9_config_bhrb,
53 .bhrb_filter_map = power9_bhrb_filter_map,
54 diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h
55 index be0cc1beed41..3fae200dd251 100644
56 --- a/arch/sparc/include/asm/setup.h
57 +++ b/arch/sparc/include/asm/setup.h
58 @@ -59,8 +59,11 @@ extern atomic_t dcpage_flushes;
59 extern atomic_t dcpage_flushes_xcall;
60
61 extern int sysctl_tsb_ratio;
62 -#endif
63
64 +#ifdef CONFIG_SERIAL_SUNHV
65 +void sunhv_migrate_hvcons_irq(int cpu);
66 +#endif
67 +#endif
68 void sun_do_break(void);
69 extern int stop_a_enabled;
70 extern int scons_pwroff;
71 diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c
72 index 2deb89ef1d5f..ca7cb8e57ab0 100644
73 --- a/arch/sparc/kernel/smp_64.c
74 +++ b/arch/sparc/kernel/smp_64.c
75 @@ -1465,8 +1465,12 @@ void smp_send_stop(void)
76 int cpu;
77
78 if (tlb_type == hypervisor) {
79 + int this_cpu = smp_processor_id();
80 +#ifdef CONFIG_SERIAL_SUNHV
81 + sunhv_migrate_hvcons_irq(this_cpu);
82 +#endif
83 for_each_online_cpu(cpu) {
84 - if (cpu == smp_processor_id())
85 + if (cpu == this_cpu)
86 continue;
87 #ifdef CONFIG_SUN_LDOMS
88 if (ldom_domaining_enabled) {
89 diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
90 index 9a324fc8bed8..3e27ded6ac65 100644
91 --- a/arch/x86/mm/init_64.c
92 +++ b/arch/x86/mm/init_64.c
93 @@ -689,7 +689,7 @@ static void __meminit free_pagetable(struct page *page, int order)
94 if (PageReserved(page)) {
95 __ClearPageReserved(page);
96
97 - magic = (unsigned long)page->lru.next;
98 + magic = (unsigned long)page->freelist;
99 if (magic == SECTION_INFO || magic == MIX_SECTION_INFO) {
100 while (nr_pages--)
101 put_page_bootmem(page++);
102 diff --git a/block/bsg-lib.c b/block/bsg-lib.c
103 index 341b8d858e67..650f427d915b 100644
104 --- a/block/bsg-lib.c
105 +++ b/block/bsg-lib.c
106 @@ -147,6 +147,7 @@ static int bsg_create_job(struct device *dev, struct request *req)
107 failjob_rls_rqst_payload:
108 kfree(job->request_payload.sg_list);
109 failjob_rls_job:
110 + kfree(job);
111 return -ENOMEM;
112 }
113
114 diff --git a/crypto/Kconfig b/crypto/Kconfig
115 index 84d71482bf08..fa98ad7edb60 100644
116 --- a/crypto/Kconfig
117 +++ b/crypto/Kconfig
118 @@ -360,6 +360,7 @@ config CRYPTO_XTS
119 select CRYPTO_BLKCIPHER
120 select CRYPTO_MANAGER
121 select CRYPTO_GF128MUL
122 + select CRYPTO_ECB
123 help
124 XTS: IEEE1619/D16 narrow block cipher use with aes-xts-plain,
125 key size 256, 384 or 512 bits. This implementation currently
126 diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c
127 index d02f2c14df32..c738baeb6d45 100644
128 --- a/drivers/bluetooth/btmrvl_sdio.c
129 +++ b/drivers/bluetooth/btmrvl_sdio.c
130 @@ -1682,8 +1682,12 @@ static int btmrvl_sdio_resume(struct device *dev)
131 /* Disable platform specific wakeup interrupt */
132 if (card->plt_wake_cfg && card->plt_wake_cfg->irq_bt >= 0) {
133 disable_irq_wake(card->plt_wake_cfg->irq_bt);
134 - if (!card->plt_wake_cfg->wake_by_bt)
135 - disable_irq(card->plt_wake_cfg->irq_bt);
136 + disable_irq(card->plt_wake_cfg->irq_bt);
137 + if (card->plt_wake_cfg->wake_by_bt)
138 + /* Undo our disable, since interrupt handler already
139 + * did this.
140 + */
141 + enable_irq(card->plt_wake_cfg->irq_bt);
142 }
143
144 return 0;
145 diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
146 index d89b8afe23b6..bc3917d6015a 100644
147 --- a/drivers/cpufreq/Kconfig.arm
148 +++ b/drivers/cpufreq/Kconfig.arm
149 @@ -244,7 +244,7 @@ config ARM_PXA2xx_CPUFREQ
150
151 config ACPI_CPPC_CPUFREQ
152 tristate "CPUFreq driver based on the ACPI CPPC spec"
153 - depends on ACPI
154 + depends on ACPI_PROCESSOR
155 select ACPI_CPPC_LIB
156 default n
157 help
158 diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c
159 index daaac2c79ca7..7db692ed3dea 100644
160 --- a/drivers/edac/mce_amd.c
161 +++ b/drivers/edac/mce_amd.c
162 @@ -981,20 +981,19 @@ int amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
163 pr_cont("]: 0x%016llx\n", m->status);
164
165 if (m->status & MCI_STATUS_ADDRV)
166 - pr_emerg(HW_ERR "Error Addr: 0x%016llx", m->addr);
167 + pr_emerg(HW_ERR "Error Addr: 0x%016llx\n", m->addr);
168
169 if (boot_cpu_has(X86_FEATURE_SMCA)) {
170 + pr_emerg(HW_ERR "IPID: 0x%016llx", m->ipid);
171 +
172 if (m->status & MCI_STATUS_SYNDV)
173 pr_cont(", Syndrome: 0x%016llx", m->synd);
174
175 - pr_cont(", IPID: 0x%016llx", m->ipid);
176 -
177 pr_cont("\n");
178
179 decode_smca_errors(m);
180 goto err_code;
181 - } else
182 - pr_cont("\n");
183 + }
184
185 if (!fam_ops)
186 goto err_code;
187 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
188 index 264899df9bfc..05ff98b43c50 100644
189 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
190 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
191 @@ -491,6 +491,9 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
192 case TTM_PL_TT:
193 break;
194 case TTM_PL_VRAM:
195 + if (mem->start == AMDGPU_BO_INVALID_OFFSET)
196 + return -EINVAL;
197 +
198 mem->bus.offset = mem->start << PAGE_SHIFT;
199 /* check if it's visible */
200 if ((mem->bus.offset + mem->bus.size) > adev->mc.visible_vram_size)
201 diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
202 index 6584d505460c..133f89600279 100644
203 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
204 +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
205 @@ -1129,7 +1129,7 @@ gf100_gr_trap_intr(struct gf100_gr *gr)
206 if (trap & 0x00000008) {
207 u32 stat = nvkm_rd32(device, 0x408030);
208
209 - nvkm_snprintbf(error, sizeof(error), gf100_m2mf_error,
210 + nvkm_snprintbf(error, sizeof(error), gf100_ccache_error,
211 stat & 0x3fffffff);
212 nvkm_error(subdev, "CCACHE %08x [%s]\n", stat, error);
213 nvkm_wr32(device, 0x408030, 0xc0000000);
214 diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c
215 index 0b86c6173e07..c925a690cb32 100644
216 --- a/drivers/i2c/busses/i2c-at91.c
217 +++ b/drivers/i2c/busses/i2c-at91.c
218 @@ -1180,6 +1180,7 @@ static int at91_twi_suspend_noirq(struct device *dev)
219
220 static int at91_twi_resume_noirq(struct device *dev)
221 {
222 + struct at91_twi_dev *twi_dev = dev_get_drvdata(dev);
223 int ret;
224
225 if (!pm_runtime_status_suspended(dev)) {
226 @@ -1191,6 +1192,8 @@ static int at91_twi_resume_noirq(struct device *dev)
227 pm_runtime_mark_last_busy(dev);
228 pm_request_autosuspend(dev);
229
230 + at91_init_twi_bus(twi_dev);
231 +
232 return 0;
233 }
234
235 diff --git a/drivers/iio/adc/xilinx-xadc-core.c b/drivers/iio/adc/xilinx-xadc-core.c
236 index 0a6beb3d99cb..56cf5907a5f0 100644
237 --- a/drivers/iio/adc/xilinx-xadc-core.c
238 +++ b/drivers/iio/adc/xilinx-xadc-core.c
239 @@ -1208,7 +1208,7 @@ static int xadc_probe(struct platform_device *pdev)
240
241 ret = xadc->ops->setup(pdev, indio_dev, irq);
242 if (ret)
243 - goto err_free_samplerate_trigger;
244 + goto err_clk_disable_unprepare;
245
246 ret = request_irq(irq, xadc->ops->interrupt_handler, 0,
247 dev_name(&pdev->dev), indio_dev);
248 @@ -1268,6 +1268,8 @@ static int xadc_probe(struct platform_device *pdev)
249
250 err_free_irq:
251 free_irq(irq, indio_dev);
252 +err_clk_disable_unprepare:
253 + clk_disable_unprepare(xadc->clk);
254 err_free_samplerate_trigger:
255 if (xadc->ops->flags & XADC_FLAGS_BUFFERED)
256 iio_trigger_free(xadc->samplerate_trigger);
257 @@ -1277,8 +1279,6 @@ static int xadc_probe(struct platform_device *pdev)
258 err_triggered_buffer_cleanup:
259 if (xadc->ops->flags & XADC_FLAGS_BUFFERED)
260 iio_triggered_buffer_cleanup(indio_dev);
261 -err_clk_disable_unprepare:
262 - clk_disable_unprepare(xadc->clk);
263 err_device_free:
264 kfree(indio_dev->channels);
265
266 diff --git a/drivers/infiniband/hw/hfi1/init.c b/drivers/infiniband/hw/hfi1/init.c
267 index 34cfd341b6d6..a3dd27b1305d 100644
268 --- a/drivers/infiniband/hw/hfi1/init.c
269 +++ b/drivers/infiniband/hw/hfi1/init.c
270 @@ -297,14 +297,15 @@ struct hfi1_ctxtdata *hfi1_create_ctxtdata(struct hfi1_pportdata *ppd, u32 ctxt,
271 * The resulting value will be rounded down to the closest
272 * multiple of dd->rcv_entries.group_size.
273 */
274 - rcd->egrbufs.buffers = kcalloc(rcd->egrbufs.count,
275 - sizeof(*rcd->egrbufs.buffers),
276 - GFP_KERNEL);
277 + rcd->egrbufs.buffers = kzalloc_node(
278 + rcd->egrbufs.count * sizeof(*rcd->egrbufs.buffers),
279 + GFP_KERNEL, numa);
280 if (!rcd->egrbufs.buffers)
281 goto bail;
282 - rcd->egrbufs.rcvtids = kcalloc(rcd->egrbufs.count,
283 - sizeof(*rcd->egrbufs.rcvtids),
284 - GFP_KERNEL);
285 + rcd->egrbufs.rcvtids = kzalloc_node(
286 + rcd->egrbufs.count *
287 + sizeof(*rcd->egrbufs.rcvtids),
288 + GFP_KERNEL, numa);
289 if (!rcd->egrbufs.rcvtids)
290 goto bail;
291 rcd->egrbufs.size = eager_buffer_size;
292 @@ -322,8 +323,8 @@ struct hfi1_ctxtdata *hfi1_create_ctxtdata(struct hfi1_pportdata *ppd, u32 ctxt,
293 rcd->egrbufs.rcvtid_size = HFI1_MAX_EAGER_BUFFER_SIZE;
294
295 if (ctxt < dd->first_user_ctxt) { /* N/A for PSM contexts */
296 - rcd->opstats = kzalloc(sizeof(*rcd->opstats),
297 - GFP_KERNEL);
298 + rcd->opstats = kzalloc_node(sizeof(*rcd->opstats),
299 + GFP_KERNEL, numa);
300 if (!rcd->opstats)
301 goto bail;
302 }
303 diff --git a/drivers/infiniband/hw/hfi1/pcie.c b/drivers/infiniband/hw/hfi1/pcie.c
304 index 4ac8f330c5cb..335613a1a46a 100644
305 --- a/drivers/infiniband/hw/hfi1/pcie.c
306 +++ b/drivers/infiniband/hw/hfi1/pcie.c
307 @@ -673,12 +673,12 @@ MODULE_PARM_DESC(pcie_retry, "Driver will try this many times to reach requested
308
309 #define UNSET_PSET 255
310 #define DEFAULT_DISCRETE_PSET 2 /* discrete HFI */
311 -#define DEFAULT_MCP_PSET 4 /* MCP HFI */
312 +#define DEFAULT_MCP_PSET 6 /* MCP HFI */
313 static uint pcie_pset = UNSET_PSET;
314 module_param(pcie_pset, uint, S_IRUGO);
315 MODULE_PARM_DESC(pcie_pset, "PCIe Eq Pset value to use, range is 0-10");
316
317 -static uint pcie_ctle = 1; /* discrete on, integrated off */
318 +static uint pcie_ctle = 3; /* discrete on, integrated on */
319 module_param(pcie_ctle, uint, S_IRUGO);
320 MODULE_PARM_DESC(pcie_ctle, "PCIe static CTLE mode, bit 0 - discrete on/off, bit 1 - integrated on/off");
321
322 diff --git a/drivers/irqchip/irq-crossbar.c b/drivers/irqchip/irq-crossbar.c
323 index 1eef56a89b1f..05bbf171df37 100644
324 --- a/drivers/irqchip/irq-crossbar.c
325 +++ b/drivers/irqchip/irq-crossbar.c
326 @@ -198,7 +198,8 @@ static const struct irq_domain_ops crossbar_domain_ops = {
327
328 static int __init crossbar_of_init(struct device_node *node)
329 {
330 - int i, size, max = 0, reserved = 0, entry;
331 + int i, size, reserved = 0;
332 + u32 max = 0, entry;
333 const __be32 *irqsr;
334 int ret = -ENOMEM;
335
336 diff --git a/drivers/md/linear.c b/drivers/md/linear.c
337 index b0c0aef92a37..12abf69d568a 100644
338 --- a/drivers/md/linear.c
339 +++ b/drivers/md/linear.c
340 @@ -223,7 +223,8 @@ static int linear_add(struct mddev *mddev, struct md_rdev *rdev)
341 * oldconf until no one uses it anymore.
342 */
343 mddev_suspend(mddev);
344 - oldconf = rcu_dereference(mddev->private);
345 + oldconf = rcu_dereference_protected(mddev->private,
346 + lockdep_is_held(&mddev->reconfig_mutex));
347 mddev->raid_disks++;
348 WARN_ONCE(mddev->raid_disks != newconf->raid_disks,
349 "copied raid_disks doesn't match mddev->raid_disks");
350 diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
351 index 0a4e81a253fb..ed6fae964ec5 100644
352 --- a/drivers/net/ethernet/marvell/mvpp2.c
353 +++ b/drivers/net/ethernet/marvell/mvpp2.c
354 @@ -4413,13 +4413,12 @@ static void mvpp2_txq_bufs_free(struct mvpp2_port *port,
355 struct mvpp2_txq_pcpu_buf *tx_buf =
356 txq_pcpu->buffs + txq_pcpu->txq_get_index;
357
358 - mvpp2_txq_inc_get(txq_pcpu);
359 -
360 dma_unmap_single(port->dev->dev.parent, tx_buf->phys,
361 tx_buf->size, DMA_TO_DEVICE);
362 - if (!tx_buf->skb)
363 - continue;
364 - dev_kfree_skb_any(tx_buf->skb);
365 + if (tx_buf->skb)
366 + dev_kfree_skb_any(tx_buf->skb);
367 +
368 + mvpp2_txq_inc_get(txq_pcpu);
369 }
370 }
371
372 diff --git a/drivers/net/ethernet/mellanox/mlx4/en_clock.c b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
373 index a5fc46bbcbe2..d4d97ca12e83 100644
374 --- a/drivers/net/ethernet/mellanox/mlx4/en_clock.c
375 +++ b/drivers/net/ethernet/mellanox/mlx4/en_clock.c
376 @@ -88,10 +88,17 @@ void mlx4_en_remove_timestamp(struct mlx4_en_dev *mdev)
377 }
378 }
379
380 +#define MLX4_EN_WRAP_AROUND_SEC 10UL
381 +/* By scheduling the overflow check every 5 seconds, we have a reasonably
382 + * good chance we wont miss a wrap around.
383 + * TOTO: Use a timer instead of a work queue to increase the guarantee.
384 + */
385 +#define MLX4_EN_OVERFLOW_PERIOD (MLX4_EN_WRAP_AROUND_SEC * HZ / 2)
386 +
387 void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev)
388 {
389 bool timeout = time_is_before_jiffies(mdev->last_overflow_check +
390 - mdev->overflow_period);
391 + MLX4_EN_OVERFLOW_PERIOD);
392 unsigned long flags;
393
394 if (timeout) {
395 @@ -236,7 +243,6 @@ static const struct ptp_clock_info mlx4_en_ptp_clock_info = {
396 .enable = mlx4_en_phc_enable,
397 };
398
399 -#define MLX4_EN_WRAP_AROUND_SEC 10ULL
400
401 /* This function calculates the max shift that enables the user range
402 * of MLX4_EN_WRAP_AROUND_SEC values in the cycles register.
403 @@ -261,7 +267,6 @@ void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev)
404 {
405 struct mlx4_dev *dev = mdev->dev;
406 unsigned long flags;
407 - u64 ns, zero = 0;
408
409 /* mlx4_en_init_timestamp is called for each netdev.
410 * mdev->ptp_clock is common for all ports, skip initialization if
411 @@ -285,13 +290,6 @@ void mlx4_en_init_timestamp(struct mlx4_en_dev *mdev)
412 ktime_to_ns(ktime_get_real()));
413 write_unlock_irqrestore(&mdev->clock_lock, flags);
414
415 - /* Calculate period in seconds to call the overflow watchdog - to make
416 - * sure counter is checked at least once every wrap around.
417 - */
418 - ns = cyclecounter_cyc2ns(&mdev->cycles, mdev->cycles.mask, zero, &zero);
419 - do_div(ns, NSEC_PER_SEC / 2 / HZ);
420 - mdev->overflow_period = ns;
421 -
422 /* Configure the PHC */
423 mdev->ptp_clock_info = mlx4_en_ptp_clock_info;
424 snprintf(mdev->ptp_clock_info.name, 16, "mlx4 ptp");
425 diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
426 index ba652d8a2b93..727122de7df0 100644
427 --- a/drivers/net/ethernet/mellanox/mlx4/main.c
428 +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
429 @@ -841,8 +841,6 @@ static int mlx4_slave_cap(struct mlx4_dev *dev)
430 return -ENOSYS;
431 }
432
433 - mlx4_log_num_mgm_entry_size = hca_param.log_mc_entry_sz;
434 -
435 dev->caps.hca_core_clock = hca_param.hca_core_clock;
436
437 memset(&dev_cap, 0, sizeof(dev_cap));
438 diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
439 index a3528dd1e72e..df0f39611c5e 100644
440 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
441 +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
442 @@ -419,7 +419,6 @@ struct mlx4_en_dev {
443 struct cyclecounter cycles;
444 struct timecounter clock;
445 unsigned long last_overflow_check;
446 - unsigned long overflow_period;
447 struct ptp_clock *ptp_clock;
448 struct ptp_clock_info ptp_clock_info;
449 struct notifier_block nb;
450 diff --git a/drivers/net/ethernet/qlogic/qed/qed.h b/drivers/net/ethernet/qlogic/qed/qed.h
451 index 653bb5735f0c..433f8be57847 100644
452 --- a/drivers/net/ethernet/qlogic/qed/qed.h
453 +++ b/drivers/net/ethernet/qlogic/qed/qed.h
454 @@ -642,7 +642,9 @@ static inline u8 qed_concrete_to_sw_fid(struct qed_dev *cdev,
455 #define OOO_LB_TC 9
456
457 int qed_configure_vport_wfq(struct qed_dev *cdev, u16 vp_id, u32 rate);
458 -void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate);
459 +void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev,
460 + struct qed_ptt *p_ptt,
461 + u32 min_pf_rate);
462
463 void qed_clean_wfq_db(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
464 #define QED_LEADING_HWFN(dev) (&dev->hwfns[0])
465 diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
466 index edae5fc5fccd..afe5e57d9acb 100644
467 --- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
468 +++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
469 @@ -877,7 +877,7 @@ qed_hw_init_pf_doorbell_bar(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
470 /* Either EDPM is mandatory, or we are attempting to allocate a
471 * WID per CPU.
472 */
473 - n_cpus = num_active_cpus();
474 + n_cpus = num_present_cpus();
475 rc = qed_hw_init_dpi_size(p_hwfn, p_ptt, pwm_regsize, n_cpus);
476 }
477
478 @@ -2732,7 +2732,8 @@ int qed_configure_vport_wfq(struct qed_dev *cdev, u16 vp_id, u32 rate)
479 }
480
481 /* API to configure WFQ from mcp link change */
482 -void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate)
483 +void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev,
484 + struct qed_ptt *p_ptt, u32 min_pf_rate)
485 {
486 int i;
487
488 @@ -2746,8 +2747,7 @@ void qed_configure_vp_wfq_on_link_change(struct qed_dev *cdev, u32 min_pf_rate)
489 for_each_hwfn(cdev, i) {
490 struct qed_hwfn *p_hwfn = &cdev->hwfns[i];
491
492 - __qed_configure_vp_wfq_on_link_change(p_hwfn,
493 - p_hwfn->p_dpc_ptt,
494 + __qed_configure_vp_wfq_on_link_change(p_hwfn, p_ptt,
495 min_pf_rate);
496 }
497 }
498 diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
499 index bdc9ba92f6d4..8b7d2f963ee1 100644
500 --- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c
501 +++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
502 @@ -628,7 +628,8 @@ static void qed_mcp_handle_link_change(struct qed_hwfn *p_hwfn,
503
504 /* Min bandwidth configuration */
505 __qed_configure_pf_min_bandwidth(p_hwfn, p_ptt, p_link, min_bw);
506 - qed_configure_vp_wfq_on_link_change(p_hwfn->cdev, p_link->min_pf_rate);
507 + qed_configure_vp_wfq_on_link_change(p_hwfn->cdev, p_ptt,
508 + p_link->min_pf_rate);
509
510 p_link->an = !!(status & LINK_STATUS_AUTO_NEGOTIATE_ENABLED);
511 p_link->an_complete = !!(status &
512 diff --git a/drivers/net/ethernet/qlogic/qed/qed_roce.c b/drivers/net/ethernet/qlogic/qed/qed_roce.c
513 index f3a825a8f8d5..d9dcb0d1714c 100644
514 --- a/drivers/net/ethernet/qlogic/qed/qed_roce.c
515 +++ b/drivers/net/ethernet/qlogic/qed/qed_roce.c
516 @@ -1766,13 +1766,13 @@ static int qed_roce_query_qp(struct qed_hwfn *p_hwfn,
517 if (rc)
518 goto err_resp;
519
520 - dma_free_coherent(&p_hwfn->cdev->pdev->dev, sizeof(*p_resp_ramrod_res),
521 - p_resp_ramrod_res, resp_ramrod_res_phys);
522 -
523 out_params->rq_psn = le32_to_cpu(p_resp_ramrod_res->psn);
524 rq_err_state = GET_FIELD(le32_to_cpu(p_resp_ramrod_res->err_flag),
525 ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG);
526
527 + dma_free_coherent(&p_hwfn->cdev->pdev->dev, sizeof(*p_resp_ramrod_res),
528 + p_resp_ramrod_res, resp_ramrod_res_phys);
529 +
530 if (!(qp->req_offloaded)) {
531 /* Don't send query qp for the requester */
532 out_params->sq_psn = qp->sq_psn;
533 @@ -1813,9 +1813,6 @@ static int qed_roce_query_qp(struct qed_hwfn *p_hwfn,
534 if (rc)
535 goto err_req;
536
537 - dma_free_coherent(&p_hwfn->cdev->pdev->dev, sizeof(*p_req_ramrod_res),
538 - p_req_ramrod_res, req_ramrod_res_phys);
539 -
540 out_params->sq_psn = le32_to_cpu(p_req_ramrod_res->psn);
541 sq_err_state = GET_FIELD(le32_to_cpu(p_req_ramrod_res->flags),
542 ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG);
543 @@ -1823,6 +1820,9 @@ static int qed_roce_query_qp(struct qed_hwfn *p_hwfn,
544 GET_FIELD(le32_to_cpu(p_req_ramrod_res->flags),
545 ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG);
546
547 + dma_free_coherent(&p_hwfn->cdev->pdev->dev, sizeof(*p_req_ramrod_res),
548 + p_req_ramrod_res, req_ramrod_res_phys);
549 +
550 out_params->draining = false;
551
552 if (rq_err_state)
553 diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
554 index 7567cc464b88..634e4149af22 100644
555 --- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
556 +++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
557 @@ -1221,7 +1221,7 @@ static int qede_selftest_receive_traffic(struct qede_dev *edev)
558 struct qede_rx_queue *rxq = NULL;
559 struct sw_rx_data *sw_rx_data;
560 union eth_rx_cqe *cqe;
561 - int i, rc = 0;
562 + int i, iter, rc = 0;
563 u8 *data_ptr;
564
565 for_each_queue(i) {
566 @@ -1240,7 +1240,7 @@ static int qede_selftest_receive_traffic(struct qede_dev *edev)
567 * enabled. This is because the queue 0 is configured as the default
568 * queue and that the loopback traffic is not IP.
569 */
570 - for (i = 0; i < QEDE_SELFTEST_POLL_COUNT; i++) {
571 + for (iter = 0; iter < QEDE_SELFTEST_POLL_COUNT; iter++) {
572 if (!qede_has_rx_work(rxq)) {
573 usleep_range(100, 200);
574 continue;
575 @@ -1287,7 +1287,7 @@ static int qede_selftest_receive_traffic(struct qede_dev *edev)
576 qed_chain_recycle_consumed(&rxq->rx_comp_ring);
577 }
578
579 - if (i == QEDE_SELFTEST_POLL_COUNT) {
580 + if (iter == QEDE_SELFTEST_POLL_COUNT) {
581 DP_NOTICE(edev, "Failed to receive the traffic\n");
582 return -1;
583 }
584 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
585 index c06932c5ecdb..d2a28a9d3209 100644
586 --- a/drivers/net/wireless/mac80211_hwsim.c
587 +++ b/drivers/net/wireless/mac80211_hwsim.c
588 @@ -3046,6 +3046,7 @@ static int hwsim_register_received_nl(struct sk_buff *skb_2,
589 static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
590 {
591 struct hwsim_new_radio_params param = { 0 };
592 + const char *hwname = NULL;
593
594 param.reg_strict = info->attrs[HWSIM_ATTR_REG_STRICT_REG];
595 param.p2p_device = info->attrs[HWSIM_ATTR_SUPPORT_P2P_DEVICE];
596 @@ -3059,8 +3060,14 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
597 if (info->attrs[HWSIM_ATTR_NO_VIF])
598 param.no_vif = true;
599
600 - if (info->attrs[HWSIM_ATTR_RADIO_NAME])
601 - param.hwname = nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]);
602 + if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
603 + hwname = kasprintf(GFP_KERNEL, "%.*s",
604 + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
605 + (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
606 + if (!hwname)
607 + return -ENOMEM;
608 + param.hwname = hwname;
609 + }
610
611 if (info->attrs[HWSIM_ATTR_USE_CHANCTX])
612 param.use_chanctx = true;
613 @@ -3088,11 +3095,15 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info)
614 s64 idx = -1;
615 const char *hwname = NULL;
616
617 - if (info->attrs[HWSIM_ATTR_RADIO_ID])
618 + if (info->attrs[HWSIM_ATTR_RADIO_ID]) {
619 idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]);
620 - else if (info->attrs[HWSIM_ATTR_RADIO_NAME])
621 - hwname = (void *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]);
622 - else
623 + } else if (info->attrs[HWSIM_ATTR_RADIO_NAME]) {
624 + hwname = kasprintf(GFP_KERNEL, "%.*s",
625 + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]),
626 + (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]));
627 + if (!hwname)
628 + return -ENOMEM;
629 + } else
630 return -EINVAL;
631
632 spin_lock_bh(&hwsim_radio_lock);
633 @@ -3101,7 +3112,8 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info)
634 if (data->idx != idx)
635 continue;
636 } else {
637 - if (strcmp(hwname, wiphy_name(data->hw->wiphy)))
638 + if (!hwname ||
639 + strcmp(hwname, wiphy_name(data->hw->wiphy)))
640 continue;
641 }
642
643 @@ -3112,10 +3124,12 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info)
644 spin_unlock_bh(&hwsim_radio_lock);
645 mac80211_hwsim_del_radio(data, wiphy_name(data->hw->wiphy),
646 info);
647 + kfree(hwname);
648 return 0;
649 }
650 spin_unlock_bh(&hwsim_radio_lock);
651
652 + kfree(hwname);
653 return -ENODEV;
654 }
655
656 diff --git a/drivers/net/xen-netback/hash.c b/drivers/net/xen-netback/hash.c
657 index e8c5dddc54ba..3c4c58b9fe76 100644
658 --- a/drivers/net/xen-netback/hash.c
659 +++ b/drivers/net/xen-netback/hash.c
660 @@ -39,7 +39,7 @@ static void xenvif_add_hash(struct xenvif *vif, const u8 *tag,
661 unsigned long flags;
662 bool found;
663
664 - new = kmalloc(sizeof(*entry), GFP_KERNEL);
665 + new = kmalloc(sizeof(*entry), GFP_ATOMIC);
666 if (!new)
667 return;
668
669 diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
670 index 9faccfceb53c..9403245503de 100644
671 --- a/drivers/regulator/core.c
672 +++ b/drivers/regulator/core.c
673 @@ -4507,6 +4507,16 @@ static int __init regulator_init_complete(void)
674 if (of_have_populated_dt())
675 has_full_constraints = true;
676
677 + /*
678 + * Regulators may had failed to resolve their input supplies
679 + * when were registered, either because the input supply was
680 + * not registered yet or because its parent device was not
681 + * bound yet. So attempt to resolve the input supplies for
682 + * pending regulators before trying to disable unused ones.
683 + */
684 + class_for_each_device(&regulator_class, NULL, NULL,
685 + regulator_register_resolve_supply);
686 +
687 /* If we have a full configuration then disable any regulators
688 * we have permission to change the status for and which are
689 * not in use or always_on. This is effectively the default
690 diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c
691 index 375d81850f15..d5f6fbfa17bf 100644
692 --- a/drivers/scsi/device_handler/scsi_dh_emc.c
693 +++ b/drivers/scsi/device_handler/scsi_dh_emc.c
694 @@ -461,7 +461,7 @@ static int clariion_prep_fn(struct scsi_device *sdev, struct request *req)
695 static int clariion_std_inquiry(struct scsi_device *sdev,
696 struct clariion_dh_data *csdev)
697 {
698 - int err;
699 + int err = SCSI_DH_OK;
700 char *sp_model;
701
702 err = send_inquiry_cmd(sdev, 0, csdev);
703 diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
704 index 6d459ef8c121..f72eebc71dd8 100644
705 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
706 +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
707 @@ -106,8 +106,14 @@ int vchiq_platform_init(struct platform_device *pdev, VCHIQ_STATE_T *state)
708
709 g_virt_to_bus_offset = virt_to_dma(dev, (void *)0);
710
711 - (void)of_property_read_u32(dev->of_node, "cache-line-size",
712 + err = of_property_read_u32(dev->of_node, "cache-line-size",
713 &g_cache_line_size);
714 +
715 + if (err) {
716 + dev_err(dev, "Missing cache-line-size property\n");
717 + return -ENODEV;
718 + }
719 +
720 g_fragments_size = 2 * g_cache_line_size;
721
722 /* Allocate space for the channels in coherent memory */
723 diff --git a/drivers/target/iscsi/iscsi_target_erl0.c b/drivers/target/iscsi/iscsi_target_erl0.c
724 index efc453ef6831..ab92a1bc9666 100644
725 --- a/drivers/target/iscsi/iscsi_target_erl0.c
726 +++ b/drivers/target/iscsi/iscsi_target_erl0.c
727 @@ -44,10 +44,8 @@ void iscsit_set_dataout_sequence_values(
728 */
729 if (cmd->unsolicited_data) {
730 cmd->seq_start_offset = cmd->write_data_done;
731 - cmd->seq_end_offset = (cmd->write_data_done +
732 - ((cmd->se_cmd.data_length >
733 - conn->sess->sess_ops->FirstBurstLength) ?
734 - conn->sess->sess_ops->FirstBurstLength : cmd->se_cmd.data_length));
735 + cmd->seq_end_offset = min(cmd->se_cmd.data_length,
736 + conn->sess->sess_ops->FirstBurstLength);
737 return;
738 }
739
740 diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c
741 index 4e603d060e80..59828d819145 100644
742 --- a/drivers/tty/serial/sunhv.c
743 +++ b/drivers/tty/serial/sunhv.c
744 @@ -398,6 +398,12 @@ static struct uart_driver sunhv_reg = {
745
746 static struct uart_port *sunhv_port;
747
748 +void sunhv_migrate_hvcons_irq(int cpu)
749 +{
750 + /* Migrate hvcons irq to param cpu */
751 + irq_force_affinity(sunhv_port->irq, cpumask_of(cpu));
752 +}
753 +
754 /* Copy 's' into the con_write_page, decoding "\n" into
755 * "\r\n" along the way. We have to return two lengths
756 * because the caller needs to know how much to advance
757 diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
758 index f92c680e3937..c61ddbf94bc7 100644
759 --- a/drivers/usb/dwc3/gadget.c
760 +++ b/drivers/usb/dwc3/gadget.c
761 @@ -817,9 +817,42 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
762 if (!node) {
763 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;
764
765 + /*
766 + * USB Specification 2.0 Section 5.9.2 states that: "If
767 + * there is only a single transaction in the microframe,
768 + * only a DATA0 data packet PID is used. If there are
769 + * two transactions per microframe, DATA1 is used for
770 + * the first transaction data packet and DATA0 is used
771 + * for the second transaction data packet. If there are
772 + * three transactions per microframe, DATA2 is used for
773 + * the first transaction data packet, DATA1 is used for
774 + * the second, and DATA0 is used for the third."
775 + *
776 + * IOW, we should satisfy the following cases:
777 + *
778 + * 1) length <= maxpacket
779 + * - DATA0
780 + *
781 + * 2) maxpacket < length <= (2 * maxpacket)
782 + * - DATA1, DATA0
783 + *
784 + * 3) (2 * maxpacket) < length <= (3 * maxpacket)
785 + * - DATA2, DATA1, DATA0
786 + */
787 if (speed == USB_SPEED_HIGH) {
788 struct usb_ep *ep = &dep->endpoint;
789 - trb->size |= DWC3_TRB_SIZE_PCM1(ep->mult - 1);
790 + unsigned int mult = ep->mult - 1;
791 + unsigned int maxp;
792 +
793 + maxp = usb_endpoint_maxp(ep->desc) & 0x07ff;
794 +
795 + if (length <= (2 * maxp))
796 + mult--;
797 +
798 + if (length <= maxp)
799 + mult--;
800 +
801 + trb->size |= DWC3_TRB_SIZE_PCM1(mult);
802 }
803 } else {
804 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS;
805 diff --git a/drivers/watchdog/kempld_wdt.c b/drivers/watchdog/kempld_wdt.c
806 index 8e302d0e346c..3efa295ac627 100644
807 --- a/drivers/watchdog/kempld_wdt.c
808 +++ b/drivers/watchdog/kempld_wdt.c
809 @@ -140,12 +140,19 @@ static int kempld_wdt_set_stage_timeout(struct kempld_wdt_data *wdt_data,
810 unsigned int timeout)
811 {
812 struct kempld_device_data *pld = wdt_data->pld;
813 - u32 prescaler = kempld_prescaler[PRESCALER_21];
814 + u32 prescaler;
815 u64 stage_timeout64;
816 u32 stage_timeout;
817 u32 remainder;
818 u8 stage_cfg;
819
820 +#if GCC_VERSION < 40400
821 + /* work around a bug compiling do_div() */
822 + prescaler = READ_ONCE(kempld_prescaler[PRESCALER_21]);
823 +#else
824 + prescaler = kempld_prescaler[PRESCALER_21];
825 +#endif
826 +
827 if (!stage)
828 return -EINVAL;
829
830 diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
831 index 71261b459863..77f9efc1f7aa 100644
832 --- a/fs/btrfs/send.c
833 +++ b/fs/btrfs/send.c
834 @@ -1680,6 +1680,9 @@ static int is_inode_existent(struct send_ctx *sctx, u64 ino, u64 gen)
835 {
836 int ret;
837
838 + if (ino == BTRFS_FIRST_FREE_OBJECTID)
839 + return 1;
840 +
841 ret = get_cur_inode_state(sctx, ino, gen);
842 if (ret < 0)
843 goto out;
844 @@ -1865,7 +1868,7 @@ static int will_overwrite_ref(struct send_ctx *sctx, u64 dir, u64 dir_gen,
845 * not deleted and then re-created, if it was then we have no overwrite
846 * and we can just unlink this entry.
847 */
848 - if (sctx->parent_root) {
849 + if (sctx->parent_root && dir != BTRFS_FIRST_FREE_OBJECTID) {
850 ret = get_inode_info(sctx->parent_root, dir, NULL, &gen, NULL,
851 NULL, NULL, NULL);
852 if (ret < 0 && ret != -ENOENT)
853 diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
854 index 953275b651bc..4a6df2ce0f76 100644
855 --- a/fs/ceph/inode.c
856 +++ b/fs/ceph/inode.c
857 @@ -1323,8 +1323,8 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req,
858 ceph_dir_clear_ordered(dir);
859 dout("d_delete %p\n", dn);
860 d_delete(dn);
861 - } else {
862 - if (have_lease && d_unhashed(dn))
863 + } else if (have_lease) {
864 + if (d_unhashed(dn))
865 d_add(dn, NULL);
866 update_dentry_lease(dn, rinfo->dlease,
867 session,
868 diff --git a/fs/ceph/ioctl.c b/fs/ceph/ioctl.c
869 index 7d752d53353a..4c9c72f26eb9 100644
870 --- a/fs/ceph/ioctl.c
871 +++ b/fs/ceph/ioctl.c
872 @@ -25,7 +25,7 @@ static long ceph_ioctl_get_layout(struct file *file, void __user *arg)
873 l.stripe_count = ci->i_layout.stripe_count;
874 l.object_size = ci->i_layout.object_size;
875 l.data_pool = ci->i_layout.pool_id;
876 - l.preferred_osd = (s32)-1;
877 + l.preferred_osd = -1;
878 if (copy_to_user(arg, &l, sizeof(l)))
879 return -EFAULT;
880 }
881 @@ -97,7 +97,7 @@ static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
882 nl.data_pool = ci->i_layout.pool_id;
883
884 /* this is obsolete, and always -1 */
885 - nl.preferred_osd = le64_to_cpu(-1);
886 + nl.preferred_osd = -1;
887
888 err = __validate_layout(mdsc, &nl);
889 if (err)
890 diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
891 index e3e1a80b351e..c0f52c443c34 100644
892 --- a/fs/ceph/mds_client.c
893 +++ b/fs/ceph/mds_client.c
894 @@ -1782,13 +1782,18 @@ static int build_dentry_path(struct dentry *dentry,
895 int *pfreepath)
896 {
897 char *path;
898 + struct inode *dir;
899
900 - if (ceph_snap(d_inode(dentry->d_parent)) == CEPH_NOSNAP) {
901 - *pino = ceph_ino(d_inode(dentry->d_parent));
902 + rcu_read_lock();
903 + dir = d_inode_rcu(dentry->d_parent);
904 + if (dir && ceph_snap(dir) == CEPH_NOSNAP) {
905 + *pino = ceph_ino(dir);
906 + rcu_read_unlock();
907 *ppath = dentry->d_name.name;
908 *ppathlen = dentry->d_name.len;
909 return 0;
910 }
911 + rcu_read_unlock();
912 path = ceph_mdsc_build_path(dentry, ppathlen, pino, 1);
913 if (IS_ERR(path))
914 return PTR_ERR(path);
915 diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
916 index 14db4b712021..99432b59c5cb 100644
917 --- a/fs/f2fs/data.c
918 +++ b/fs/f2fs/data.c
919 @@ -1619,7 +1619,12 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
920 goto fail;
921 }
922 repeat:
923 - page = grab_cache_page_write_begin(mapping, index, flags);
924 + /*
925 + * Do not use grab_cache_page_write_begin() to avoid deadlock due to
926 + * wait_for_stable_page. Will wait that below with our IO control.
927 + */
928 + page = pagecache_get_page(mapping, index,
929 + FGP_LOCK | FGP_WRITE | FGP_CREAT, GFP_NOFS);
930 if (!page) {
931 err = -ENOMEM;
932 goto fail;
933 diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
934 index 74a2b444406d..e10f61684ea4 100644
935 --- a/fs/f2fs/segment.c
936 +++ b/fs/f2fs/segment.c
937 @@ -1263,7 +1263,7 @@ static int get_ssr_segment(struct f2fs_sb_info *sbi, int type)
938 struct curseg_info *curseg = CURSEG_I(sbi, type);
939 const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops;
940
941 - if (IS_NODESEG(type) || !has_not_enough_free_secs(sbi, 0, 0))
942 + if (IS_NODESEG(type))
943 return v_ops->get_victim(sbi,
944 &(curseg)->next_segno, BG_GC, type, SSR);
945
946 diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
947 index 211dc2aed8e1..3069cd46ea66 100644
948 --- a/fs/nfsd/nfs4callback.c
949 +++ b/fs/nfsd/nfs4callback.c
950 @@ -753,6 +753,14 @@ int set_callback_cred(void)
951 return 0;
952 }
953
954 +void cleanup_callback_cred(void)
955 +{
956 + if (callback_cred) {
957 + put_rpccred(callback_cred);
958 + callback_cred = NULL;
959 + }
960 +}
961 +
962 static struct rpc_cred *get_backchannel_cred(struct nfs4_client *clp, struct rpc_clnt *client, struct nfsd4_session *ses)
963 {
964 if (clp->cl_minorversion == 0) {
965 diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
966 index a0dee8ae9f97..d35eb077330f 100644
967 --- a/fs/nfsd/nfs4state.c
968 +++ b/fs/nfsd/nfs4state.c
969 @@ -7012,23 +7012,24 @@ nfs4_state_start(void)
970
971 ret = set_callback_cred();
972 if (ret)
973 - return -ENOMEM;
974 + return ret;
975 +
976 laundry_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, "nfsd4");
977 if (laundry_wq == NULL) {
978 ret = -ENOMEM;
979 - goto out_recovery;
980 + goto out_cleanup_cred;
981 }
982 ret = nfsd4_create_callback_queue();
983 if (ret)
984 goto out_free_laundry;
985
986 set_max_delegations();
987 -
988 return 0;
989
990 out_free_laundry:
991 destroy_workqueue(laundry_wq);
992 -out_recovery:
993 +out_cleanup_cred:
994 + cleanup_callback_cred();
995 return ret;
996 }
997
998 @@ -7086,6 +7087,7 @@ nfs4_state_shutdown(void)
999 {
1000 destroy_workqueue(laundry_wq);
1001 nfsd4_destroy_callback_queue();
1002 + cleanup_callback_cred();
1003 }
1004
1005 static void
1006 diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
1007 index 4516e8b7d776..005c911b34ac 100644
1008 --- a/fs/nfsd/state.h
1009 +++ b/fs/nfsd/state.h
1010 @@ -615,6 +615,7 @@ extern struct nfs4_client_reclaim *nfsd4_find_reclaim_client(const char *recdir,
1011 extern __be32 nfs4_check_open_reclaim(clientid_t *clid,
1012 struct nfsd4_compound_state *cstate, struct nfsd_net *nn);
1013 extern int set_callback_cred(void);
1014 +extern void cleanup_callback_cred(void);
1015 extern void nfsd4_probe_callback(struct nfs4_client *clp);
1016 extern void nfsd4_probe_callback_sync(struct nfs4_client *clp);
1017 extern void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *);
1018 diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
1019 index 77d1632e905d..8dce4099a6ca 100644
1020 --- a/fs/ocfs2/dlmglue.c
1021 +++ b/fs/ocfs2/dlmglue.c
1022 @@ -532,6 +532,7 @@ void ocfs2_lock_res_init_once(struct ocfs2_lock_res *res)
1023 init_waitqueue_head(&res->l_event);
1024 INIT_LIST_HEAD(&res->l_blocked_list);
1025 INIT_LIST_HEAD(&res->l_mask_waiters);
1026 + INIT_LIST_HEAD(&res->l_holders);
1027 }
1028
1029 void ocfs2_inode_lock_res_init(struct ocfs2_lock_res *res,
1030 @@ -749,6 +750,50 @@ void ocfs2_lock_res_free(struct ocfs2_lock_res *res)
1031 res->l_flags = 0UL;
1032 }
1033
1034 +/*
1035 + * Keep a list of processes who have interest in a lockres.
1036 + * Note: this is now only uesed for check recursive cluster locking.
1037 + */
1038 +static inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
1039 + struct ocfs2_lock_holder *oh)
1040 +{
1041 + INIT_LIST_HEAD(&oh->oh_list);
1042 + oh->oh_owner_pid = get_pid(task_pid(current));
1043 +
1044 + spin_lock(&lockres->l_lock);
1045 + list_add_tail(&oh->oh_list, &lockres->l_holders);
1046 + spin_unlock(&lockres->l_lock);
1047 +}
1048 +
1049 +static inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
1050 + struct ocfs2_lock_holder *oh)
1051 +{
1052 + spin_lock(&lockres->l_lock);
1053 + list_del(&oh->oh_list);
1054 + spin_unlock(&lockres->l_lock);
1055 +
1056 + put_pid(oh->oh_owner_pid);
1057 +}
1058 +
1059 +static inline int ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres)
1060 +{
1061 + struct ocfs2_lock_holder *oh;
1062 + struct pid *pid;
1063 +
1064 + /* look in the list of holders for one with the current task as owner */
1065 + spin_lock(&lockres->l_lock);
1066 + pid = task_pid(current);
1067 + list_for_each_entry(oh, &lockres->l_holders, oh_list) {
1068 + if (oh->oh_owner_pid == pid) {
1069 + spin_unlock(&lockres->l_lock);
1070 + return 1;
1071 + }
1072 + }
1073 + spin_unlock(&lockres->l_lock);
1074 +
1075 + return 0;
1076 +}
1077 +
1078 static inline void ocfs2_inc_holders(struct ocfs2_lock_res *lockres,
1079 int level)
1080 {
1081 @@ -2333,8 +2378,9 @@ int ocfs2_inode_lock_full_nested(struct inode *inode,
1082 goto getbh;
1083 }
1084
1085 - if (ocfs2_mount_local(osb))
1086 - goto local;
1087 + if ((arg_flags & OCFS2_META_LOCK_GETBH) ||
1088 + ocfs2_mount_local(osb))
1089 + goto update;
1090
1091 if (!(arg_flags & OCFS2_META_LOCK_RECOVERY))
1092 ocfs2_wait_for_recovery(osb);
1093 @@ -2363,7 +2409,7 @@ int ocfs2_inode_lock_full_nested(struct inode *inode,
1094 if (!(arg_flags & OCFS2_META_LOCK_RECOVERY))
1095 ocfs2_wait_for_recovery(osb);
1096
1097 -local:
1098 +update:
1099 /*
1100 * We only see this flag if we're being called from
1101 * ocfs2_read_locked_inode(). It means we're locking an inode
1102 @@ -2497,6 +2543,59 @@ void ocfs2_inode_unlock(struct inode *inode,
1103 ocfs2_cluster_unlock(OCFS2_SB(inode->i_sb), lockres, level);
1104 }
1105
1106 +/*
1107 + * This _tracker variantes are introduced to deal with the recursive cluster
1108 + * locking issue. The idea is to keep track of a lock holder on the stack of
1109 + * the current process. If there's a lock holder on the stack, we know the
1110 + * task context is already protected by cluster locking. Currently, they're
1111 + * used in some VFS entry routines.
1112 + *
1113 + * return < 0 on error, return == 0 if there's no lock holder on the stack
1114 + * before this call, return == 1 if this call would be a recursive locking.
1115 + */
1116 +int ocfs2_inode_lock_tracker(struct inode *inode,
1117 + struct buffer_head **ret_bh,
1118 + int ex,
1119 + struct ocfs2_lock_holder *oh)
1120 +{
1121 + int status;
1122 + int arg_flags = 0, has_locked;
1123 + struct ocfs2_lock_res *lockres;
1124 +
1125 + lockres = &OCFS2_I(inode)->ip_inode_lockres;
1126 + has_locked = ocfs2_is_locked_by_me(lockres);
1127 + /* Just get buffer head if the cluster lock has been taken */
1128 + if (has_locked)
1129 + arg_flags = OCFS2_META_LOCK_GETBH;
1130 +
1131 + if (likely(!has_locked || ret_bh)) {
1132 + status = ocfs2_inode_lock_full(inode, ret_bh, ex, arg_flags);
1133 + if (status < 0) {
1134 + if (status != -ENOENT)
1135 + mlog_errno(status);
1136 + return status;
1137 + }
1138 + }
1139 + if (!has_locked)
1140 + ocfs2_add_holder(lockres, oh);
1141 +
1142 + return has_locked;
1143 +}
1144 +
1145 +void ocfs2_inode_unlock_tracker(struct inode *inode,
1146 + int ex,
1147 + struct ocfs2_lock_holder *oh,
1148 + int had_lock)
1149 +{
1150 + struct ocfs2_lock_res *lockres;
1151 +
1152 + lockres = &OCFS2_I(inode)->ip_inode_lockres;
1153 + if (!had_lock) {
1154 + ocfs2_remove_holder(lockres, oh);
1155 + ocfs2_inode_unlock(inode, ex);
1156 + }
1157 +}
1158 +
1159 int ocfs2_orphan_scan_lock(struct ocfs2_super *osb, u32 *seqno)
1160 {
1161 struct ocfs2_lock_res *lockres;
1162 diff --git a/fs/ocfs2/dlmglue.h b/fs/ocfs2/dlmglue.h
1163 index d293a22c32c5..a7fc18ba0dc1 100644
1164 --- a/fs/ocfs2/dlmglue.h
1165 +++ b/fs/ocfs2/dlmglue.h
1166 @@ -70,6 +70,11 @@ struct ocfs2_orphan_scan_lvb {
1167 __be32 lvb_os_seqno;
1168 };
1169
1170 +struct ocfs2_lock_holder {
1171 + struct list_head oh_list;
1172 + struct pid *oh_owner_pid;
1173 +};
1174 +
1175 /* ocfs2_inode_lock_full() 'arg_flags' flags */
1176 /* don't wait on recovery. */
1177 #define OCFS2_META_LOCK_RECOVERY (0x01)
1178 @@ -77,6 +82,8 @@ struct ocfs2_orphan_scan_lvb {
1179 #define OCFS2_META_LOCK_NOQUEUE (0x02)
1180 /* don't block waiting for the downconvert thread, instead return -EAGAIN */
1181 #define OCFS2_LOCK_NONBLOCK (0x04)
1182 +/* just get back disk inode bh if we've got cluster lock. */
1183 +#define OCFS2_META_LOCK_GETBH (0x08)
1184
1185 /* Locking subclasses of inode cluster lock */
1186 enum {
1187 @@ -170,4 +177,15 @@ void ocfs2_put_dlm_debug(struct ocfs2_dlm_debug *dlm_debug);
1188
1189 /* To set the locking protocol on module initialization */
1190 void ocfs2_set_locking_protocol(void);
1191 +
1192 +/* The _tracker pair is used to avoid cluster recursive locking */
1193 +int ocfs2_inode_lock_tracker(struct inode *inode,
1194 + struct buffer_head **ret_bh,
1195 + int ex,
1196 + struct ocfs2_lock_holder *oh);
1197 +void ocfs2_inode_unlock_tracker(struct inode *inode,
1198 + int ex,
1199 + struct ocfs2_lock_holder *oh,
1200 + int had_lock);
1201 +
1202 #endif /* DLMGLUE_H */
1203 diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
1204 index e63af7ddfe68..594575e380e8 100644
1205 --- a/fs/ocfs2/ocfs2.h
1206 +++ b/fs/ocfs2/ocfs2.h
1207 @@ -172,6 +172,7 @@ struct ocfs2_lock_res {
1208
1209 struct list_head l_blocked_list;
1210 struct list_head l_mask_waiters;
1211 + struct list_head l_holders;
1212
1213 unsigned long l_flags;
1214 char l_name[OCFS2_LOCK_ID_MAX_LEN];
1215 diff --git a/include/uapi/linux/mroute6.h b/include/uapi/linux/mroute6.h
1216 index 5062fb5751e1..ed5721148768 100644
1217 --- a/include/uapi/linux/mroute6.h
1218 +++ b/include/uapi/linux/mroute6.h
1219 @@ -4,6 +4,7 @@
1220 #include <linux/kernel.h>
1221 #include <linux/types.h>
1222 #include <linux/sockios.h>
1223 +#include <linux/in6.h> /* For struct sockaddr_in6. */
1224
1225 /*
1226 * Based on the MROUTING 3.5 defines primarily to keep
1227 diff --git a/include/uapi/linux/rds.h b/include/uapi/linux/rds.h
1228 index 0f9265cb2a96..7af20a136429 100644
1229 --- a/include/uapi/linux/rds.h
1230 +++ b/include/uapi/linux/rds.h
1231 @@ -35,6 +35,7 @@
1232 #define _LINUX_RDS_H
1233
1234 #include <linux/types.h>
1235 +#include <linux/socket.h> /* For __kernel_sockaddr_storage. */
1236
1237 #define RDS_IB_ABI_VERSION 0x301
1238
1239 @@ -223,7 +224,7 @@ struct rds_get_mr_args {
1240 };
1241
1242 struct rds_get_mr_for_dest_args {
1243 - struct sockaddr_storage dest_addr;
1244 + struct __kernel_sockaddr_storage dest_addr;
1245 struct rds_iovec vec;
1246 uint64_t cookie_addr;
1247 uint64_t flags;
1248 diff --git a/init/initramfs.c b/init/initramfs.c
1249 index b32ad7d97ac9..981f286c1d16 100644
1250 --- a/init/initramfs.c
1251 +++ b/init/initramfs.c
1252 @@ -18,6 +18,7 @@
1253 #include <linux/dirent.h>
1254 #include <linux/syscalls.h>
1255 #include <linux/utime.h>
1256 +#include <linux/file.h>
1257
1258 static ssize_t __init xwrite(int fd, const char *p, size_t count)
1259 {
1260 @@ -647,6 +648,7 @@ static int __init populate_rootfs(void)
1261 printk(KERN_EMERG "Initramfs unpacking failed: %s\n", err);
1262 free_initrd();
1263 #endif
1264 + flush_delayed_fput();
1265 /*
1266 * Try loading default modules from initramfs. This gives
1267 * us a chance to load before device_initcalls.
1268 diff --git a/init/main.c b/init/main.c
1269 index ae3996ae9bac..25bac88bc66e 100644
1270 --- a/init/main.c
1271 +++ b/init/main.c
1272 @@ -70,7 +70,6 @@
1273 #include <linux/shmem_fs.h>
1274 #include <linux/slab.h>
1275 #include <linux/perf_event.h>
1276 -#include <linux/file.h>
1277 #include <linux/ptrace.h>
1278 #include <linux/blkdev.h>
1279 #include <linux/elevator.h>
1280 @@ -947,8 +946,6 @@ static int __ref kernel_init(void *unused)
1281 system_state = SYSTEM_RUNNING;
1282 numa_default_policy();
1283
1284 - flush_delayed_fput();
1285 -
1286 rcu_end_inkernel_boot();
1287
1288 if (ramdisk_execute_command) {
1289 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
1290 index 4d7ffc0a0d00..6599c7f3071d 100644
1291 --- a/kernel/locking/lockdep.c
1292 +++ b/kernel/locking/lockdep.c
1293 @@ -3260,10 +3260,17 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
1294 if (depth) {
1295 hlock = curr->held_locks + depth - 1;
1296 if (hlock->class_idx == class_idx && nest_lock) {
1297 - if (hlock->references)
1298 + if (hlock->references) {
1299 + /*
1300 + * Check: unsigned int references:12, overflow.
1301 + */
1302 + if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1))
1303 + return 0;
1304 +
1305 hlock->references++;
1306 - else
1307 + } else {
1308 hlock->references = 2;
1309 + }
1310
1311 return 1;
1312 }
1313 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
1314 index d7dda36fbc7b..02e7ad860b52 100644
1315 --- a/kernel/sched/core.c
1316 +++ b/kernel/sched/core.c
1317 @@ -1141,6 +1141,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p,
1318 int ret = 0;
1319
1320 rq = task_rq_lock(p, &rf);
1321 + update_rq_clock(rq);
1322
1323 if (p->flags & PF_KTHREAD) {
1324 /*
1325 diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
1326 index bb5ec425dfe0..eeb7f2f5698d 100644
1327 --- a/kernel/time/hrtimer.c
1328 +++ b/kernel/time/hrtimer.c
1329 @@ -94,17 +94,15 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
1330 };
1331
1332 static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
1333 + /* Make sure we catch unsupported clockids */
1334 + [0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
1335 +
1336 [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
1337 [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
1338 [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
1339 [CLOCK_TAI] = HRTIMER_BASE_TAI,
1340 };
1341
1342 -static inline int hrtimer_clockid_to_base(clockid_t clock_id)
1343 -{
1344 - return hrtimer_clock_to_base_table[clock_id];
1345 -}
1346 -
1347 /*
1348 * Functions and macros which are different for UP/SMP systems are kept in a
1349 * single place
1350 @@ -1112,6 +1110,18 @@ u64 hrtimer_get_next_event(void)
1351 }
1352 #endif
1353
1354 +static inline int hrtimer_clockid_to_base(clockid_t clock_id)
1355 +{
1356 + if (likely(clock_id < MAX_CLOCKS)) {
1357 + int base = hrtimer_clock_to_base_table[clock_id];
1358 +
1359 + if (likely(base != HRTIMER_MAX_CLOCK_BASES))
1360 + return base;
1361 + }
1362 + WARN(1, "Invalid clockid %d. Using MONOTONIC\n", clock_id);
1363 + return HRTIMER_BASE_MONOTONIC;
1364 +}
1365 +
1366 static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
1367 enum hrtimer_mode mode)
1368 {
1369 diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
1370 index ede137345a99..c9f715b2917f 100644
1371 --- a/mm/memory_hotplug.c
1372 +++ b/mm/memory_hotplug.c
1373 @@ -179,7 +179,7 @@ static void release_memory_resource(struct resource *res)
1374 void get_page_bootmem(unsigned long info, struct page *page,
1375 unsigned long type)
1376 {
1377 - page->lru.next = (struct list_head *) type;
1378 + page->freelist = (void *)type;
1379 SetPagePrivate(page);
1380 set_page_private(page, info);
1381 page_ref_inc(page);
1382 @@ -189,11 +189,12 @@ void put_page_bootmem(struct page *page)
1383 {
1384 unsigned long type;
1385
1386 - type = (unsigned long) page->lru.next;
1387 + type = (unsigned long) page->freelist;
1388 BUG_ON(type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
1389 type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE);
1390
1391 if (page_ref_dec_return(page) == 1) {
1392 + page->freelist = NULL;
1393 ClearPagePrivate(page);
1394 set_page_private(page, 0);
1395 INIT_LIST_HEAD(&page->lru);
1396 diff --git a/mm/slab_common.c b/mm/slab_common.c
1397 index 5d2f24fbafc5..622f6b6ae844 100644
1398 --- a/mm/slab_common.c
1399 +++ b/mm/slab_common.c
1400 @@ -255,7 +255,7 @@ struct kmem_cache *find_mergeable(size_t size, size_t align,
1401 {
1402 struct kmem_cache *s;
1403
1404 - if (slab_nomerge || (flags & SLAB_NEVER_MERGE))
1405 + if (slab_nomerge)
1406 return NULL;
1407
1408 if (ctor)
1409 @@ -266,6 +266,9 @@ struct kmem_cache *find_mergeable(size_t size, size_t align,
1410 size = ALIGN(size, align);
1411 flags = kmem_cache_flags(size, flags, name, NULL);
1412
1413 + if (flags & SLAB_NEVER_MERGE)
1414 + return NULL;
1415 +
1416 list_for_each_entry_reverse(s, &slab_caches, list) {
1417 if (slab_unmergeable(s))
1418 continue;
1419 diff --git a/mm/sparse.c b/mm/sparse.c
1420 index 1e168bf2779a..8c4c82e358e6 100644
1421 --- a/mm/sparse.c
1422 +++ b/mm/sparse.c
1423 @@ -662,7 +662,7 @@ static void free_map_bootmem(struct page *memmap)
1424 >> PAGE_SHIFT;
1425
1426 for (i = 0; i < nr_pages; i++, page++) {
1427 - magic = (unsigned long) page->lru.next;
1428 + magic = (unsigned long) page->freelist;
1429
1430 BUG_ON(magic == NODE_INFO);
1431
1432 diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
1433 index b2c823ffad74..348700b424ea 100644
1434 --- a/net/mac80211/sta_info.c
1435 +++ b/net/mac80211/sta_info.c
1436 @@ -688,7 +688,7 @@ static void __sta_info_recalc_tim(struct sta_info *sta, bool ignore_pending)
1437 }
1438
1439 /* No need to do anything if the driver does all */
1440 - if (ieee80211_hw_check(&local->hw, AP_LINK_PS))
1441 + if (ieee80211_hw_check(&local->hw, AP_LINK_PS) && !local->ops->set_tim)
1442 return;
1443
1444 if (sta->dead)
1445 diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
1446 index f8dbacf66795..0d6c72d6b9ba 100644
1447 --- a/net/netfilter/nf_conntrack_expect.c
1448 +++ b/net/netfilter/nf_conntrack_expect.c
1449 @@ -411,7 +411,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect)
1450 struct net *net = nf_ct_exp_net(expect);
1451 struct hlist_node *next;
1452 unsigned int h;
1453 - int ret = 1;
1454 + int ret = 0;
1455
1456 if (!master_help) {
1457 ret = -ESHUTDOWN;
1458 @@ -461,7 +461,7 @@ int nf_ct_expect_related_report(struct nf_conntrack_expect *expect,
1459
1460 spin_lock_bh(&nf_conntrack_expect_lock);
1461 ret = __nf_ct_expect_check(expect);
1462 - if (ret <= 0)
1463 + if (ret < 0)
1464 goto out;
1465
1466 ret = nf_ct_expect_insert(expect);
1467 diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
1468 index 775c67818bf1..bd650222e711 100644
1469 --- a/sound/pci/hda/patch_hdmi.c
1470 +++ b/sound/pci/hda/patch_hdmi.c
1471 @@ -3685,6 +3685,7 @@ HDA_CODEC_ENTRY(0x80862808, "Broadwell HDMI", patch_i915_hsw_hdmi),
1472 HDA_CODEC_ENTRY(0x80862809, "Skylake HDMI", patch_i915_hsw_hdmi),
1473 HDA_CODEC_ENTRY(0x8086280a, "Broxton HDMI", patch_i915_hsw_hdmi),
1474 HDA_CODEC_ENTRY(0x8086280b, "Kabylake HDMI", patch_i915_hsw_hdmi),
1475 +HDA_CODEC_ENTRY(0x8086280d, "Geminilake HDMI", patch_i915_hsw_hdmi),
1476 HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi),
1477 HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI", patch_i915_byt_hdmi),
1478 HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi),
1479 diff --git a/sound/soc/mediatek/Kconfig b/sound/soc/mediatek/Kconfig
1480 index 05cf809cf9e1..d7013bde6f45 100644
1481 --- a/sound/soc/mediatek/Kconfig
1482 +++ b/sound/soc/mediatek/Kconfig
1483 @@ -13,7 +13,7 @@ config SND_SOC_MT2701
1484
1485 config SND_SOC_MT2701_CS42448
1486 tristate "ASoc Audio driver for MT2701 with CS42448 codec"
1487 - depends on SND_SOC_MT2701
1488 + depends on SND_SOC_MT2701 && I2C
1489 select SND_SOC_CS42XX8_I2C
1490 select SND_SOC_BT_SCO
1491 help