diff --git linux-libre-6.12-gnu/Makefile linux-libre-6.12.1-gnu/Makefile
index ecbcb046125a..c4c75f9b7817 100644
--- linux-libre-6.12-gnu/Makefile
+++ linux-libre-6.12.1-gnu/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 12
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION = -gnu
 NAME = Baby Opossum Posse
 
diff --git linux-libre-6.12-gnu/drivers/media/usb/uvc/uvc_driver.c linux-libre-6.12.1-gnu/drivers/media/usb/uvc/uvc_driver.c
index 0fac689c6350..13db0026dc1a 100644
--- linux-libre-6.12-gnu/drivers/media/usb/uvc/uvc_driver.c
+++ linux-libre-6.12.1-gnu/drivers/media/usb/uvc/uvc_driver.c
@@ -371,7 +371,7 @@ static int uvc_parse_format(struct uvc_device *dev,
 	 * Parse the frame descriptors. Only uncompressed, MJPEG and frame
 	 * based formats have frame descriptors.
 	 */
-	while (buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE &&
+	while (ftype && buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE &&
 	       buffer[2] == ftype) {
 		unsigned int maxIntervalIndex;
 
diff --git linux-libre-6.12-gnu/mm/mmap.c linux-libre-6.12.1-gnu/mm/mmap.c
index 79d541f1502b..4f6e566d52fa 100644
--- linux-libre-6.12-gnu/mm/mmap.c
+++ linux-libre-6.12.1-gnu/mm/mmap.c
@@ -1491,7 +1491,18 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr,
 				vm_flags = vma->vm_flags;
 				goto file_expanded;
 			}
-			vma_iter_config(&vmi, addr, end);
+
+			/*
+			 * In the unlikely even that more memory was needed, but
+			 * not available for the vma merge, the vma iterator
+			 * will have no memory reserved for the write we told
+			 * the driver was happening.  To keep up the ruse,
+			 * ensure the allocation for the store succeeds.
+			 */
+			if (vmg_nomem(&vmg)) {
+				mas_preallocate(&vmi.mas, vma,
+						GFP_KERNEL|__GFP_NOFAIL);
+			}
 		}
 
 		vm_flags = vma->vm_flags;
diff --git linux-libre-6.12-gnu/net/vmw_vsock/hyperv_transport.c linux-libre-6.12.1-gnu/net/vmw_vsock/hyperv_transport.c
index e2157e387217..56c232cf5b0f 100644
--- linux-libre-6.12-gnu/net/vmw_vsock/hyperv_transport.c
+++ linux-libre-6.12.1-gnu/net/vmw_vsock/hyperv_transport.c
@@ -549,6 +549,7 @@ static void hvs_destruct(struct vsock_sock *vsk)
 		vmbus_hvsock_device_unregister(chan);
 
 	kfree(hvs);
+	vsk->trans = NULL;
 }
 
 static int hvs_dgram_bind(struct vsock_sock *vsk, struct sockaddr_vm *addr)
