Commit 3f7df988 authored by Li Lingfeng's avatar Li Lingfeng
Browse files

Revert "scsi: ses: Fix crash caused by kfree an invalid pointer"

hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9K8D1


CVE: NA

--------------------------------

This reverts commit 74885845.

Backport 176d7345b89c("scsi: ses: Handle enclosure with just a primary
component gracefully") to replace it.

Fixes: 74885845 ("scsi: ses: Fix crash caused by kfree an invalid pointer")
Signed-off-by: default avatarLi Lingfeng <lilingfeng3@huawei.com>
parent 9a5c6ac0
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -503,6 +503,9 @@ static int ses_enclosure_find_by_addr(struct enclosure_device *edev,
	int i;
	struct ses_component *scomp;

	if (!edev->component[0].scratch)
		return 0;

	for (i = 0; i < edev->components; i++) {
		scomp = edev->component[i].scratch;
		if (scomp->addr != efd->addr)
@@ -593,10 +596,8 @@ static void ses_enclosure_data_process(struct enclosure_device *edev,
						components++,
						type_ptr[0],
						name);
				else if (components < edev->components)
					ecomp = &edev->component[components++];
				else
					ecomp = ERR_PTR(-EINVAL);
					ecomp = &edev->component[components++];

				if (!IS_ERR(ecomp)) {
					if (addl_desc_ptr) {
@@ -768,11 +769,9 @@ static int ses_intf_add(struct device *cdev,
		buf = NULL;
	}
page2_not_supported:
	if (components > 0) {
	scomp = kcalloc(components, sizeof(struct ses_component), GFP_KERNEL);
	if (!scomp)
		goto err_free;
	}

	edev = enclosure_register(cdev->parent, dev_name(&sdev->sdev_gendev),
				  components, &ses_enclosure_callbacks);
@@ -852,7 +851,6 @@ static void ses_intf_remove_enclosure(struct scsi_device *sdev)
	kfree(ses_dev->page2);
	kfree(ses_dev);

	if (edev->components > 0)
	kfree(edev->component[0].scratch);

	put_device(&edev->edev);