firewire: core: do not DMA-map stack addresses
The DMA mapping API cannot map on-stack addresses, as explained in Documentation/DMA-mapping.txt. Convert the two cases of on-stack packet payload buffers in firewire-core (payload of lock requests in the bus manager work and in iso resource management) to slab-allocated memory. There are a number on-stack buffers for quadlet write or quadlet read requests in firewire-core and firewire-sbp2. These are harmless; they are copied to/ from card driver internal DMA buffers since quadlet payloads are inlined with packet headers. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
@ -125,6 +125,7 @@ struct iso_resource {
|
||||
int generation;
|
||||
u64 channels;
|
||||
s32 bandwidth;
|
||||
__be32 transaction_data[2];
|
||||
struct iso_resource_event *e_alloc, *e_dealloc;
|
||||
};
|
||||
|
||||
@ -1049,7 +1050,8 @@ static void iso_resource_work(struct work_struct *work)
|
||||
r->channels, &channel, &bandwidth,
|
||||
todo == ISO_RES_ALLOC ||
|
||||
todo == ISO_RES_REALLOC ||
|
||||
todo == ISO_RES_ALLOC_ONCE);
|
||||
todo == ISO_RES_ALLOC_ONCE,
|
||||
r->transaction_data);
|
||||
/*
|
||||
* Is this generation outdated already? As long as this resource sticks
|
||||
* in the idr, it will be scheduled again for a newer generation or at
|
||||
|
Reference in New Issue
Block a user