aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2010-04-12 04:35:30 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2010-04-19 13:58:32 -0400
commit2608203daf5f87311c6e5d36e5de5efcb14aab24 (patch)
treef0060813795c68ab988a998c4cced16d67139ded /drivers/firewire
parentd6372b6e7c6142e6cc2108b3b850584cd7ade106 (diff)
firewire: ohci: prevent aliasing of locally handled register addresses
We must compute the offset from the CSR register base with the full 48 address bits to prevent matching with addresses whose lower 32 bits happen to be equal with one of the specially handled registers. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r--drivers/firewire/ohci.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index e33917bf97d..82fb2e7e99e 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -1198,8 +1198,7 @@ static void handle_local_lock(struct fw_ohci *ohci,
1198 1198
1199static void handle_local_request(struct context *ctx, struct fw_packet *packet) 1199static void handle_local_request(struct context *ctx, struct fw_packet *packet)
1200{ 1200{
1201 u64 offset; 1201 u64 offset, csr;
1202 u32 csr;
1203 1202
1204 if (ctx == &ctx->ohci->at_request_ctx) { 1203 if (ctx == &ctx->ohci->at_request_ctx) {
1205 packet->ack = ACK_PENDING; 1204 packet->ack = ACK_PENDING;