Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29be492d authored by Blagovest Kolenichev's avatar Blagovest Kolenichev
Browse files

Revert "scsi: ufs: fix failure to read the string descriptor"



This reverts commit b0a12b45.

Content added by the commit that is reverted is already presented
into msm-4.9 as part of change [1], where the delta was taken
from msm-4.4 change [2]. Note that [2] is created on a slightly
extended code as compared with the reverted change done with
changes [3] and [4].

In summary, change [2] is upstreamed as b0a12b45.

Motivation to revert the change is because it is causing merge
conflicts on importing android-4.9.107 (42a730ad) into msm-4.9,
hence let's remove it before the merge.

[1] cce6fbcb ufs: snapshot of UFS driver
[2] 878c98c scsi: ufs: fix failure to read the string descriptor
[3] a7da3b2 scsi: ufs: add descriptor read support
[4] cb6bbbd scsi: ufs: add index details to query error messages

Change-Id: Ie07fe42a8f08b5e67fe7737be34e299e3edad062
Signed-off-by: default avatarBlagovest Kolenichev <bkolenichev@codeaurora.org>
parent d77f4956
Loading
Loading
Loading
Loading
+8 −31
Original line number Diff line number Diff line
@@ -2098,38 +2098,15 @@ static int ufshcd_read_desc_param(struct ufs_hba *hba,
					desc_id, desc_index, 0, desc_buf,
					&buff_len);

	if (ret) {
		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d",
			__func__, desc_id, desc_index, param_offset, ret);

		goto out;
	}

	/* Sanity check */
	if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id) {
		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header",
			__func__, desc_buf[QUERY_DESC_DESC_TYPE_OFFSET]);
	if (ret || (buff_len < ufs_query_desc_max_size[desc_id]) ||
	    (desc_buf[QUERY_DESC_LENGTH_OFFSET] !=
	     ufs_query_desc_max_size[desc_id])
	    || (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id)) {
		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d param_offset %d buff_len %d ret %d",
			__func__, desc_id, param_offset, buff_len, ret);
		if (!ret)
			ret = -EINVAL;
		goto out;
	}

	/*
	 * While reading variable size descriptors (like string descriptor),
	 * some UFS devices may report the "LENGTH" (field in "Transaction
	 * Specific fields" of Query Response UPIU) same as what was requested
	 * in Query Request UPIU instead of reporting the actual size of the
	 * variable size descriptor.
	 * Although it's safe to ignore the "LENGTH" field for variable size
	 * descriptors as we can always derive the length of the descriptor from
	 * the descriptor header fields. Hence this change impose the length
	 * match check only for fixed size descriptors (for which we always
	 * request the correct size as part of Query Request UPIU).
	 */
	if ((desc_id != QUERY_DESC_IDN_STRING) &&
	    (buff_len != desc_buf[QUERY_DESC_LENGTH_OFFSET])) {
		dev_err(hba->dev, "%s: desc_buf length mismatch: buff_len %d, buff_len(desc_header) %d",
			__func__, buff_len, desc_buf[QUERY_DESC_LENGTH_OFFSET]);
		ret = -EINVAL;
		goto out;
	}