Restoring old recv_data can overwrite response data when the response is
multi-byte. This can happen when device responds with multiple bytes quickly,
for example Logitech MX518(PS/2) sends FA 00 in short period to F2 command
while most of devices doesn't send second byte that fast.
recv_data is cleared when calling ibmpc_host_send() you will have to
retain the data yourself before calling it. Or you have to make sure
that recv_data is empty as possible before calling the function.
Alternatively, ibmpc_host_send() can be changed to check if recv_data is
empty before seding command.