lkml.org 
[lkml]   [2020]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 043/150] usb: dwc3: debug: fix string position formatting mixup with ret and len
    Date
    From: Colin Ian King <colin.king@canonical.com>

    commit b32196e35bd7bbc8038db1aba1fbf022dc469b6a upstream.

    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: 1381a5113caf ("usb: dwc3: debug: purge usage of strcat")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200210095139.328711-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/dwc3/debug.h | 39 +++++++++++++++------------------------
    1 file changed, 15 insertions(+), 24 deletions(-)

    --- a/drivers/usb/dwc3/debug.h
    +++ b/drivers/usb/dwc3/debug.h
    @@ -256,86 +256,77 @@ static inline const char *dwc3_ep_event_
    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;

    \
     
     \ /
      Last update: 2020-02-27 15:24    [W:2.343 / U:2.836 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site