Commit 42cd5ffe authored by Colin Ian King's avatar Colin Ian King Committed by Felipe Balbi
Browse files

usb: dwc3: debug: fix string position formatting mixup with ret and len



Currently the string formatting is mixing up the offset of ret and
len. Re-work the code to use just len, remove ret and use scnprintf
instead of snprintf and len position accumulation where required.
Remove the -ve return check since scnprintf never returns a failure
-ve size. Also break overly long lines to clean up checkpatch
warnings.

Addresses-Coverity: ("Unused value")
Fixes: 1381a511 ("usb: dwc3: debug: purge usage of strcat")
Reviewed-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
Signed-off-by: default avatarFelipe Balbi <balbi@kernel.org>
parent e4bfded5
Loading
Loading
Loading
Loading
+15 −24
Original line number Diff line number Diff line
@@ -256,86 +256,77 @@ static inline const char *dwc3_ep_event_string(char *str, size_t size,
	u8 epnum = event->endpoint_number;
	size_t len;
	int status;
	int ret;

	ret = snprintf(str, size, "ep%d%s: ", epnum >> 1,
	len = scnprintf(str, size, "ep%d%s: ", epnum >> 1,
			(epnum & 1) ? "in" : "out");
	if (ret < 0)
		return "UNKNOWN";

	status = event->status;

	switch (event->endpoint_event) {
	case DWC3_DEPEVT_XFERCOMPLETE:
		len = strlen(str);
		snprintf(str + len, size - len, "Transfer Complete (%c%c%c)",
		len += scnprintf(str + len, size - len,
				"Transfer Complete (%c%c%c)",
				status & DEPEVT_STATUS_SHORT ? 'S' : 's',
				status & DEPEVT_STATUS_IOC ? 'I' : 'i',
				status & DEPEVT_STATUS_LST ? 'L' : 'l');

		len = strlen(str);

		if (epnum <= 1)
			snprintf(str + len, size - len, " [%s]",
			scnprintf(str + len, size - len, " [%s]",
					dwc3_ep0_state_string(ep0state));
		break;
	case DWC3_DEPEVT_XFERINPROGRESS:
		len = strlen(str);

		snprintf(str + len, size - len, "Transfer In Progress [%d] (%c%c%c)",
		scnprintf(str + len, size - len,
				"Transfer In Progress [%d] (%c%c%c)",
				event->parameters,
				status & DEPEVT_STATUS_SHORT ? 'S' : 's',
				status & DEPEVT_STATUS_IOC ? 'I' : 'i',
				status & DEPEVT_STATUS_LST ? 'M' : 'm');
		break;
	case DWC3_DEPEVT_XFERNOTREADY:
		len = strlen(str);

		snprintf(str + len, size - len, "Transfer Not Ready [%d]%s",
		len += scnprintf(str + len, size - len,
				"Transfer Not Ready [%d]%s",
				event->parameters,
				status & DEPEVT_STATUS_TRANSFER_ACTIVE ?
				" (Active)" : " (Not Active)");

		len = strlen(str);

		/* Control Endpoints */
		if (epnum <= 1) {
			int phase = DEPEVT_STATUS_CONTROL_PHASE(event->status);

			switch (phase) {
			case DEPEVT_STATUS_CONTROL_DATA:
				snprintf(str + ret, size - ret,
				scnprintf(str + len, size - len,
						" [Data Phase]");
				break;
			case DEPEVT_STATUS_CONTROL_STATUS:
				snprintf(str + ret, size - ret,
				scnprintf(str + len, size - len,
						" [Status Phase]");
			}
		}
		break;
	case DWC3_DEPEVT_RXTXFIFOEVT:
		snprintf(str + ret, size - ret, "FIFO");
		scnprintf(str + len, size - len, "FIFO");
		break;
	case DWC3_DEPEVT_STREAMEVT:
		status = event->status;

		switch (status) {
		case DEPEVT_STREAMEVT_FOUND:
			snprintf(str + ret, size - ret, " Stream %d Found",
			scnprintf(str + len, size - len, " Stream %d Found",
					event->parameters);
			break;
		case DEPEVT_STREAMEVT_NOTFOUND:
		default:
			snprintf(str + ret, size - ret, " Stream Not Found");
			scnprintf(str + len, size - len, " Stream Not Found");
			break;
		}

		break;
	case DWC3_DEPEVT_EPCMDCMPLT:
		snprintf(str + ret, size - ret, "Endpoint Command Complete");
		scnprintf(str + len, size - len, "Endpoint Command Complete");
		break;
	default:
		snprintf(str, size, "UNKNOWN");
		scnprintf(str + len, size - len, "UNKNOWN");
	}

	return str;