func: static void CVE_2014_3185_VULN_command_port_read_callback(struct urb *urb) struct usb_serial_port * command_port = urb -> context ; struct whiteheat_command_private * command_info ; int status = urb -> status ; unsigned char * data = urb -> transfer_buffer ; command_info = usb_get_serial_port_data ( command_port ); if ( ! command_info )  if ( status )  if ( data [ 0 ] == WHITEHEAT_CMD_COMPLETE )  if ( data [ 0 ] == WHITEHEAT_CMD_FAILURE )  if ( data [ 0 ] == WHITEHEAT_EVENT )  if ( data [ 0 ] == WHITEHEAT_GET_DTR_RTS )  memcpy ( command_info -> result_buffer , & data [ 1 ] , urb -> actual_length - 1 ); command_info -> command_finished = WHITEHEAT_CMD_COMPLETE; wake_up ( & command_info -> wait_command ); 