• S
    usb: rh_call_control tbuf overflow fix · e57e780b
    Sean O. Stalley 提交于
    rh_call_control() contains a buffer, tbuf, which it uses to hold
    USB descriptors. These discriptors are eventually copied into the
    transfer_buffer in the URB. The buffer in the URB is dynamically
    defined and is always large enough to hold the amount of data it
    requests.
    
    tbuf is currently statically allocated on the stack with a size
    of 15 bytes, regardless of the size specified in the URB.
    This patch dynamically allocates tbuf, and ensures that tbuf is
    at least as big as the buffer in the URB.
    
    If an hcd attempts to write a descriptor containing more than
    15 bytes ( such as the Standard BOS Descriptor for hubs, defined
    in the USB3.0 Spec, section 10.13.1 ) the write would overflow
    the buffer and corrupt the stack. This patch addresses this
    behavior.
    Acked-by: NAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: NSean O. Stalley <sean.stalley@intel.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e57e780b
hcd.c 82.7 KB