Commit e5f49c3b authored by Kristian Høgsberg's avatar Kristian Høgsberg Committed by Stefan Richter

firewire: Sanitize send error codes.

Drop the negative errnos and use RCODEs for all error codes
in the complete transaction callback.
Signed-off-by: default avatarKristian Høgsberg <krh@redhat.com>
Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent 93c4cceb
...@@ -376,7 +376,7 @@ at_context_setup_packet(struct at_context *ctx, struct list_head *list) ...@@ -376,7 +376,7 @@ at_context_setup_packet(struct at_context *ctx, struct list_head *list)
packet->payload_length, packet->payload_length,
DMA_TO_DEVICE); DMA_TO_DEVICE);
if (packet->payload_bus == 0) { if (packet->payload_bus == 0) {
complete_transmission(packet, -ENOMEM, list); complete_transmission(packet, RCODE_SEND_ERROR, list);
return; return;
} }
...@@ -438,7 +438,7 @@ at_context_setup_packet(struct at_context *ctx, struct list_head *list) ...@@ -438,7 +438,7 @@ at_context_setup_packet(struct at_context *ctx, struct list_head *list)
/* We dont return error codes from this function; all /* We dont return error codes from this function; all
* transmission errors are reported through the * transmission errors are reported through the
* callback. */ * callback. */
complete_transmission(packet, -ESTALE, list); complete_transmission(packet, RCODE_GENERATION, list);
} }
} }
...@@ -484,26 +484,26 @@ static void at_context_tasklet(unsigned long data) ...@@ -484,26 +484,26 @@ static void at_context_tasklet(unsigned long data)
switch (evt) { switch (evt) {
case OHCI1394_evt_timeout: case OHCI1394_evt_timeout:
/* Async response transmit timed out. */ /* Async response transmit timed out. */
complete_transmission(packet, -ETIMEDOUT, &list); complete_transmission(packet, RCODE_CANCELLED, &list);
break; break;
case OHCI1394_evt_flushed: case OHCI1394_evt_flushed:
/* The packet was flushed should give same /* The packet was flushed should give same
* error as when we try to use a stale * error as when we try to use a stale
* generation count. */ * generation count. */
complete_transmission(packet, -ESTALE, &list); complete_transmission(packet,
RCODE_GENERATION, &list);
break; break;
case OHCI1394_evt_missing_ack: case OHCI1394_evt_missing_ack:
/* This would be a higher level software /* Using a valid (current) generation count,
* error, it is using a valid (current) * but the node is not on the bus or not
* generation count, but the node is not on * sending acks. */
* the bus. */ complete_transmission(packet, RCODE_NO_ACK, &list);
complete_transmission(packet, -ENODEV, &list);
break; break;
default: default:
complete_transmission(packet, -EIO, &list); complete_transmission(packet, RCODE_SEND_ERROR, &list);
break; break;
} }
} else } else
......
...@@ -93,15 +93,15 @@ transmit_complete_callback(struct fw_packet *packet, ...@@ -93,15 +93,15 @@ transmit_complete_callback(struct fw_packet *packet,
close_transaction(t, card, RCODE_BUSY, NULL, 0); close_transaction(t, card, RCODE_BUSY, NULL, 0);
break; break;
case ACK_DATA_ERROR: case ACK_DATA_ERROR:
close_transaction(t, card, RCODE_DATA_ERROR, NULL, 0);
break;
case ACK_TYPE_ERROR: case ACK_TYPE_ERROR:
close_transaction(t, card, RCODE_SEND_ERROR, NULL, 0); close_transaction(t, card, RCODE_TYPE_ERROR, NULL, 0);
break; break;
default: default:
/* FIXME: In this case, status is a negative errno, /* In this case the ack is really a juju specific
* corresponding to an OHCI specific transmit error * rcode, so just forward that to the callback. */
* code. We should map that to an RCODE instead of close_transaction(t, card, status, NULL, 0);
* just the generic RCODE_SEND_ERROR. */
close_transaction(t, card, RCODE_SEND_ERROR, NULL, 0);
break; break;
} }
} }
......
...@@ -87,6 +87,8 @@ ...@@ -87,6 +87,8 @@
#define RCODE_SEND_ERROR 0x10 #define RCODE_SEND_ERROR 0x10
#define RCODE_CANCELLED 0x11 #define RCODE_CANCELLED 0x11
#define RCODE_BUSY 0x12 #define RCODE_BUSY 0x12
#define RCODE_GENERATION 0x13
#define RCODE_NO_ACK 0x14
#define RETRY_1 0x00 #define RETRY_1 0x00
#define RETRY_X 0x01 #define RETRY_X 0x01
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment