diff
--- a/drivers/gpu/drm/nouveau/nvkm/engine/firmware.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/firmware.c
@@ -5,6 +5,7 @@
 3 		   struct nvkm_device *device, const void *src, int len, struct nvkm_firmware *fw)
 5 	fw->func = func;
 6 	fw->name = name;
+> 	fw->img = NULL; // Ensure cleanup is safe
 7 	fw->device = device;
 8 	fw->len = len; 
 > 	if (fw->func) {
@@ -13,6 +14,10 @@
 12 		fw->img = kmemdup(src, fw->len, GFP_KERNEL);
 > 			if (!fw->img)
 > 				return -ENOMEM;
+> 			if (!fw->img) {
+> 				kfree(fw->img);
+> 				return -ENOMEM;
+> 			}
 15 		len = ALIGN(fw->len, PAGE_SIZE);
 > 	}
 