Magellan Linux

Contents of /trunk/kernel-alx-legacy/patches-4.9/0111-4.9.12-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: 21015 byte(s)
-added kerenl-alx-legacy pkg
1 diff --git a/Documentation/media/uapi/v4l/pixfmt-007.rst b/Documentation/media/uapi/v4l/pixfmt-007.rst
2 index 44bb5a7059b3..95a23a28c595 100644
3 --- a/Documentation/media/uapi/v4l/pixfmt-007.rst
4 +++ b/Documentation/media/uapi/v4l/pixfmt-007.rst
5 @@ -211,7 +211,13 @@ Colorspace sRGB (V4L2_COLORSPACE_SRGB)
6 The :ref:`srgb` standard defines the colorspace used by most webcams
7 and computer graphics. The default transfer function is
8 ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
9 -``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range.
10 +``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.
11 +
12 +Note that the :ref:`sycc` standard specifies full range quantization,
13 +however all current capture hardware supported by the kernel convert
14 +R'G'B' to limited range Y'CbCr. So choosing full range as the default
15 +would break how applications interpret the quantization range.
16 +
17 The chromaticities of the primary colors and the white reference are:
18
19
20 @@ -276,7 +282,7 @@ the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:
21
22 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
23 [-0.5…0.5]. This transform is identical to one defined in SMPTE
24 -170M/BT.601. The Y'CbCr quantization is full range.
25 +170M/BT.601. The Y'CbCr quantization is limited range.
26
27
28 .. _col-adobergb:
29 @@ -288,10 +294,15 @@ The :ref:`adobergb` standard defines the colorspace used by computer
30 graphics that use the AdobeRGB colorspace. This is also known as the
31 :ref:`oprgb` standard. The default transfer function is
32 ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is
33 -``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full
34 -range. The chromaticities of the primary colors and the white reference
35 -are:
36 +``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
37 +range.
38 +
39 +Note that the :ref:`oprgb` standard specifies full range quantization,
40 +however all current capture hardware supported by the kernel convert
41 +R'G'B' to limited range Y'CbCr. So choosing full range as the default
42 +would break how applications interpret the quantization range.
43
44 +The chromaticities of the primary colors and the white reference are:
45
46
47 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
48 @@ -344,7 +355,7 @@ the following ``V4L2_YCBCR_ENC_601`` encoding:
49
50 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
51 [-0.5…0.5]. This transform is identical to one defined in SMPTE
52 -170M/BT.601. The Y'CbCr quantization is full range.
53 +170M/BT.601. The Y'CbCr quantization is limited range.
54
55
56 .. _col-bt2020:
57 diff --git a/Makefile b/Makefile
58 index 18b0c5adad3b..3cd6f6fb4f20 100644
59 --- a/Makefile
60 +++ b/Makefile
61 @@ -1,6 +1,6 @@
62 VERSION = 4
63 PATCHLEVEL = 9
64 -SUBLEVEL = 11
65 +SUBLEVEL = 12
66 EXTRAVERSION =
67 NAME = Roaring Lionus
68
69 diff --git a/arch/arm/lib/getuser.S b/arch/arm/lib/getuser.S
70 index 8ecfd15c3a02..df73914e81c8 100644
71 --- a/arch/arm/lib/getuser.S
72 +++ b/arch/arm/lib/getuser.S
73 @@ -67,7 +67,7 @@ ENTRY(__get_user_4)
74 ENDPROC(__get_user_4)
75
76 ENTRY(__get_user_8)
77 - check_uaccess r0, 8, r1, r2, __get_user_bad
78 + check_uaccess r0, 8, r1, r2, __get_user_bad8
79 #ifdef CONFIG_THUMB2_KERNEL
80 5: TUSER(ldr) r2, [r0]
81 6: TUSER(ldr) r3, [r0, #4]
82 diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
83 index 16ada1eb7e26..d5ce34dcf4d9 100644
84 --- a/arch/powerpc/mm/init_64.c
85 +++ b/arch/powerpc/mm/init_64.c
86 @@ -424,7 +424,8 @@ early_param("disable_radix", parse_disable_radix);
87 void __init mmu_early_init_devtree(void)
88 {
89 /* Disable radix mode based on kernel command line. */
90 - if (disable_radix)
91 + /* We don't yet have the machinery to do radix as a guest. */
92 + if (disable_radix || !(mfmsr() & MSR_HV))
93 cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX;
94
95 if (early_radix_enabled())
96 diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
97 index aa644487749c..f59771da52ee 100644
98 --- a/drivers/gpu/drm/drm_dp_mst_topology.c
99 +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
100 @@ -1817,7 +1817,7 @@ int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr)
101 mgr->payloads[i].vcpi = req_payload.vcpi;
102 } else if (mgr->payloads[i].num_slots) {
103 mgr->payloads[i].num_slots = 0;
104 - drm_dp_destroy_payload_step1(mgr, port, port->vcpi.vcpi, &mgr->payloads[i]);
105 + drm_dp_destroy_payload_step1(mgr, port, mgr->payloads[i].vcpi, &mgr->payloads[i]);
106 req_payload.payload_state = mgr->payloads[i].payload_state;
107 mgr->payloads[i].start_slot = 0;
108 }
109 diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c
110 index fb16070b266e..4a4f9533c53b 100644
111 --- a/drivers/gpu/drm/radeon/radeon_cursor.c
112 +++ b/drivers/gpu/drm/radeon/radeon_cursor.c
113 @@ -205,8 +205,8 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
114 }
115
116 if (x <= (crtc->x - w) || y <= (crtc->y - radeon_crtc->cursor_height) ||
117 - x >= (crtc->x + crtc->mode.crtc_hdisplay) ||
118 - y >= (crtc->y + crtc->mode.crtc_vdisplay))
119 + x >= (crtc->x + crtc->mode.hdisplay) ||
120 + y >= (crtc->y + crtc->mode.vdisplay))
121 goto out_of_bounds;
122
123 x += xorigin;
124 diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
125 index b403fa5ecf49..809f4d4e93a0 100644
126 --- a/drivers/i2c/busses/i2c-designware-core.c
127 +++ b/drivers/i2c/busses/i2c-designware-core.c
128 @@ -475,30 +475,28 @@ static int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev)
129 static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
130 {
131 struct i2c_msg *msgs = dev->msgs;
132 - u32 ic_tar = 0;
133 + u32 ic_con, ic_tar = 0;
134
135 /* Disable the adapter */
136 __i2c_dw_enable_and_wait(dev, false);
137
138 /* if the slave address is ten bit address, enable 10BITADDR */
139 - if (dev->dynamic_tar_update_enabled) {
140 + ic_con = dw_readl(dev, DW_IC_CON);
141 + if (msgs[dev->msg_write_idx].flags & I2C_M_TEN) {
142 + ic_con |= DW_IC_CON_10BITADDR_MASTER;
143 /*
144 * If I2C_DYNAMIC_TAR_UPDATE is set, the 10-bit addressing
145 - * mode has to be enabled via bit 12 of IC_TAR register,
146 - * otherwise bit 4 of IC_CON is used.
147 + * mode has to be enabled via bit 12 of IC_TAR register.
148 + * We set it always as I2C_DYNAMIC_TAR_UPDATE can't be
149 + * detected from registers.
150 */
151 - if (msgs[dev->msg_write_idx].flags & I2C_M_TEN)
152 - ic_tar = DW_IC_TAR_10BITADDR_MASTER;
153 + ic_tar = DW_IC_TAR_10BITADDR_MASTER;
154 } else {
155 - u32 ic_con = dw_readl(dev, DW_IC_CON);
156 -
157 - if (msgs[dev->msg_write_idx].flags & I2C_M_TEN)
158 - ic_con |= DW_IC_CON_10BITADDR_MASTER;
159 - else
160 - ic_con &= ~DW_IC_CON_10BITADDR_MASTER;
161 - dw_writel(dev, ic_con, DW_IC_CON);
162 + ic_con &= ~DW_IC_CON_10BITADDR_MASTER;
163 }
164
165 + dw_writel(dev, ic_con, DW_IC_CON);
166 +
167 /*
168 * Set the slave (target) address and enable 10-bit addressing mode
169 * if applicable.
170 @@ -923,7 +921,6 @@ int i2c_dw_probe(struct dw_i2c_dev *dev)
171 {
172 struct i2c_adapter *adap = &dev->adapter;
173 int r;
174 - u32 reg;
175
176 init_completion(&dev->cmd_complete);
177
178 @@ -931,26 +928,6 @@ int i2c_dw_probe(struct dw_i2c_dev *dev)
179 if (r)
180 return r;
181
182 - r = i2c_dw_acquire_lock(dev);
183 - if (r)
184 - return r;
185 -
186 - /*
187 - * Test if dynamic TAR update is enabled in this controller by writing
188 - * to IC_10BITADDR_MASTER field in IC_CON: when it is enabled this
189 - * field is read-only so it should not succeed
190 - */
191 - reg = dw_readl(dev, DW_IC_CON);
192 - dw_writel(dev, reg ^ DW_IC_CON_10BITADDR_MASTER, DW_IC_CON);
193 -
194 - if ((dw_readl(dev, DW_IC_CON) & DW_IC_CON_10BITADDR_MASTER) ==
195 - (reg & DW_IC_CON_10BITADDR_MASTER)) {
196 - dev->dynamic_tar_update_enabled = true;
197 - dev_dbg(dev->dev, "Dynamic TAR update enabled");
198 - }
199 -
200 - i2c_dw_release_lock(dev);
201 -
202 snprintf(adap->name, sizeof(adap->name),
203 "Synopsys DesignWare I2C adapter");
204 adap->retries = 3;
205 diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
206 index 0d44d2ae7d4c..22bfbe147870 100644
207 --- a/drivers/i2c/busses/i2c-designware-core.h
208 +++ b/drivers/i2c/busses/i2c-designware-core.h
209 @@ -117,7 +117,6 @@ struct dw_i2c_dev {
210 int (*acquire_lock)(struct dw_i2c_dev *dev);
211 void (*release_lock)(struct dw_i2c_dev *dev);
212 bool pm_runtime_disabled;
213 - bool dynamic_tar_update_enabled;
214 };
215
216 #define ACCESS_SWAP 0x00000001
217 diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
218 index d15b33813021..ed1935f300a7 100644
219 --- a/drivers/input/mouse/elan_i2c_core.c
220 +++ b/drivers/input/mouse/elan_i2c_core.c
221 @@ -1232,6 +1232,7 @@ static const struct acpi_device_id elan_acpi_id[] = {
222 { "ELAN0000", 0 },
223 { "ELAN0100", 0 },
224 { "ELAN0600", 0 },
225 + { "ELAN0605", 0 },
226 { "ELAN1000", 0 },
227 { }
228 };
229 diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h
230 index 6b420a55c745..c3ea03c9a1a8 100644
231 --- a/drivers/md/bcache/bcache.h
232 +++ b/drivers/md/bcache/bcache.h
233 @@ -425,7 +425,7 @@ struct cache {
234 * until a gc finishes - otherwise we could pointlessly burn a ton of
235 * cpu
236 */
237 - unsigned invalidate_needs_gc:1;
238 + unsigned invalidate_needs_gc;
239
240 bool discard; /* Get rid of? */
241
242 @@ -593,8 +593,8 @@ struct cache_set {
243
244 /* Counts how many sectors bio_insert has added to the cache */
245 atomic_t sectors_to_gc;
246 + wait_queue_head_t gc_wait;
247
248 - wait_queue_head_t moving_gc_wait;
249 struct keybuf moving_gc_keys;
250 /* Number of moving GC bios in flight */
251 struct semaphore moving_in_flight;
252 diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
253 index 81d3db40cd7b..2efdce07247c 100644
254 --- a/drivers/md/bcache/btree.c
255 +++ b/drivers/md/bcache/btree.c
256 @@ -1757,32 +1757,34 @@ static void bch_btree_gc(struct cache_set *c)
257 bch_moving_gc(c);
258 }
259
260 -static int bch_gc_thread(void *arg)
261 +static bool gc_should_run(struct cache_set *c)
262 {
263 - struct cache_set *c = arg;
264 struct cache *ca;
265 unsigned i;
266
267 - while (1) {
268 -again:
269 - bch_btree_gc(c);
270 + for_each_cache(ca, c, i)
271 + if (ca->invalidate_needs_gc)
272 + return true;
273
274 - set_current_state(TASK_INTERRUPTIBLE);
275 - if (kthread_should_stop())
276 - break;
277 + if (atomic_read(&c->sectors_to_gc) < 0)
278 + return true;
279
280 - mutex_lock(&c->bucket_lock);
281 + return false;
282 +}
283
284 - for_each_cache(ca, c, i)
285 - if (ca->invalidate_needs_gc) {
286 - mutex_unlock(&c->bucket_lock);
287 - set_current_state(TASK_RUNNING);
288 - goto again;
289 - }
290 +static int bch_gc_thread(void *arg)
291 +{
292 + struct cache_set *c = arg;
293
294 - mutex_unlock(&c->bucket_lock);
295 + while (1) {
296 + wait_event_interruptible(c->gc_wait,
297 + kthread_should_stop() || gc_should_run(c));
298
299 - schedule();
300 + if (kthread_should_stop())
301 + break;
302 +
303 + set_gc_sectors(c);
304 + bch_btree_gc(c);
305 }
306
307 return 0;
308 @@ -1790,11 +1792,10 @@ static int bch_gc_thread(void *arg)
309
310 int bch_gc_thread_start(struct cache_set *c)
311 {
312 - c->gc_thread = kthread_create(bch_gc_thread, c, "bcache_gc");
313 + c->gc_thread = kthread_run(bch_gc_thread, c, "bcache_gc");
314 if (IS_ERR(c->gc_thread))
315 return PTR_ERR(c->gc_thread);
316
317 - set_task_state(c->gc_thread, TASK_INTERRUPTIBLE);
318 return 0;
319 }
320
321 diff --git a/drivers/md/bcache/btree.h b/drivers/md/bcache/btree.h
322 index 5c391fa01bed..9b80417cd547 100644
323 --- a/drivers/md/bcache/btree.h
324 +++ b/drivers/md/bcache/btree.h
325 @@ -260,8 +260,7 @@ void bch_initial_mark_key(struct cache_set *, int, struct bkey *);
326
327 static inline void wake_up_gc(struct cache_set *c)
328 {
329 - if (c->gc_thread)
330 - wake_up_process(c->gc_thread);
331 + wake_up(&c->gc_wait);
332 }
333
334 #define MAP_DONE 0
335 diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c
336 index 40ffe5e424b3..a37c1776f2e3 100644
337 --- a/drivers/md/bcache/request.c
338 +++ b/drivers/md/bcache/request.c
339 @@ -196,10 +196,8 @@ static void bch_data_insert_start(struct closure *cl)
340 struct data_insert_op *op = container_of(cl, struct data_insert_op, cl);
341 struct bio *bio = op->bio, *n;
342
343 - if (atomic_sub_return(bio_sectors(bio), &op->c->sectors_to_gc) < 0) {
344 - set_gc_sectors(op->c);
345 + if (atomic_sub_return(bio_sectors(bio), &op->c->sectors_to_gc) < 0)
346 wake_up_gc(op->c);
347 - }
348
349 if (op->bypass)
350 return bch_data_invalidate(cl);
351 diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
352 index 849ad441cd76..66669c8f4161 100644
353 --- a/drivers/md/bcache/super.c
354 +++ b/drivers/md/bcache/super.c
355 @@ -1491,6 +1491,7 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb)
356 mutex_init(&c->bucket_lock);
357 init_waitqueue_head(&c->btree_cache_wait);
358 init_waitqueue_head(&c->bucket_wait);
359 + init_waitqueue_head(&c->gc_wait);
360 sema_init(&c->uuid_write_mutex, 1);
361
362 spin_lock_init(&c->btree_gc_time.lock);
363 @@ -1550,6 +1551,7 @@ static void run_cache_set(struct cache_set *c)
364
365 for_each_cache(ca, c, i)
366 c->nbuckets += ca->sb.nbuckets;
367 + set_gc_sectors(c);
368
369 if (CACHE_SYNC(&c->sb)) {
370 LIST_HEAD(journal);
371 diff --git a/drivers/media/usb/siano/smsusb.c b/drivers/media/usb/siano/smsusb.c
372 index c2e25876e93b..18b41b9dc2e4 100644
373 --- a/drivers/media/usb/siano/smsusb.c
374 +++ b/drivers/media/usb/siano/smsusb.c
375 @@ -218,22 +218,30 @@ static int smsusb_start_streaming(struct smsusb_device_t *dev)
376 static int smsusb_sendrequest(void *context, void *buffer, size_t size)
377 {
378 struct smsusb_device_t *dev = (struct smsusb_device_t *) context;
379 - struct sms_msg_hdr *phdr = (struct sms_msg_hdr *) buffer;
380 - int dummy;
381 + struct sms_msg_hdr *phdr;
382 + int dummy, ret;
383
384 if (dev->state != SMSUSB_ACTIVE) {
385 pr_debug("Device not active yet\n");
386 return -ENOENT;
387 }
388
389 + phdr = kmalloc(size, GFP_KERNEL);
390 + if (!phdr)
391 + return -ENOMEM;
392 + memcpy(phdr, buffer, size);
393 +
394 pr_debug("sending %s(%d) size: %d\n",
395 smscore_translate_msg(phdr->msg_type), phdr->msg_type,
396 phdr->msg_length);
397
398 smsendian_handle_tx_message((struct sms_msg_data *) phdr);
399 - smsendian_handle_message_header((struct sms_msg_hdr *)buffer);
400 - return usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2),
401 - buffer, size, &dummy, 1000);
402 + smsendian_handle_message_header((struct sms_msg_hdr *)phdr);
403 + ret = usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2),
404 + phdr, size, &dummy, 1000);
405 +
406 + kfree(phdr);
407 + return ret;
408 }
409
410 static char *smsusb1_fw_lkup[] = {
411 diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
412 index df19777068a6..f57700c4b8f0 100644
413 --- a/drivers/mmc/core/mmc.c
414 +++ b/drivers/mmc/core/mmc.c
415 @@ -1690,10 +1690,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
416 err = mmc_select_hs400(card);
417 if (err)
418 goto free_card;
419 - } else if (mmc_card_hs(card)) {
420 + } else {
421 /* Select the desired bus width optionally */
422 err = mmc_select_bus_width(card);
423 - if (err > 0) {
424 + if (err > 0 && mmc_card_hs(card)) {
425 err = mmc_select_hs_ddr(card);
426 if (err)
427 goto free_card;
428 diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
429 index 4eb8adb34508..c234ee43b6ef 100644
430 --- a/drivers/ntb/ntb_transport.c
431 +++ b/drivers/ntb/ntb_transport.c
432 @@ -1799,7 +1799,7 @@ ntb_transport_create_queue(void *data, struct device *client_dev,
433
434 node = dev_to_node(&ndev->dev);
435
436 - free_queue = ffs(nt->qp_bitmap);
437 + free_queue = ffs(nt->qp_bitmap_free);
438 if (!free_queue)
439 goto err;
440
441 @@ -2270,9 +2270,8 @@ module_init(ntb_transport_init);
442
443 static void __exit ntb_transport_exit(void)
444 {
445 - debugfs_remove_recursive(nt_debugfs_dir);
446 -
447 ntb_unregister_client(&ntb_transport_client);
448 bus_unregister(&ntb_transport_bus);
449 + debugfs_remove_recursive(nt_debugfs_dir);
450 }
451 module_exit(ntb_transport_exit);
452 diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c
453 index e75d4fdc0866..434e1d474f33 100644
454 --- a/drivers/ntb/test/ntb_perf.c
455 +++ b/drivers/ntb/test/ntb_perf.c
456 @@ -265,6 +265,8 @@ static ssize_t perf_copy(struct pthr_ctx *pctx, char __iomem *dst,
457 if (dma_submit_error(cookie))
458 goto err_set_unmap;
459
460 + dmaengine_unmap_put(unmap);
461 +
462 atomic_inc(&pctx->dma_sync);
463 dma_async_issue_pending(chan);
464
465 diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
466 index 884bad5320f8..4b703492376a 100644
467 --- a/drivers/pci/pcie/pme.c
468 +++ b/drivers/pci/pcie/pme.c
469 @@ -448,6 +448,17 @@ static int pcie_pme_resume(struct pcie_device *srv)
470 return 0;
471 }
472
473 +/**
474 + * pcie_pme_remove - Prepare PCIe PME service device for removal.
475 + * @srv - PCIe service device to remove.
476 + */
477 +static void pcie_pme_remove(struct pcie_device *srv)
478 +{
479 + pcie_pme_suspend(srv);
480 + free_irq(srv->irq, srv);
481 + kfree(get_service_data(srv));
482 +}
483 +
484 static struct pcie_port_service_driver pcie_pme_driver = {
485 .name = "pcie_pme",
486 .port_type = PCI_EXP_TYPE_ROOT_PORT,
487 @@ -456,6 +467,7 @@ static struct pcie_port_service_driver pcie_pme_driver = {
488 .probe = pcie_pme_probe,
489 .suspend = pcie_pme_suspend,
490 .resume = pcie_pme_resume,
491 + .remove = pcie_pme_remove,
492 };
493
494 /**
495 diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
496 index 2cca9cffc63f..e64eae4392a4 100644
497 --- a/drivers/scsi/scsi_lib.c
498 +++ b/drivers/scsi/scsi_lib.c
499 @@ -1031,7 +1031,8 @@ int scsi_init_io(struct scsi_cmnd *cmd)
500 bool is_mq = (rq->mq_ctx != NULL);
501 int error;
502
503 - BUG_ON(!rq->nr_phys_segments);
504 + if (WARN_ON_ONCE(!rq->nr_phys_segments))
505 + return -EINVAL;
506
507 error = scsi_init_sgtable(rq, &cmd->sdb);
508 if (error)
509 diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
510 index dbe5b4b95df0..121de0aaa6ad 100644
511 --- a/drivers/scsi/sg.c
512 +++ b/drivers/scsi/sg.c
513 @@ -1753,6 +1753,10 @@ sg_start_req(Sg_request *srp, unsigned char *cmd)
514 return res;
515
516 iov_iter_truncate(&i, hp->dxfer_len);
517 + if (!iov_iter_count(&i)) {
518 + kfree(iov);
519 + return -EINVAL;
520 + }
521
522 res = blk_rq_map_user_iov(q, rq, md, &i, GFP_ATOMIC);
523 kfree(iov);
524 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
525 index 4e06a27ed7f8..f11792672977 100644
526 --- a/fs/fuse/dev.c
527 +++ b/fs/fuse/dev.c
528 @@ -399,6 +399,10 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req)
529 static void queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req)
530 {
531 spin_lock(&fiq->waitq.lock);
532 + if (test_bit(FR_FINISHED, &req->flags)) {
533 + spin_unlock(&fiq->waitq.lock);
534 + return;
535 + }
536 if (list_empty(&req->intr_entry)) {
537 list_add_tail(&req->intr_entry, &fiq->interrupts);
538 wake_up_locked(&fiq->waitq);
539 @@ -1372,6 +1376,7 @@ static ssize_t fuse_dev_splice_read(struct file *in, loff_t *ppos,
540 * code can Oops if the buffer persists after module unload.
541 */
542 bufs[page_nr].ops = &nosteal_pipe_buf_ops;
543 + bufs[page_nr].flags = 0;
544 ret = add_to_pipe(pipe, &bufs[page_nr++]);
545 if (unlikely(ret < 0))
546 break;
547 diff --git a/fs/splice.c b/fs/splice.c
548 index 63b8f54485dc..8dd79ecfd383 100644
549 --- a/fs/splice.c
550 +++ b/fs/splice.c
551 @@ -203,6 +203,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
552 buf->len = spd->partial[page_nr].len;
553 buf->private = spd->partial[page_nr].private;
554 buf->ops = spd->ops;
555 + buf->flags = 0;
556
557 pipe->nrbufs++;
558 page_nr++;
559 diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
560 index 94f123f3e04e..7f34d3c67648 100644
561 --- a/include/uapi/linux/videodev2.h
562 +++ b/include/uapi/linux/videodev2.h
563 @@ -349,8 +349,8 @@ enum v4l2_quantization {
564 /*
565 * The default for R'G'B' quantization is always full range, except
566 * for the BT2020 colorspace. For Y'CbCr the quantization is always
567 - * limited range, except for COLORSPACE_JPEG, SRGB, ADOBERGB,
568 - * XV601 or XV709: those are full range.
569 + * limited range, except for COLORSPACE_JPEG, XV601 or XV709: those
570 + * are full range.
571 */
572 V4L2_QUANTIZATION_DEFAULT = 0,
573 V4L2_QUANTIZATION_FULL_RANGE = 1,
574 @@ -365,8 +365,7 @@ enum v4l2_quantization {
575 #define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \
576 (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \
577 (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \
578 - (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) || \
579 - (colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \
580 + (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \
581 V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
582
583 enum v4l2_priority {
584 diff --git a/kernel/futex.c b/kernel/futex.c
585 index 2c4be467fecd..38b68c2735c5 100644
586 --- a/kernel/futex.c
587 +++ b/kernel/futex.c
588 @@ -3323,4 +3323,4 @@ static int __init futex_init(void)
589
590 return 0;
591 }
592 -__initcall(futex_init);
593 +core_initcall(futex_init);
594 diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
595 index f7a55e9ff2f7..9c5b231684d0 100644
596 --- a/kernel/printk/printk.c
597 +++ b/kernel/printk/printk.c
598 @@ -1564,7 +1564,7 @@ static void call_console_drivers(int level,
599 {
600 struct console *con;
601
602 - trace_console(text, len);
603 + trace_console_rcuidle(text, len);
604
605 if (!console_drivers)
606 return;
607 diff --git a/kernel/time/timekeeping_debug.c b/kernel/time/timekeeping_debug.c
608 index ca9fb800336b..38bc4d2208e8 100644
609 --- a/kernel/time/timekeeping_debug.c
610 +++ b/kernel/time/timekeeping_debug.c
611 @@ -75,7 +75,7 @@ void tk_debug_account_sleep_time(struct timespec64 *t)
612 int bin = min(fls(t->tv_sec), NUM_BINS-1);
613
614 sleep_time_bin[bin]++;
615 - pr_info("Suspended for %lld.%03lu seconds\n", (s64)t->tv_sec,
616 - t->tv_nsec / NSEC_PER_MSEC);
617 + printk_deferred(KERN_INFO "Suspended for %lld.%03lu seconds\n",
618 + (s64)t->tv_sec, t->tv_nsec / NSEC_PER_MSEC);
619 }
620