xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()
authorAnssi Hannula <anssi.hannula@bitwise.fi>
Thu, 3 Mar 2022 11:08:57 +0000 (13:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Mar 2022 14:46:07 +0000 (15:46 +0100)
xhci_decode_ctrl_ctx() returns the untouched buffer as-is if both "drop"
and "add" parameters are zero.

Fix the function to return an empty string in that case.

It was not immediately clear from the possible call chains whether this
issue is currently actually triggerable or not.

Note that before commit 4843b4b5ec64 ("xhci: fix even more unsafe memory
usage in xhci tracing") the result effect in the failure case was different
as a static buffer was used here, but the code still worked incorrectly.

Fixes: 90d6d5731da7 ("xhci: Add tracing for input control context")
Cc: stable@vger.kernel.org
Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
commit 4843b4b5ec64 ("xhci: fix even more unsafe memory usage in xhci tracing")
Link: https://lore.kernel.org/r/20220303110903.1662404-4-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci.h

index 1d83ddace4826efd675a6e0c4335ea1177e4f2f6..473a33ce299e480bf1c6a73a1815e09eb3f2de07 100644 (file)
@@ -2468,6 +2468,8 @@ static inline const char *xhci_decode_ctrl_ctx(char *str,
        unsigned int    bit;
        int             ret = 0;
 
+       str[0] = '\0';
+
        if (drop) {
                ret = sprintf(str, "Drop:");
                for_each_set_bit(bit, &drop, 32)