diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-03 13:55:12 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-03 13:55:12 -0700 |
commit | df5a2a1fbca44bebeebb78530ac93c734f289707 (patch) | |
tree | 6a2522fee4c7e736e5d00a7ec1a978baab5ec145 /include/linux | |
parent | 9b2e077c42a97fcbdc0dd71edb1fc9d15c74ad29 (diff) | |
parent | 4d50c44381c981c9caa74e82ab894d4938dac9ca (diff) |
Merge tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394
Pull firewire updates from Stefan Richter:
- feed GUIDs of FireWire nodes to the random pool
- more complete quirk handling of a TI S400B phy
- avoid holding a core lock while calling into highlevel drivers
* tag 'firewire-updates' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
firewire: addendum to address handler RCU conversion
firewire: remove global lock around address handlers, convert to RCU
firewire: ohci: get IR bit from TSB41BA3D phy
firewire: core: feed /dev/random with devices' GUIDs
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/firewire.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/firewire.h b/include/linux/firewire.h index db04ec5121c..191501afd7f 100644 --- a/include/linux/firewire.h +++ b/include/linux/firewire.h @@ -265,8 +265,16 @@ typedef void (*fw_transaction_callback_t)(struct fw_card *card, int rcode, void *data, size_t length, void *callback_data); /* - * Important note: Except for the FCP registers, the callback must guarantee - * that either fw_send_response() or kfree() is called on the @request. + * This callback handles an inbound request subaction. It is called in + * RCU read-side context, therefore must not sleep. + * + * The callback should not initiate outbound request subactions directly. + * Otherwise there is a danger of recursion of inbound and outbound + * transactions from and to the local node. + * + * The callback is responsible that either fw_send_response() or kfree() + * is called on the @request, except for FCP registers for which the core + * takes care of that. */ typedef void (*fw_address_callback_t)(struct fw_card *card, struct fw_request *request, |