Browse Source

media: cx23885: Handle return value of kasprintf

kasprintf() can fail here and we must check its return value.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Arvind Yadav 8 years ago
parent
commit
1ee332acc6
1 changed files with 13 additions and 2 deletions
  1. 13 2
      drivers/media/pci/cx23885/cx23885-input.c

+ 13 - 2
drivers/media/pci/cx23885/cx23885-input.c

@@ -340,14 +340,23 @@ int cx23885_input_init(struct cx23885_dev *dev)
 	kernel_ir->cx = dev;
 	kernel_ir->cx = dev;
 	kernel_ir->name = kasprintf(GFP_KERNEL, "cx23885 IR (%s)",
 	kernel_ir->name = kasprintf(GFP_KERNEL, "cx23885 IR (%s)",
 				    cx23885_boards[dev->board].name);
 				    cx23885_boards[dev->board].name);
+	if (!kernel_ir->name) {
+		ret = -ENOMEM;
+		goto err_out_free;
+	}
+
 	kernel_ir->phys = kasprintf(GFP_KERNEL, "pci-%s/ir0",
 	kernel_ir->phys = kasprintf(GFP_KERNEL, "pci-%s/ir0",
 				    pci_name(dev->pci));
 				    pci_name(dev->pci));
+	if (!kernel_ir->phys) {
+		ret = -ENOMEM;
+		goto err_out_free_name;
+	}
 
 
 	/* input device */
 	/* input device */
 	rc = rc_allocate_device(RC_DRIVER_IR_RAW);
 	rc = rc_allocate_device(RC_DRIVER_IR_RAW);
 	if (!rc) {
 	if (!rc) {
 		ret = -ENOMEM;
 		ret = -ENOMEM;
-		goto err_out_free;
+		goto err_out_free_phys;
 	}
 	}
 
 
 	kernel_ir->rc = rc;
 	kernel_ir->rc = rc;
@@ -382,9 +391,11 @@ err_out_stop:
 	cx23885_input_ir_stop(dev);
 	cx23885_input_ir_stop(dev);
 	dev->kernel_ir = NULL;
 	dev->kernel_ir = NULL;
 	rc_free_device(rc);
 	rc_free_device(rc);
-err_out_free:
+err_out_free_phys:
 	kfree(kernel_ir->phys);
 	kfree(kernel_ir->phys);
+err_out_free_name:
 	kfree(kernel_ir->name);
 	kfree(kernel_ir->name);
+err_out_free:
 	kfree(kernel_ir);
 	kfree(kernel_ir);
 	return ret;
 	return ret;
 }
 }