Skip to content

Commit

Permalink
usb: dwc3: debug: fix string position formatting mixup with ret and len
Browse files Browse the repository at this point in the history
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: 1381a51 ("usb: dwc3: debug: purge usage of strcat")
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
  • Loading branch information
Colin Ian King authored and Felipe Balbi committed Feb 11, 2020
1 parent e4bfded commit 42cd5ff
Showing 1 changed file with 15 additions and 24 deletions.
39 changes: 15 additions & 24 deletions drivers/usb/dwc3/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 42cd5ff

Please sign in to comment.