Unverified Commit dc04507c authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!10420 stm class: Fix a double free in stm_register_device()

parents 14cca086 615c6e82
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -868,8 +868,11 @@ int stm_register_device(struct device *parent, struct stm_data *stm_data,
		return -ENOMEM;

	stm->major = register_chrdev(0, stm_data->name, &stm_fops);
	if (stm->major < 0)
		goto err_free;
	if (stm->major < 0) {
		err = stm->major;
		vfree(stm);
		return err;
	}

	device_initialize(&stm->dev);
	stm->dev.devt = MKDEV(stm->major, 0);
@@ -913,10 +916,8 @@ int stm_register_device(struct device *parent, struct stm_data *stm_data,
err_device:
	unregister_chrdev(stm->major, stm_data->name);

	/* matches device_initialize() above */
	/* calls stm_device_release() */
	put_device(&stm->dev);
err_free:
	vfree(stm);

	return err;
}