diff -druNp --no-dereference linux-libre-4.9.174-gnu/arch/arm/boot/compressed/efi-header.S linux-libre-4.9.175-gnu/arch/arm/boot/compressed/efi-header.S
--- linux-libre-4.9.174-gnu/arch/arm/boot/compressed/efi-header.S	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/arch/arm/boot/compressed/efi-header.S	2019-05-10 11:52:11.000000000 -0400
@@ -17,7 +17,8 @@
 		@ there.
 		.inst	'M' | ('Z' << 8) | (0x1310 << 16)   @ tstne r0, #0x4d000
 #else
-		W(mov)	r0, r0
+ AR_CLASS(	mov	r0, r0		)
+  M_CLASS(	nop.w			)
 #endif
 		.endm
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/arch/x86/events/intel/core.c linux-libre-4.9.175-gnu/arch/x86/events/intel/core.c
--- linux-libre-4.9.174-gnu/arch/x86/events/intel/core.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/arch/x86/events/intel/core.c	2019-05-10 11:52:11.000000000 -0400
@@ -2867,7 +2867,7 @@ static int intel_pmu_hw_config(struct pe
 		return ret;
 
 	if (event->attr.precise_ip) {
-		if (!event->attr.freq) {
+		if (!(event->attr.freq || event->attr.wakeup_events)) {
 			event->hw.flags |= PERF_X86_EVENT_AUTO_RELOAD;
 			if (!(event->attr.sample_type &
 			      ~intel_pmu_free_running_flags(event)))
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/block/virtio_blk.c linux-libre-4.9.175-gnu/drivers/block/virtio_blk.c
--- linux-libre-4.9.174-gnu/drivers/block/virtio_blk.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/block/virtio_blk.c	2019-05-10 11:52:11.000000000 -0400
@@ -392,6 +392,8 @@ static int init_vq(struct virtio_blk *vb
 	if (err)
 		num_vqs = 1;
 
+	num_vqs = min_t(unsigned int, nr_cpu_ids, num_vqs);
+
 	vblk->vqs = kmalloc_array(num_vqs, sizeof(*vblk->vqs), GFP_KERNEL);
 	if (!vblk->vqs)
 		return -ENOMEM;
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/gpu/drm/mediatek/mtk_hdmi.c linux-libre-4.9.175-gnu/drivers/gpu/drm/mediatek/mtk_hdmi.c
--- linux-libre-4.9.174-gnu/drivers/gpu/drm/mediatek/mtk_hdmi.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/gpu/drm/mediatek/mtk_hdmi.c	2019-05-10 11:52:11.000000000 -0400
@@ -1473,7 +1473,6 @@ static int mtk_hdmi_dt_parse_pdata(struc
 	if (IS_ERR(regmap))
 		ret = PTR_ERR(regmap);
 	if (ret) {
-		ret = PTR_ERR(regmap);
 		dev_err(dev,
 			"Failed to get system configuration registers: %d\n",
 			ret);
@@ -1529,6 +1528,7 @@ static int mtk_hdmi_dt_parse_pdata(struc
 	of_node_put(remote);
 
 	hdmi->ddc_adpt = of_find_i2c_adapter_by_node(i2c_np);
+	of_node_put(i2c_np);
 	if (!hdmi->ddc_adpt) {
 		dev_err(dev, "Failed to get ddc i2c adapter by node\n");
 		return -EINVAL;
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/infiniband/hw/hfi1/rc.c linux-libre-4.9.175-gnu/drivers/infiniband/hw/hfi1/rc.c
--- linux-libre-4.9.174-gnu/drivers/infiniband/hw/hfi1/rc.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/infiniband/hw/hfi1/rc.c	2019-05-10 11:52:11.000000000 -0400
@@ -2394,7 +2394,7 @@ send_last:
 			update_ack_queue(qp, next);
 		}
 		e = &qp->s_ack_queue[qp->r_head_ack_queue];
-		if (e->opcode == OP(RDMA_READ_REQUEST) && e->rdma_sge.mr) {
+		if (e->rdma_sge.mr) {
 			rvt_put_mr(e->rdma_sge.mr);
 			e->rdma_sge.mr = NULL;
 		}
@@ -2469,7 +2469,7 @@ send_last:
 			update_ack_queue(qp, next);
 		}
 		e = &qp->s_ack_queue[qp->r_head_ack_queue];
-		if (e->opcode == OP(RDMA_READ_REQUEST) && e->rdma_sge.mr) {
+		if (e->rdma_sge.mr) {
 			rvt_put_mr(e->rdma_sge.mr);
 			e->rdma_sge.mr = NULL;
 		}
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/iommu/amd_iommu_init.c linux-libre-4.9.175-gnu/drivers/iommu/amd_iommu_init.c
--- linux-libre-4.9.174-gnu/drivers/iommu/amd_iommu_init.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/iommu/amd_iommu_init.c	2019-05-10 11:52:11.000000000 -0400
@@ -318,7 +318,7 @@ static void iommu_write_l2(struct amd_io
 static void iommu_set_exclusion_range(struct amd_iommu *iommu)
 {
 	u64 start = iommu->exclusion_start & PAGE_MASK;
-	u64 limit = (start + iommu->exclusion_length) & PAGE_MASK;
+	u64 limit = (start + iommu->exclusion_length - 1) & PAGE_MASK;
 	u64 entry;
 
 	if (!iommu->exclusion_start)
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/scsi/csiostor/csio_scsi.c linux-libre-4.9.175-gnu/drivers/scsi/csiostor/csio_scsi.c
--- linux-libre-4.9.174-gnu/drivers/scsi/csiostor/csio_scsi.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/scsi/csiostor/csio_scsi.c	2019-05-10 11:52:11.000000000 -0400
@@ -1713,8 +1713,11 @@ csio_scsi_err_handler(struct csio_hw *hw
 	}
 
 out:
-	if (req->nsge > 0)
+	if (req->nsge > 0) {
 		scsi_dma_unmap(cmnd);
+		if (req->dcopy && (host_status == DID_OK))
+			host_status = csio_scsi_copy_to_sgl(hw, req);
+	}
 
 	cmnd->result = (((host_status) << 16) | scsi_status);
 	cmnd->scsi_done(cmnd);
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/scsi/libsas/sas_expander.c linux-libre-4.9.175-gnu/drivers/scsi/libsas/sas_expander.c
--- linux-libre-4.9.174-gnu/drivers/scsi/libsas/sas_expander.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/scsi/libsas/sas_expander.c	2019-05-10 11:52:11.000000000 -0400
@@ -47,17 +47,16 @@ static void smp_task_timedout(unsigned l
 	unsigned long flags;
 
 	spin_lock_irqsave(&task->task_state_lock, flags);
-	if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
+	if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
 		task->task_state_flags |= SAS_TASK_STATE_ABORTED;
+		complete(&task->slow_task->completion);
+	}
 	spin_unlock_irqrestore(&task->task_state_lock, flags);
-
-	complete(&task->slow_task->completion);
 }
 
 static void smp_task_done(struct sas_task *task)
 {
-	if (!del_timer(&task->slow_task->timer))
-		return;
+	del_timer(&task->slow_task->timer);
 	complete(&task->slow_task->completion);
 }
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/scsi/qla2xxx/qla_attr.c linux-libre-4.9.175-gnu/drivers/scsi/qla2xxx/qla_attr.c
--- linux-libre-4.9.174-gnu/drivers/scsi/qla2xxx/qla_attr.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/scsi/qla2xxx/qla_attr.c	2019-05-10 11:52:11.000000000 -0400
@@ -345,7 +345,7 @@ qla2x00_sysfs_write_optrom_ctl(struct fi
 		}
 
 		ha->optrom_region_start = start;
-		ha->optrom_region_size = start + size;
+		ha->optrom_region_size = size;
 
 		ha->optrom_state = QLA_SREADING;
 		ha->optrom_buffer = vmalloc(ha->optrom_region_size);
@@ -418,7 +418,7 @@ qla2x00_sysfs_write_optrom_ctl(struct fi
 		}
 
 		ha->optrom_region_start = start;
-		ha->optrom_region_size = start + size;
+		ha->optrom_region_size = size;
 
 		ha->optrom_state = QLA_SWRITING;
 		ha->optrom_buffer = vmalloc(ha->optrom_region_size);
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/staging/greybus/power_supply.c linux-libre-4.9.175-gnu/drivers/staging/greybus/power_supply.c
--- linux-libre-4.9.174-gnu/drivers/staging/greybus/power_supply.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/staging/greybus/power_supply.c	2019-05-10 11:52:11.000000000 -0400
@@ -521,7 +521,7 @@ static int gb_power_supply_prop_descript
 
 	op = gb_operation_create(connection,
 				 GB_POWER_SUPPLY_TYPE_GET_PROP_DESCRIPTORS,
-				 sizeof(req), sizeof(*resp) + props_count *
+				 sizeof(*req), sizeof(*resp) + props_count *
 				 sizeof(struct gb_power_supply_props_desc),
 				 GFP_KERNEL);
 	if (!op)
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/usb/dwc3/core.c linux-libre-4.9.175-gnu/drivers/usb/dwc3/core.c
--- linux-libre-4.9.174-gnu/drivers/usb/dwc3/core.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/usb/dwc3/core.c	2019-05-10 11:52:11.000000000 -0400
@@ -991,7 +991,7 @@ static int dwc3_probe(struct platform_de
 	dwc->regs_size	= resource_size(res);
 
 	/* default to highest possible threshold */
-	lpm_nyet_threshold = 0xff;
+	lpm_nyet_threshold = 0xf;
 
 	/* default to -3.5dB de-emphasis */
 	tx_de_emphasis = 1;
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/usb/serial/f81232.c linux-libre-4.9.175-gnu/drivers/usb/serial/f81232.c
--- linux-libre-4.9.174-gnu/drivers/usb/serial/f81232.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/usb/serial/f81232.c	2019-05-10 11:52:11.000000000 -0400
@@ -560,9 +560,12 @@ static int f81232_open(struct tty_struct
 
 static void f81232_close(struct usb_serial_port *port)
 {
+	struct f81232_private *port_priv = usb_get_serial_port_data(port);
+
 	f81232_port_disable(port);
 	usb_serial_generic_close(port);
 	usb_kill_urb(port->interrupt_in_urb);
+	flush_work(&port_priv->interrupt_work);
 }
 
 static void f81232_dtr_rts(struct usb_serial_port *port, int on)
@@ -656,6 +659,40 @@ static int f81232_port_remove(struct usb
 	return 0;
 }
 
+static int f81232_suspend(struct usb_serial *serial, pm_message_t message)
+{
+	struct usb_serial_port *port = serial->port[0];
+	struct f81232_private *port_priv = usb_get_serial_port_data(port);
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(port->read_urbs); ++i)
+		usb_kill_urb(port->read_urbs[i]);
+
+	usb_kill_urb(port->interrupt_in_urb);
+
+	if (port_priv)
+		flush_work(&port_priv->interrupt_work);
+
+	return 0;
+}
+
+static int f81232_resume(struct usb_serial *serial)
+{
+	struct usb_serial_port *port = serial->port[0];
+	int result;
+
+	if (tty_port_initialized(&port->port)) {
+		result = usb_submit_urb(port->interrupt_in_urb, GFP_NOIO);
+		if (result) {
+			dev_err(&port->dev, "submit interrupt urb failed: %d\n",
+					result);
+			return result;
+		}
+	}
+
+	return usb_serial_generic_resume(serial);
+}
+
 static struct usb_serial_driver f81232_device = {
 	.driver = {
 		.owner =	THIS_MODULE,
@@ -679,6 +716,8 @@ static struct usb_serial_driver f81232_d
 	.read_int_callback =	f81232_read_int_callback,
 	.port_probe =		f81232_port_probe,
 	.port_remove =		f81232_port_remove,
+	.suspend =		f81232_suspend,
+	.resume =		f81232_resume,
 };
 
 static struct usb_serial_driver * const serial_drivers[] = {
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/usb/storage/scsiglue.c linux-libre-4.9.175-gnu/drivers/usb/storage/scsiglue.c
--- linux-libre-4.9.174-gnu/drivers/usb/storage/scsiglue.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/usb/storage/scsiglue.c	2019-05-10 11:52:11.000000000 -0400
@@ -81,6 +81,7 @@ static const char* host_info(struct Scsi
 static int slave_alloc (struct scsi_device *sdev)
 {
 	struct us_data *us = host_to_us(sdev->host);
+	int maxp;
 
 	/*
 	 * Set the INQUIRY transfer length to 36.  We don't use any of
@@ -90,20 +91,17 @@ static int slave_alloc (struct scsi_devi
 	sdev->inquiry_len = 36;
 
 	/*
-	 * USB has unusual DMA-alignment requirements: Although the
-	 * starting address of each scatter-gather element doesn't matter,
-	 * the length of each element except the last must be divisible
-	 * by the Bulk maxpacket value.  There's currently no way to
-	 * express this by block-layer constraints, so we'll cop out
-	 * and simply require addresses to be aligned at 512-byte
-	 * boundaries.  This is okay since most block I/O involves
-	 * hardware sectors that are multiples of 512 bytes in length,
-	 * and since host controllers up through USB 2.0 have maxpacket
-	 * values no larger than 512.
-	 *
-	 * But it doesn't suffice for Wireless USB, where Bulk maxpacket
-	 * values can be as large as 2048.  To make that work properly
-	 * will require changes to the block layer.
+	 * USB has unusual scatter-gather requirements: the length of each
+	 * scatterlist element except the last must be divisible by the
+	 * Bulk maxpacket value.  Fortunately this value is always a
+	 * power of 2.  Inform the block layer about this requirement.
+	 */
+	maxp = usb_maxpacket(us->pusb_dev, us->recv_bulk_pipe, 0);
+	blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
+
+	/*
+	 * Some host controllers may have alignment requirements.
+	 * We'll play it safe by requiring 512-byte alignment always.
 	 */
 	blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1));
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/drivers/usb/storage/uas.c linux-libre-4.9.175-gnu/drivers/usb/storage/uas.c
--- linux-libre-4.9.174-gnu/drivers/usb/storage/uas.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/drivers/usb/storage/uas.c	2019-05-10 11:52:11.000000000 -0400
@@ -796,24 +796,33 @@ static int uas_slave_alloc(struct scsi_d
 {
 	struct uas_dev_info *devinfo =
 		(struct uas_dev_info *)sdev->host->hostdata;
+	int maxp;
 
 	sdev->hostdata = devinfo;
 
 	/*
-	 * USB has unusual DMA-alignment requirements: Although the
-	 * starting address of each scatter-gather element doesn't matter,
-	 * the length of each element except the last must be divisible
-	 * by the Bulk maxpacket value.  There's currently no way to
-	 * express this by block-layer constraints, so we'll cop out
-	 * and simply require addresses to be aligned at 512-byte
-	 * boundaries.  This is okay since most block I/O involves
-	 * hardware sectors that are multiples of 512 bytes in length,
-	 * and since host controllers up through USB 2.0 have maxpacket
-	 * values no larger than 512.
+	 * We have two requirements here. We must satisfy the requirements
+	 * of the physical HC and the demands of the protocol, as we
+	 * definitely want no additional memory allocation in this path
+	 * ruling out using bounce buffers.
 	 *
-	 * But it doesn't suffice for Wireless USB, where Bulk maxpacket
-	 * values can be as large as 2048.  To make that work properly
-	 * will require changes to the block layer.
+	 * For a transmission on USB to continue we must never send
+	 * a package that is smaller than maxpacket. Hence the length of each
+         * scatterlist element except the last must be divisible by the
+         * Bulk maxpacket value.
+	 * If the HC does not ensure that through SG,
+	 * the upper layer must do that. We must assume nothing
+	 * about the capabilities off the HC, so we use the most
+	 * pessimistic requirement.
+	 */
+
+	maxp = usb_maxpacket(devinfo->udev, devinfo->data_in_pipe, 0);
+	blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
+
+	/*
+	 * The protocol has no requirements on alignment in the strict sense.
+	 * Controllers may or may not have alignment restrictions.
+	 * As this is not exported, we use an extremely conservative guess.
 	 */
 	blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1));
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/include/linux/kernel.h linux-libre-4.9.175-gnu/include/linux/kernel.h
--- linux-libre-4.9.174-gnu/include/linux/kernel.h	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/include/linux/kernel.h	2019-05-10 11:52:11.000000000 -0400
@@ -55,8 +55,8 @@
 
 #define u64_to_user_ptr(x) (		\
 {					\
-	typecheck(u64, x);		\
-	(void __user *)(uintptr_t)x;	\
+	typecheck(u64, (x));		\
+	(void __user *)(uintptr_t)(x);	\
 }					\
 )
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/include/linux/mm.h linux-libre-4.9.175-gnu/include/linux/mm.h
--- linux-libre-4.9.174-gnu/include/linux/mm.h	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/include/linux/mm.h	2019-05-10 11:52:11.000000000 -0400
@@ -777,6 +777,15 @@ static inline void get_page(struct page
 		get_zone_device_page(page);
 }
 
+static inline __must_check bool try_get_page(struct page *page)
+{
+	page = compound_head(page);
+	if (WARN_ON_ONCE(page_ref_count(page) <= 0))
+		return false;
+	page_ref_inc(page);
+	return true;
+}
+
 static inline void put_page(struct page *page)
 {
 	page = compound_head(page);
diff -druNp --no-dereference linux-libre-4.9.174-gnu/include/net/bluetooth/hci_core.h linux-libre-4.9.175-gnu/include/net/bluetooth/hci_core.h
--- linux-libre-4.9.174-gnu/include/net/bluetooth/hci_core.h	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/include/net/bluetooth/hci_core.h	2019-05-10 11:52:11.000000000 -0400
@@ -176,6 +176,9 @@ struct adv_info {
 
 #define HCI_MAX_SHORT_NAME_LENGTH	10
 
+/* Min encryption key size to match with SMP */
+#define HCI_MIN_ENC_KEY_SIZE		7
+
 /* Default LE RPA expiry time, 15 minutes */
 #define HCI_DEFAULT_RPA_TIMEOUT		(15 * 60)
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/kernel/irq/manage.c linux-libre-4.9.175-gnu/kernel/irq/manage.c
--- linux-libre-4.9.174-gnu/kernel/irq/manage.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/kernel/irq/manage.c	2019-05-10 11:52:11.000000000 -0400
@@ -332,8 +332,10 @@ irq_set_affinity_notifier(unsigned int i
 	desc->affinity_notify = notify;
 	raw_spin_unlock_irqrestore(&desc->lock, flags);
 
-	if (old_notify)
+	if (old_notify) {
+		cancel_work_sync(&old_notify->work);
 		kref_put(&old_notify->kref, old_notify->release);
+	}
 
 	return 0;
 }
diff -druNp --no-dereference linux-libre-4.9.174-gnu/kernel/time/timer_stats.c linux-libre-4.9.175-gnu/kernel/time/timer_stats.c
--- linux-libre-4.9.174-gnu/kernel/time/timer_stats.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/kernel/time/timer_stats.c	2019-05-10 11:52:11.000000000 -0400
@@ -417,7 +417,7 @@ static int __init init_tstats_procfs(voi
 {
 	struct proc_dir_entry *pe;
 
-	pe = proc_create("timer_stats", 0644, NULL, &tstats_fops);
+	pe = proc_create("timer_stats", 0600, NULL, &tstats_fops);
 	if (!pe)
 		return -ENOMEM;
 	return 0;
diff -druNp --no-dereference linux-libre-4.9.174-gnu/lib/ubsan.c linux-libre-4.9.175-gnu/lib/ubsan.c
--- linux-libre-4.9.174-gnu/lib/ubsan.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/lib/ubsan.c	2019-05-10 11:52:11.000000000 -0400
@@ -86,11 +86,13 @@ static bool is_inline_int(struct type_de
 	return bits <= inline_bits;
 }
 
-static s_max get_signed_val(struct type_descriptor *type, unsigned long val)
+static s_max get_signed_val(struct type_descriptor *type, void *val)
 {
 	if (is_inline_int(type)) {
 		unsigned extra_bits = sizeof(s_max)*8 - type_bit_width(type);
-		return ((s_max)val) << extra_bits >> extra_bits;
+		unsigned long ulong_val = (unsigned long)val;
+
+		return ((s_max)ulong_val) << extra_bits >> extra_bits;
 	}
 
 	if (type_bit_width(type) == 64)
@@ -99,15 +101,15 @@ static s_max get_signed_val(struct type_
 	return *(s_max *)val;
 }
 
-static bool val_is_negative(struct type_descriptor *type, unsigned long val)
+static bool val_is_negative(struct type_descriptor *type, void *val)
 {
 	return type_is_signed(type) && get_signed_val(type, val) < 0;
 }
 
-static u_max get_unsigned_val(struct type_descriptor *type, unsigned long val)
+static u_max get_unsigned_val(struct type_descriptor *type, void *val)
 {
 	if (is_inline_int(type))
-		return val;
+		return (unsigned long)val;
 
 	if (type_bit_width(type) == 64)
 		return *(u64 *)val;
@@ -116,7 +118,7 @@ static u_max get_unsigned_val(struct typ
 }
 
 static void val_to_string(char *str, size_t size, struct type_descriptor *type,
-	unsigned long value)
+			void *value)
 {
 	if (type_is_int(type)) {
 		if (type_bit_width(type) == 128) {
@@ -168,8 +170,8 @@ static void ubsan_epilogue(unsigned long
 	current->in_ubsan--;
 }
 
-static void handle_overflow(struct overflow_data *data, unsigned long lhs,
-			unsigned long rhs, char op)
+static void handle_overflow(struct overflow_data *data, void *lhs,
+			void *rhs, char op)
 {
 
 	struct type_descriptor *type = data->type;
@@ -196,8 +198,7 @@ static void handle_overflow(struct overf
 }
 
 void __ubsan_handle_add_overflow(struct overflow_data *data,
-				unsigned long lhs,
-				unsigned long rhs)
+				void *lhs, void *rhs)
 {
 
 	handle_overflow(data, lhs, rhs, '+');
@@ -205,23 +206,21 @@ void __ubsan_handle_add_overflow(struct
 EXPORT_SYMBOL(__ubsan_handle_add_overflow);
 
 void __ubsan_handle_sub_overflow(struct overflow_data *data,
-				unsigned long lhs,
-				unsigned long rhs)
+				void *lhs, void *rhs)
 {
 	handle_overflow(data, lhs, rhs, '-');
 }
 EXPORT_SYMBOL(__ubsan_handle_sub_overflow);
 
 void __ubsan_handle_mul_overflow(struct overflow_data *data,
-				unsigned long lhs,
-				unsigned long rhs)
+				void *lhs, void *rhs)
 {
 	handle_overflow(data, lhs, rhs, '*');
 }
 EXPORT_SYMBOL(__ubsan_handle_mul_overflow);
 
 void __ubsan_handle_negate_overflow(struct overflow_data *data,
-				unsigned long old_val)
+				void *old_val)
 {
 	unsigned long flags;
 	char old_val_str[VALUE_LENGTH];
@@ -242,8 +241,7 @@ EXPORT_SYMBOL(__ubsan_handle_negate_over
 
 
 void __ubsan_handle_divrem_overflow(struct overflow_data *data,
-				unsigned long lhs,
-				unsigned long rhs)
+				void *lhs, void *rhs)
 {
 	unsigned long flags;
 	char rhs_val_str[VALUE_LENGTH];
@@ -328,7 +326,7 @@ static void ubsan_type_mismatch_common(s
 }
 
 void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
-				unsigned long ptr)
+				void *ptr)
 {
 	struct type_mismatch_data_common common_data = {
 		.location = &data->location,
@@ -337,12 +335,12 @@ void __ubsan_handle_type_mismatch(struct
 		.type_check_kind = data->type_check_kind
 	};
 
-	ubsan_type_mismatch_common(&common_data, ptr);
+	ubsan_type_mismatch_common(&common_data, (unsigned long)ptr);
 }
 EXPORT_SYMBOL(__ubsan_handle_type_mismatch);
 
 void __ubsan_handle_type_mismatch_v1(struct type_mismatch_data_v1 *data,
-				unsigned long ptr)
+				void *ptr)
 {
 
 	struct type_mismatch_data_common common_data = {
@@ -352,7 +350,7 @@ void __ubsan_handle_type_mismatch_v1(str
 		.type_check_kind = data->type_check_kind
 	};
 
-	ubsan_type_mismatch_common(&common_data, ptr);
+	ubsan_type_mismatch_common(&common_data, (unsigned long)ptr);
 }
 EXPORT_SYMBOL(__ubsan_handle_type_mismatch_v1);
 
@@ -376,7 +374,7 @@ void __ubsan_handle_nonnull_return(struc
 EXPORT_SYMBOL(__ubsan_handle_nonnull_return);
 
 void __ubsan_handle_vla_bound_not_positive(struct vla_bound_data *data,
-					unsigned long bound)
+					void *bound)
 {
 	unsigned long flags;
 	char bound_str[VALUE_LENGTH];
@@ -393,8 +391,7 @@ void __ubsan_handle_vla_bound_not_positi
 }
 EXPORT_SYMBOL(__ubsan_handle_vla_bound_not_positive);
 
-void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data,
-				unsigned long index)
+void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data, void *index)
 {
 	unsigned long flags;
 	char index_str[VALUE_LENGTH];
@@ -412,7 +409,7 @@ void __ubsan_handle_out_of_bounds(struct
 EXPORT_SYMBOL(__ubsan_handle_out_of_bounds);
 
 void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
-					unsigned long lhs, unsigned long rhs)
+					void *lhs, void *rhs)
 {
 	unsigned long flags;
 	struct type_descriptor *rhs_type = data->rhs_type;
@@ -463,7 +460,7 @@ void __ubsan_handle_builtin_unreachable(
 EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable);
 
 void __ubsan_handle_load_invalid_value(struct invalid_value_data *data,
-				unsigned long val)
+				void *val)
 {
 	unsigned long flags;
 	char val_str[VALUE_LENGTH];
diff -druNp --no-dereference linux-libre-4.9.174-gnu/Makefile linux-libre-4.9.175-gnu/Makefile
--- linux-libre-4.9.174-gnu/Makefile	2019-05-08 10:23:43.000000000 -0400
+++ linux-libre-4.9.175-gnu/Makefile	2019-05-10 16:29:20.000000000 -0400
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 9
-SUBLEVEL = 174
+SUBLEVEL = 175
 EXTRAVERSION = -gnu
 NAME = Roaring Lionus
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/net/bluetooth/hci_conn.c linux-libre-4.9.175-gnu/net/bluetooth/hci_conn.c
--- linux-libre-4.9.174-gnu/net/bluetooth/hci_conn.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/net/bluetooth/hci_conn.c	2019-05-10 11:52:11.000000000 -0400
@@ -1165,6 +1165,14 @@ int hci_conn_check_link_mode(struct hci_
 	    !test_bit(HCI_CONN_ENCRYPT, &conn->flags))
 		return 0;
 
+	/* The minimum encryption key size needs to be enforced by the
+	 * host stack before establishing any L2CAP connections. The
+	 * specification in theory allows a minimum of 1, but to align
+	 * BR/EDR and LE transports, a minimum of 7 is chosen.
+	 */
+	if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
+		return 0;
+
 	return 1;
 }
 
diff -druNp --no-dereference linux-libre-4.9.174-gnu/net/bluetooth/hidp/sock.c linux-libre-4.9.175-gnu/net/bluetooth/hidp/sock.c
--- linux-libre-4.9.174-gnu/net/bluetooth/hidp/sock.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/net/bluetooth/hidp/sock.c	2019-05-10 11:52:11.000000000 -0400
@@ -76,6 +76,7 @@ static int hidp_sock_ioctl(struct socket
 			sockfd_put(csock);
 			return err;
 		}
+		ca.name[sizeof(ca.name)-1] = 0;
 
 		err = hidp_connection_add(&ca, csock, isock);
 		if (!err && copy_to_user(argp, &ca, sizeof(ca)))
diff -druNp --no-dereference linux-libre-4.9.174-gnu/sound/soc/codecs/cs4270.c linux-libre-4.9.175-gnu/sound/soc/codecs/cs4270.c
--- linux-libre-4.9.174-gnu/sound/soc/codecs/cs4270.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/sound/soc/codecs/cs4270.c	2019-05-10 11:52:11.000000000 -0400
@@ -643,6 +643,7 @@ static const struct regmap_config cs4270
 	.reg_defaults =		cs4270_reg_defaults,
 	.num_reg_defaults =	ARRAY_SIZE(cs4270_reg_defaults),
 	.cache_type =		REGCACHE_RBTREE,
+	.write_flag_mask =	CS4270_I2C_INCR,
 
 	.readable_reg =		cs4270_reg_is_readable,
 	.volatile_reg =		cs4270_reg_is_volatile,
diff -druNp --no-dereference linux-libre-4.9.174-gnu/sound/soc/codecs/nau8810.c linux-libre-4.9.175-gnu/sound/soc/codecs/nau8810.c
--- linux-libre-4.9.174-gnu/sound/soc/codecs/nau8810.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/sound/soc/codecs/nau8810.c	2019-05-10 11:52:11.000000000 -0400
@@ -414,9 +414,9 @@ static const struct snd_soc_dapm_widget
 	SND_SOC_DAPM_MIXER("Mono Mixer", NAU8810_REG_POWER3,
 		NAU8810_MOUTMX_EN_SFT, 0, &nau8810_mono_mixer_controls[0],
 		ARRAY_SIZE(nau8810_mono_mixer_controls)),
-	SND_SOC_DAPM_DAC("DAC", "HiFi Playback", NAU8810_REG_POWER3,
+	SND_SOC_DAPM_DAC("DAC", "Playback", NAU8810_REG_POWER3,
 		NAU8810_DAC_EN_SFT, 0),
-	SND_SOC_DAPM_ADC("ADC", "HiFi Capture", NAU8810_REG_POWER2,
+	SND_SOC_DAPM_ADC("ADC", "Capture", NAU8810_REG_POWER2,
 		NAU8810_ADC_EN_SFT, 0),
 	SND_SOC_DAPM_PGA("SpkN Out", NAU8810_REG_POWER3,
 		NAU8810_NSPK_EN_SFT, 0, NULL, 0),
diff -druNp --no-dereference linux-libre-4.9.174-gnu/sound/soc/codecs/tlv320aic32x4.c linux-libre-4.9.175-gnu/sound/soc/codecs/tlv320aic32x4.c
--- linux-libre-4.9.174-gnu/sound/soc/codecs/tlv320aic32x4.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/sound/soc/codecs/tlv320aic32x4.c	2019-05-10 11:52:11.000000000 -0400
@@ -316,6 +316,8 @@ static const struct snd_soc_dapm_widget
 	SND_SOC_DAPM_INPUT("IN2_R"),
 	SND_SOC_DAPM_INPUT("IN3_L"),
 	SND_SOC_DAPM_INPUT("IN3_R"),
+	SND_SOC_DAPM_INPUT("CM_L"),
+	SND_SOC_DAPM_INPUT("CM_R"),
 };
 
 static const struct snd_soc_dapm_route aic32x4_dapm_routes[] = {
diff -druNp --no-dereference linux-libre-4.9.174-gnu/sound/soc/intel/common/sst-firmware.c linux-libre-4.9.175-gnu/sound/soc/intel/common/sst-firmware.c
--- linux-libre-4.9.174-gnu/sound/soc/intel/common/sst-firmware.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/sound/soc/intel/common/sst-firmware.c	2019-05-10 11:52:11.000000000 -0400
@@ -1252,11 +1252,15 @@ struct sst_dsp *sst_dsp_new(struct devic
 		goto irq_err;
 
 	err = sst_dma_new(sst);
-	if (err)
-		dev_warn(dev, "sst_dma_new failed %d\n", err);
+	if (err)  {
+		dev_err(dev, "sst_dma_new failed %d\n", err);
+		goto dma_err;
+	}
 
 	return sst;
 
+dma_err:
+	free_irq(sst->irq, sst);
 irq_err:
 	if (sst->ops->free)
 		sst->ops->free(sst);
diff -druNp --no-dereference linux-libre-4.9.174-gnu/sound/soc/soc-pcm.c linux-libre-4.9.175-gnu/sound/soc/soc-pcm.c
--- linux-libre-4.9.174-gnu/sound/soc/soc-pcm.c	2019-05-08 01:19:12.000000000 -0400
+++ linux-libre-4.9.175-gnu/sound/soc/soc-pcm.c	2019-05-10 11:52:11.000000000 -0400
@@ -894,10 +894,13 @@ static int soc_pcm_hw_params(struct snd_
 		codec_params = *params;
 
 		/* fixup params based on TDM slot masks */
-		if (codec_dai->tx_mask)
+		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
+		    codec_dai->tx_mask)
 			soc_pcm_codec_params_fixup(&codec_params,
 						   codec_dai->tx_mask);
-		if (codec_dai->rx_mask)
+
+		if (substream->stream == SNDRV_PCM_STREAM_CAPTURE &&
+		    codec_dai->rx_mask)
 			soc_pcm_codec_params_fixup(&codec_params,
 						   codec_dai->rx_mask);
 
