提交 1821bc19 编写于 作者: S Stefan Richter

firewire: core: fix crash in iso resource management

This fixes a regression due to post 2.6.30 commit "firewire: core: do
not DMA-map stack addresses" 6fdc0370.

As David Moore noted, a previously correct sizeof() expression became
wrong since the commit changed its argument from an array to a pointer.
This resulted in an oops in ohci_cancel_packet in the shared workqueue
thread's context when an isochronous resource was to be freed.
Reported-by: NJonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
上级 ebbb16bf
...@@ -196,7 +196,7 @@ static int manage_bandwidth(struct fw_card *card, int irm_id, int generation, ...@@ -196,7 +196,7 @@ static int manage_bandwidth(struct fw_card *card, int irm_id, int generation,
switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP, switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP,
irm_id, generation, SCODE_100, irm_id, generation, SCODE_100,
CSR_REGISTER_BASE + CSR_BANDWIDTH_AVAILABLE, CSR_REGISTER_BASE + CSR_BANDWIDTH_AVAILABLE,
data, sizeof(data))) { data, 8)) {
case RCODE_GENERATION: case RCODE_GENERATION:
/* A generation change frees all bandwidth. */ /* A generation change frees all bandwidth. */
return allocate ? -EAGAIN : bandwidth; return allocate ? -EAGAIN : bandwidth;
...@@ -233,7 +233,7 @@ static int manage_channel(struct fw_card *card, int irm_id, int generation, ...@@ -233,7 +233,7 @@ static int manage_channel(struct fw_card *card, int irm_id, int generation,
data[1] = old ^ c; data[1] = old ^ c;
switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP, switch (fw_run_transaction(card, TCODE_LOCK_COMPARE_SWAP,
irm_id, generation, SCODE_100, irm_id, generation, SCODE_100,
offset, data, sizeof(data))) { offset, data, 8)) {
case RCODE_GENERATION: case RCODE_GENERATION:
/* A generation change frees all channels. */ /* A generation change frees all channels. */
return allocate ? -EAGAIN : i; return allocate ? -EAGAIN : i;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册