Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.9/0274-4.9.175-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3351 - (hide annotations) (download)
Tue Jun 18 09:42:04 2019 UTC (5 years ago) by niro
File size: 25218 byte(s)
-linux-4.9.175
1 niro 3351 diff --git a/Makefile b/Makefile
2     index f5836837df15..e52b0579e176 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 174
9     +SUBLEVEL = 175
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm/boot/compressed/efi-header.S b/arch/arm/boot/compressed/efi-header.S
14     index 3f7d1b74c5e0..a17ca8d78656 100644
15     --- a/arch/arm/boot/compressed/efi-header.S
16     +++ b/arch/arm/boot/compressed/efi-header.S
17     @@ -17,7 +17,8 @@
18     @ there.
19     .inst 'M' | ('Z' << 8) | (0x1310 << 16) @ tstne r0, #0x4d000
20     #else
21     - W(mov) r0, r0
22     + AR_CLASS( mov r0, r0 )
23     + M_CLASS( nop.w )
24     #endif
25     .endm
26    
27     diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
28     index 098ab775135f..a30829052a00 100644
29     --- a/arch/x86/events/intel/core.c
30     +++ b/arch/x86/events/intel/core.c
31     @@ -2867,7 +2867,7 @@ static int intel_pmu_hw_config(struct perf_event *event)
32     return ret;
33    
34     if (event->attr.precise_ip) {
35     - if (!event->attr.freq) {
36     + if (!(event->attr.freq || event->attr.wakeup_events)) {
37     event->hw.flags |= PERF_X86_EVENT_AUTO_RELOAD;
38     if (!(event->attr.sample_type &
39     ~intel_pmu_free_running_flags(event)))
40     diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
41     index 10332c24f961..44ef1d66caa6 100644
42     --- a/drivers/block/virtio_blk.c
43     +++ b/drivers/block/virtio_blk.c
44     @@ -392,6 +392,8 @@ static int init_vq(struct virtio_blk *vblk)
45     if (err)
46     num_vqs = 1;
47    
48     + num_vqs = min_t(unsigned int, nr_cpu_ids, num_vqs);
49     +
50     vblk->vqs = kmalloc_array(num_vqs, sizeof(*vblk->vqs), GFP_KERNEL);
51     if (!vblk->vqs)
52     return -ENOMEM;
53     diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
54     index 863d030786e5..e7a6651ceeab 100644
55     --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
56     +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
57     @@ -1473,7 +1473,6 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
58     if (IS_ERR(regmap))
59     ret = PTR_ERR(regmap);
60     if (ret) {
61     - ret = PTR_ERR(regmap);
62     dev_err(dev,
63     "Failed to get system configuration registers: %d\n",
64     ret);
65     @@ -1529,6 +1528,7 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
66     of_node_put(remote);
67    
68     hdmi->ddc_adpt = of_find_i2c_adapter_by_node(i2c_np);
69     + of_node_put(i2c_np);
70     if (!hdmi->ddc_adpt) {
71     dev_err(dev, "Failed to get ddc i2c adapter by node\n");
72     return -EINVAL;
73     diff --git a/drivers/infiniband/hw/hfi1/rc.c b/drivers/infiniband/hw/hfi1/rc.c
74     index e8e0fa58cb71..b08786614c1b 100644
75     --- a/drivers/infiniband/hw/hfi1/rc.c
76     +++ b/drivers/infiniband/hw/hfi1/rc.c
77     @@ -2394,7 +2394,7 @@ send_last:
78     update_ack_queue(qp, next);
79     }
80     e = &qp->s_ack_queue[qp->r_head_ack_queue];
81     - if (e->opcode == OP(RDMA_READ_REQUEST) && e->rdma_sge.mr) {
82     + if (e->rdma_sge.mr) {
83     rvt_put_mr(e->rdma_sge.mr);
84     e->rdma_sge.mr = NULL;
85     }
86     @@ -2469,7 +2469,7 @@ send_last:
87     update_ack_queue(qp, next);
88     }
89     e = &qp->s_ack_queue[qp->r_head_ack_queue];
90     - if (e->opcode == OP(RDMA_READ_REQUEST) && e->rdma_sge.mr) {
91     + if (e->rdma_sge.mr) {
92     rvt_put_mr(e->rdma_sge.mr);
93     e->rdma_sge.mr = NULL;
94     }
95     diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
96     index 157e93421fb8..13bbe5795e4e 100644
97     --- a/drivers/iommu/amd_iommu_init.c
98     +++ b/drivers/iommu/amd_iommu_init.c
99     @@ -318,7 +318,7 @@ static void iommu_write_l2(struct amd_iommu *iommu, u8 address, u32 val)
100     static void iommu_set_exclusion_range(struct amd_iommu *iommu)
101     {
102     u64 start = iommu->exclusion_start & PAGE_MASK;
103     - u64 limit = (start + iommu->exclusion_length) & PAGE_MASK;
104     + u64 limit = (start + iommu->exclusion_length - 1) & PAGE_MASK;
105     u64 entry;
106    
107     if (!iommu->exclusion_start)
108     diff --git a/drivers/scsi/csiostor/csio_scsi.c b/drivers/scsi/csiostor/csio_scsi.c
109     index 89a52b941ea8..894d97e4ace5 100644
110     --- a/drivers/scsi/csiostor/csio_scsi.c
111     +++ b/drivers/scsi/csiostor/csio_scsi.c
112     @@ -1713,8 +1713,11 @@ csio_scsi_err_handler(struct csio_hw *hw, struct csio_ioreq *req)
113     }
114    
115     out:
116     - if (req->nsge > 0)
117     + if (req->nsge > 0) {
118     scsi_dma_unmap(cmnd);
119     + if (req->dcopy && (host_status == DID_OK))
120     + host_status = csio_scsi_copy_to_sgl(hw, req);
121     + }
122    
123     cmnd->result = (((host_status) << 16) | scsi_status);
124     cmnd->scsi_done(cmnd);
125     diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
126     index 7be581f7c35d..1a6f65db615e 100644
127     --- a/drivers/scsi/libsas/sas_expander.c
128     +++ b/drivers/scsi/libsas/sas_expander.c
129     @@ -47,17 +47,16 @@ static void smp_task_timedout(unsigned long _task)
130     unsigned long flags;
131    
132     spin_lock_irqsave(&task->task_state_lock, flags);
133     - if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
134     + if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
135     task->task_state_flags |= SAS_TASK_STATE_ABORTED;
136     + complete(&task->slow_task->completion);
137     + }
138     spin_unlock_irqrestore(&task->task_state_lock, flags);
139     -
140     - complete(&task->slow_task->completion);
141     }
142    
143     static void smp_task_done(struct sas_task *task)
144     {
145     - if (!del_timer(&task->slow_task->timer))
146     - return;
147     + del_timer(&task->slow_task->timer);
148     complete(&task->slow_task->completion);
149     }
150    
151     diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
152     index 9a34afcb1c4c..5c3dfd92ea02 100644
153     --- a/drivers/scsi/qla2xxx/qla_attr.c
154     +++ b/drivers/scsi/qla2xxx/qla_attr.c
155     @@ -345,7 +345,7 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
156     }
157    
158     ha->optrom_region_start = start;
159     - ha->optrom_region_size = start + size;
160     + ha->optrom_region_size = size;
161    
162     ha->optrom_state = QLA_SREADING;
163     ha->optrom_buffer = vmalloc(ha->optrom_region_size);
164     @@ -418,7 +418,7 @@ qla2x00_sysfs_write_optrom_ctl(struct file *filp, struct kobject *kobj,
165     }
166    
167     ha->optrom_region_start = start;
168     - ha->optrom_region_size = start + size;
169     + ha->optrom_region_size = size;
170    
171     ha->optrom_state = QLA_SWRITING;
172     ha->optrom_buffer = vmalloc(ha->optrom_region_size);
173     diff --git a/drivers/staging/greybus/power_supply.c b/drivers/staging/greybus/power_supply.c
174     index e85c988b7034..adea629b8065 100644
175     --- a/drivers/staging/greybus/power_supply.c
176     +++ b/drivers/staging/greybus/power_supply.c
177     @@ -521,7 +521,7 @@ static int gb_power_supply_prop_descriptors_get(struct gb_power_supply *gbpsy)
178    
179     op = gb_operation_create(connection,
180     GB_POWER_SUPPLY_TYPE_GET_PROP_DESCRIPTORS,
181     - sizeof(req), sizeof(*resp) + props_count *
182     + sizeof(*req), sizeof(*resp) + props_count *
183     sizeof(struct gb_power_supply_props_desc),
184     GFP_KERNEL);
185     if (!op)
186     diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
187     index 1e91b803ee4e..73dc5a6c6108 100644
188     --- a/drivers/usb/dwc3/core.c
189     +++ b/drivers/usb/dwc3/core.c
190     @@ -991,7 +991,7 @@ static int dwc3_probe(struct platform_device *pdev)
191     dwc->regs_size = resource_size(res);
192    
193     /* default to highest possible threshold */
194     - lpm_nyet_threshold = 0xff;
195     + lpm_nyet_threshold = 0xf;
196    
197     /* default to -3.5dB de-emphasis */
198     tx_de_emphasis = 1;
199     diff --git a/drivers/usb/serial/f81232.c b/drivers/usb/serial/f81232.c
200     index 972f5a5fe577..1f20fa0a67c0 100644
201     --- a/drivers/usb/serial/f81232.c
202     +++ b/drivers/usb/serial/f81232.c
203     @@ -560,9 +560,12 @@ static int f81232_open(struct tty_struct *tty, struct usb_serial_port *port)
204    
205     static void f81232_close(struct usb_serial_port *port)
206     {
207     + struct f81232_private *port_priv = usb_get_serial_port_data(port);
208     +
209     f81232_port_disable(port);
210     usb_serial_generic_close(port);
211     usb_kill_urb(port->interrupt_in_urb);
212     + flush_work(&port_priv->interrupt_work);
213     }
214    
215     static void f81232_dtr_rts(struct usb_serial_port *port, int on)
216     @@ -656,6 +659,40 @@ static int f81232_port_remove(struct usb_serial_port *port)
217     return 0;
218     }
219    
220     +static int f81232_suspend(struct usb_serial *serial, pm_message_t message)
221     +{
222     + struct usb_serial_port *port = serial->port[0];
223     + struct f81232_private *port_priv = usb_get_serial_port_data(port);
224     + int i;
225     +
226     + for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
227     + usb_kill_urb(port->read_urbs[i]);
228     +
229     + usb_kill_urb(port->interrupt_in_urb);
230     +
231     + if (port_priv)
232     + flush_work(&port_priv->interrupt_work);
233     +
234     + return 0;
235     +}
236     +
237     +static int f81232_resume(struct usb_serial *serial)
238     +{
239     + struct usb_serial_port *port = serial->port[0];
240     + int result;
241     +
242     + if (tty_port_initialized(&port->port)) {
243     + result = usb_submit_urb(port->interrupt_in_urb, GFP_NOIO);
244     + if (result) {
245     + dev_err(&port->dev, "submit interrupt urb failed: %d\n",
246     + result);
247     + return result;
248     + }
249     + }
250     +
251     + return usb_serial_generic_resume(serial);
252     +}
253     +
254     static struct usb_serial_driver f81232_device = {
255     .driver = {
256     .owner = THIS_MODULE,
257     @@ -679,6 +716,8 @@ static struct usb_serial_driver f81232_device = {
258     .read_int_callback = f81232_read_int_callback,
259     .port_probe = f81232_port_probe,
260     .port_remove = f81232_port_remove,
261     + .suspend = f81232_suspend,
262     + .resume = f81232_resume,
263     };
264    
265     static struct usb_serial_driver * const serial_drivers[] = {
266     diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
267     index 13f2c051dbf2..afb4b0bf47b3 100644
268     --- a/drivers/usb/storage/scsiglue.c
269     +++ b/drivers/usb/storage/scsiglue.c
270     @@ -81,6 +81,7 @@ static const char* host_info(struct Scsi_Host *host)
271     static int slave_alloc (struct scsi_device *sdev)
272     {
273     struct us_data *us = host_to_us(sdev->host);
274     + int maxp;
275    
276     /*
277     * Set the INQUIRY transfer length to 36. We don't use any of
278     @@ -90,20 +91,17 @@ static int slave_alloc (struct scsi_device *sdev)
279     sdev->inquiry_len = 36;
280    
281     /*
282     - * USB has unusual DMA-alignment requirements: Although the
283     - * starting address of each scatter-gather element doesn't matter,
284     - * the length of each element except the last must be divisible
285     - * by the Bulk maxpacket value. There's currently no way to
286     - * express this by block-layer constraints, so we'll cop out
287     - * and simply require addresses to be aligned at 512-byte
288     - * boundaries. This is okay since most block I/O involves
289     - * hardware sectors that are multiples of 512 bytes in length,
290     - * and since host controllers up through USB 2.0 have maxpacket
291     - * values no larger than 512.
292     - *
293     - * But it doesn't suffice for Wireless USB, where Bulk maxpacket
294     - * values can be as large as 2048. To make that work properly
295     - * will require changes to the block layer.
296     + * USB has unusual scatter-gather requirements: the length of each
297     + * scatterlist element except the last must be divisible by the
298     + * Bulk maxpacket value. Fortunately this value is always a
299     + * power of 2. Inform the block layer about this requirement.
300     + */
301     + maxp = usb_maxpacket(us->pusb_dev, us->recv_bulk_pipe, 0);
302     + blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
303     +
304     + /*
305     + * Some host controllers may have alignment requirements.
306     + * We'll play it safe by requiring 512-byte alignment always.
307     */
308     blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1));
309    
310     diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
311     index 64af88977b03..97621e5bdad7 100644
312     --- a/drivers/usb/storage/uas.c
313     +++ b/drivers/usb/storage/uas.c
314     @@ -796,24 +796,33 @@ static int uas_slave_alloc(struct scsi_device *sdev)
315     {
316     struct uas_dev_info *devinfo =
317     (struct uas_dev_info *)sdev->host->hostdata;
318     + int maxp;
319    
320     sdev->hostdata = devinfo;
321    
322     /*
323     - * USB has unusual DMA-alignment requirements: Although the
324     - * starting address of each scatter-gather element doesn't matter,
325     - * the length of each element except the last must be divisible
326     - * by the Bulk maxpacket value. There's currently no way to
327     - * express this by block-layer constraints, so we'll cop out
328     - * and simply require addresses to be aligned at 512-byte
329     - * boundaries. This is okay since most block I/O involves
330     - * hardware sectors that are multiples of 512 bytes in length,
331     - * and since host controllers up through USB 2.0 have maxpacket
332     - * values no larger than 512.
333     + * We have two requirements here. We must satisfy the requirements
334     + * of the physical HC and the demands of the protocol, as we
335     + * definitely want no additional memory allocation in this path
336     + * ruling out using bounce buffers.
337     *
338     - * But it doesn't suffice for Wireless USB, where Bulk maxpacket
339     - * values can be as large as 2048. To make that work properly
340     - * will require changes to the block layer.
341     + * For a transmission on USB to continue we must never send
342     + * a package that is smaller than maxpacket. Hence the length of each
343     + * scatterlist element except the last must be divisible by the
344     + * Bulk maxpacket value.
345     + * If the HC does not ensure that through SG,
346     + * the upper layer must do that. We must assume nothing
347     + * about the capabilities off the HC, so we use the most
348     + * pessimistic requirement.
349     + */
350     +
351     + maxp = usb_maxpacket(devinfo->udev, devinfo->data_in_pipe, 0);
352     + blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
353     +
354     + /*
355     + * The protocol has no requirements on alignment in the strict sense.
356     + * Controllers may or may not have alignment restrictions.
357     + * As this is not exported, we use an extremely conservative guess.
358     */
359     blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1));
360    
361     diff --git a/include/linux/kernel.h b/include/linux/kernel.h
362     index 61054f12be7c..d83fc669eeac 100644
363     --- a/include/linux/kernel.h
364     +++ b/include/linux/kernel.h
365     @@ -55,8 +55,8 @@
366    
367     #define u64_to_user_ptr(x) ( \
368     { \
369     - typecheck(u64, x); \
370     - (void __user *)(uintptr_t)x; \
371     + typecheck(u64, (x)); \
372     + (void __user *)(uintptr_t)(x); \
373     } \
374     )
375    
376     diff --git a/include/linux/mm.h b/include/linux/mm.h
377     index 11a5a46ce72b..e3c8d40a18b5 100644
378     --- a/include/linux/mm.h
379     +++ b/include/linux/mm.h
380     @@ -777,6 +777,15 @@ static inline void get_page(struct page *page)
381     get_zone_device_page(page);
382     }
383    
384     +static inline __must_check bool try_get_page(struct page *page)
385     +{
386     + page = compound_head(page);
387     + if (WARN_ON_ONCE(page_ref_count(page) <= 0))
388     + return false;
389     + page_ref_inc(page);
390     + return true;
391     +}
392     +
393     static inline void put_page(struct page *page)
394     {
395     page = compound_head(page);
396     diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
397     index 4931787193c3..57a7dba49d29 100644
398     --- a/include/net/bluetooth/hci_core.h
399     +++ b/include/net/bluetooth/hci_core.h
400     @@ -176,6 +176,9 @@ struct adv_info {
401    
402     #define HCI_MAX_SHORT_NAME_LENGTH 10
403    
404     +/* Min encryption key size to match with SMP */
405     +#define HCI_MIN_ENC_KEY_SIZE 7
406     +
407     /* Default LE RPA expiry time, 15 minutes */
408     #define HCI_DEFAULT_RPA_TIMEOUT (15 * 60)
409    
410     diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
411     index cf94460504bb..be7f489788e2 100644
412     --- a/kernel/irq/manage.c
413     +++ b/kernel/irq/manage.c
414     @@ -332,8 +332,10 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)
415     desc->affinity_notify = notify;
416     raw_spin_unlock_irqrestore(&desc->lock, flags);
417    
418     - if (old_notify)
419     + if (old_notify) {
420     + cancel_work_sync(&old_notify->work);
421     kref_put(&old_notify->kref, old_notify->release);
422     + }
423    
424     return 0;
425     }
426     diff --git a/kernel/time/timer_stats.c b/kernel/time/timer_stats.c
427     index 087204c733eb..c74920f318c5 100644
428     --- a/kernel/time/timer_stats.c
429     +++ b/kernel/time/timer_stats.c
430     @@ -417,7 +417,7 @@ static int __init init_tstats_procfs(void)
431     {
432     struct proc_dir_entry *pe;
433    
434     - pe = proc_create("timer_stats", 0644, NULL, &tstats_fops);
435     + pe = proc_create("timer_stats", 0600, NULL, &tstats_fops);
436     if (!pe)
437     return -ENOMEM;
438     return 0;
439     diff --git a/lib/ubsan.c b/lib/ubsan.c
440     index 60e108c5c173..c652b4a820cc 100644
441     --- a/lib/ubsan.c
442     +++ b/lib/ubsan.c
443     @@ -86,11 +86,13 @@ static bool is_inline_int(struct type_descriptor *type)
444     return bits <= inline_bits;
445     }
446    
447     -static s_max get_signed_val(struct type_descriptor *type, unsigned long val)
448     +static s_max get_signed_val(struct type_descriptor *type, void *val)
449     {
450     if (is_inline_int(type)) {
451     unsigned extra_bits = sizeof(s_max)*8 - type_bit_width(type);
452     - return ((s_max)val) << extra_bits >> extra_bits;
453     + unsigned long ulong_val = (unsigned long)val;
454     +
455     + return ((s_max)ulong_val) << extra_bits >> extra_bits;
456     }
457    
458     if (type_bit_width(type) == 64)
459     @@ -99,15 +101,15 @@ static s_max get_signed_val(struct type_descriptor *type, unsigned long val)
460     return *(s_max *)val;
461     }
462    
463     -static bool val_is_negative(struct type_descriptor *type, unsigned long val)
464     +static bool val_is_negative(struct type_descriptor *type, void *val)
465     {
466     return type_is_signed(type) && get_signed_val(type, val) < 0;
467     }
468    
469     -static u_max get_unsigned_val(struct type_descriptor *type, unsigned long val)
470     +static u_max get_unsigned_val(struct type_descriptor *type, void *val)
471     {
472     if (is_inline_int(type))
473     - return val;
474     + return (unsigned long)val;
475    
476     if (type_bit_width(type) == 64)
477     return *(u64 *)val;
478     @@ -116,7 +118,7 @@ static u_max get_unsigned_val(struct type_descriptor *type, unsigned long val)
479     }
480    
481     static void val_to_string(char *str, size_t size, struct type_descriptor *type,
482     - unsigned long value)
483     + void *value)
484     {
485     if (type_is_int(type)) {
486     if (type_bit_width(type) == 128) {
487     @@ -168,8 +170,8 @@ static void ubsan_epilogue(unsigned long *flags)
488     current->in_ubsan--;
489     }
490    
491     -static void handle_overflow(struct overflow_data *data, unsigned long lhs,
492     - unsigned long rhs, char op)
493     +static void handle_overflow(struct overflow_data *data, void *lhs,
494     + void *rhs, char op)
495     {
496    
497     struct type_descriptor *type = data->type;
498     @@ -196,8 +198,7 @@ static void handle_overflow(struct overflow_data *data, unsigned long lhs,
499     }
500    
501     void __ubsan_handle_add_overflow(struct overflow_data *data,
502     - unsigned long lhs,
503     - unsigned long rhs)
504     + void *lhs, void *rhs)
505     {
506    
507     handle_overflow(data, lhs, rhs, '+');
508     @@ -205,23 +206,21 @@ void __ubsan_handle_add_overflow(struct overflow_data *data,
509     EXPORT_SYMBOL(__ubsan_handle_add_overflow);
510    
511     void __ubsan_handle_sub_overflow(struct overflow_data *data,
512     - unsigned long lhs,
513     - unsigned long rhs)
514     + void *lhs, void *rhs)
515     {
516     handle_overflow(data, lhs, rhs, '-');
517     }
518     EXPORT_SYMBOL(__ubsan_handle_sub_overflow);
519    
520     void __ubsan_handle_mul_overflow(struct overflow_data *data,
521     - unsigned long lhs,
522     - unsigned long rhs)
523     + void *lhs, void *rhs)
524     {
525     handle_overflow(data, lhs, rhs, '*');
526     }
527     EXPORT_SYMBOL(__ubsan_handle_mul_overflow);
528    
529     void __ubsan_handle_negate_overflow(struct overflow_data *data,
530     - unsigned long old_val)
531     + void *old_val)
532     {
533     unsigned long flags;
534     char old_val_str[VALUE_LENGTH];
535     @@ -242,8 +241,7 @@ EXPORT_SYMBOL(__ubsan_handle_negate_overflow);
536    
537    
538     void __ubsan_handle_divrem_overflow(struct overflow_data *data,
539     - unsigned long lhs,
540     - unsigned long rhs)
541     + void *lhs, void *rhs)
542     {
543     unsigned long flags;
544     char rhs_val_str[VALUE_LENGTH];
545     @@ -328,7 +326,7 @@ static void ubsan_type_mismatch_common(struct type_mismatch_data_common *data,
546     }
547    
548     void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
549     - unsigned long ptr)
550     + void *ptr)
551     {
552     struct type_mismatch_data_common common_data = {
553     .location = &data->location,
554     @@ -337,12 +335,12 @@ void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
555     .type_check_kind = data->type_check_kind
556     };
557    
558     - ubsan_type_mismatch_common(&common_data, ptr);
559     + ubsan_type_mismatch_common(&common_data, (unsigned long)ptr);
560     }
561     EXPORT_SYMBOL(__ubsan_handle_type_mismatch);
562    
563     void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data,
564     - unsigned long ptr)
565     + void *ptr)
566     {
567    
568     struct type_mismatch_data_common common_data = {
569     @@ -352,7 +350,7 @@ void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data,
570     .type_check_kind = data->type_check_kind
571     };
572    
573     - ubsan_type_mismatch_common(&common_data, ptr);
574     + ubsan_type_mismatch_common(&common_data, (unsigned long)ptr);
575     }
576     EXPORT_SYMBOL(__ubsan_handle_type_mismatch_v1);
577    
578     @@ -376,7 +374,7 @@ void __ubsan_handle_nonnull_return(struct nonnull_return_data *data)
579     EXPORT_SYMBOL(__ubsan_handle_nonnull_return);
580    
581     void __ubsan_handle_vla_bound_not_positive(struct vla_bound_data *data,
582     - unsigned long bound)
583     + void *bound)
584     {
585     unsigned long flags;
586     char bound_str[VALUE_LENGTH];
587     @@ -393,8 +391,7 @@ void __ubsan_handle_vla_bound_not_positive(struct vla_bound_data *data,
588     }
589     EXPORT_SYMBOL(__ubsan_handle_vla_bound_not_positive);
590    
591     -void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data,
592     - unsigned long index)
593     +void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data, void *index)
594     {
595     unsigned long flags;
596     char index_str[VALUE_LENGTH];
597     @@ -412,7 +409,7 @@ void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data,
598     EXPORT_SYMBOL(__ubsan_handle_out_of_bounds);
599    
600     void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
601     - unsigned long lhs, unsigned long rhs)
602     + void *lhs, void *rhs)
603     {
604     unsigned long flags;
605     struct type_descriptor *rhs_type = data->rhs_type;
606     @@ -463,7 +460,7 @@ void __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
607     EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable);
608    
609     void __ubsan_handle_load_invalid_value(struct invalid_value_data *data,
610     - unsigned long val)
611     + void *val)
612     {
613     unsigned long flags;
614     char val_str[VALUE_LENGTH];
615     diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
616     index cc061495f653..fe4fb0c1fa61 100644
617     --- a/net/bluetooth/hci_conn.c
618     +++ b/net/bluetooth/hci_conn.c
619     @@ -1165,6 +1165,14 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
620     !test_bit(HCI_CONN_ENCRYPT, &conn->flags))
621     return 0;
622    
623     + /* The minimum encryption key size needs to be enforced by the
624     + * host stack before establishing any L2CAP connections. The
625     + * specification in theory allows a minimum of 1, but to align
626     + * BR/EDR and LE transports, a minimum of 7 is chosen.
627     + */
628     + if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
629     + return 0;
630     +
631     return 1;
632     }
633    
634     diff --git a/net/bluetooth/hidp/sock.c b/net/bluetooth/hidp/sock.c
635     index 008ba439bd62..cc80c76177b6 100644
636     --- a/net/bluetooth/hidp/sock.c
637     +++ b/net/bluetooth/hidp/sock.c
638     @@ -76,6 +76,7 @@ static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
639     sockfd_put(csock);
640     return err;
641     }
642     + ca.name[sizeof(ca.name)-1] = 0;
643    
644     err = hidp_connection_add(&ca, csock, isock);
645     if (!err && copy_to_user(argp, &ca, sizeof(ca)))
646     diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c
647     index 84f86745c30e..828bc615a190 100644
648     --- a/sound/soc/codecs/cs4270.c
649     +++ b/sound/soc/codecs/cs4270.c
650     @@ -643,6 +643,7 @@ static const struct regmap_config cs4270_regmap = {
651     .reg_defaults = cs4270_reg_defaults,
652     .num_reg_defaults = ARRAY_SIZE(cs4270_reg_defaults),
653     .cache_type = REGCACHE_RBTREE,
654     + .write_flag_mask = CS4270_I2C_INCR,
655    
656     .readable_reg = cs4270_reg_is_readable,
657     .volatile_reg = cs4270_reg_is_volatile,
658     diff --git a/sound/soc/codecs/nau8810.c b/sound/soc/codecs/nau8810.c
659     index e45518629968..2234d0c04165 100644
660     --- a/sound/soc/codecs/nau8810.c
661     +++ b/sound/soc/codecs/nau8810.c
662     @@ -414,9 +414,9 @@ static const struct snd_soc_dapm_widget nau8810_dapm_widgets[] = {
663     SND_SOC_DAPM_MIXER("Mono Mixer", NAU8810_REG_POWER3,
664     NAU8810_MOUTMX_EN_SFT, 0, &nau8810_mono_mixer_controls[0],
665     ARRAY_SIZE(nau8810_mono_mixer_controls)),
666     - SND_SOC_DAPM_DAC("DAC", "HiFi Playback", NAU8810_REG_POWER3,
667     + SND_SOC_DAPM_DAC("DAC", "Playback", NAU8810_REG_POWER3,
668     NAU8810_DAC_EN_SFT, 0),
669     - SND_SOC_DAPM_ADC("ADC", "HiFi Capture", NAU8810_REG_POWER2,
670     + SND_SOC_DAPM_ADC("ADC", "Capture", NAU8810_REG_POWER2,
671     NAU8810_ADC_EN_SFT, 0),
672     SND_SOC_DAPM_PGA("SpkN Out", NAU8810_REG_POWER3,
673     NAU8810_NSPK_EN_SFT, 0, NULL, 0),
674     diff --git a/sound/soc/codecs/tlv320aic32x4.c b/sound/soc/codecs/tlv320aic32x4.c
675     index 28fdfc5ec544..c27e3476848a 100644
676     --- a/sound/soc/codecs/tlv320aic32x4.c
677     +++ b/sound/soc/codecs/tlv320aic32x4.c
678     @@ -316,6 +316,8 @@ static const struct snd_soc_dapm_widget aic32x4_dapm_widgets[] = {
679     SND_SOC_DAPM_INPUT("IN2_R"),
680     SND_SOC_DAPM_INPUT("IN3_L"),
681     SND_SOC_DAPM_INPUT("IN3_R"),
682     + SND_SOC_DAPM_INPUT("CM_L"),
683     + SND_SOC_DAPM_INPUT("CM_R"),
684     };
685    
686     static const struct snd_soc_dapm_route aic32x4_dapm_routes[] = {
687     diff --git a/sound/soc/intel/common/sst-firmware.c b/sound/soc/intel/common/sst-firmware.c
688     index 79a9fdf94d38..582b30a5118d 100644
689     --- a/sound/soc/intel/common/sst-firmware.c
690     +++ b/sound/soc/intel/common/sst-firmware.c
691     @@ -1252,11 +1252,15 @@ struct sst_dsp *sst_dsp_new(struct device *dev,
692     goto irq_err;
693    
694     err = sst_dma_new(sst);
695     - if (err)
696     - dev_warn(dev, "sst_dma_new failed %d\n", err);
697     + if (err) {
698     + dev_err(dev, "sst_dma_new failed %d\n", err);
699     + goto dma_err;
700     + }
701    
702     return sst;
703    
704     +dma_err:
705     + free_irq(sst->irq, sst);
706     irq_err:
707     if (sst->ops->free)
708     sst->ops->free(sst);
709     diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
710     index b111ecda6439..1dbcdc99dbe3 100644
711     --- a/sound/soc/soc-pcm.c
712     +++ b/sound/soc/soc-pcm.c
713     @@ -894,10 +894,13 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
714     codec_params = *params;
715    
716     /* fixup params based on TDM slot masks */
717     - if (codec_dai->tx_mask)
718     + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
719     + codec_dai->tx_mask)
720     soc_pcm_codec_params_fixup(&codec_params,
721     codec_dai->tx_mask);
722     - if (codec_dai->rx_mask)
723     +
724     + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE &&
725     + codec_dai->rx_mask)
726     soc_pcm_codec_params_fixup(&codec_params,
727     codec_dai->rx_mask);
728