Browse Source

firmware: arm_scmi: Use after free in scmi_create_protocol_device()

We need to return here instead of setting up the freed sdev device as a
transport.

Fixes: 907b6d14911d ("firmware: arm_scmi: add per-protocol channels support using idr objects")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Dan Carpenter 7 years ago
parent
commit
31c6085562
1 changed files with 1 additions and 0 deletions
  1. 1 0
      drivers/firmware/arm_scmi/driver.c

+ 1 - 0
drivers/firmware/arm_scmi/driver.c

@@ -778,6 +778,7 @@ scmi_create_protocol_device(struct device_node *np, struct scmi_info *info,
 	if (scmi_mbox_chan_setup(info, &sdev->dev, prot_id)) {
 		dev_err(&sdev->dev, "failed to setup transport\n");
 		scmi_device_destroy(sdev);
+		return;
 	}
 
 	/* setup handle now as the transport is ready */