diff options
Diffstat (limited to 'drivers/ieee1394/ieee1394_transactions.c')
| -rw-r--r-- | drivers/ieee1394/ieee1394_transactions.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/ieee1394/ieee1394_transactions.c b/drivers/ieee1394/ieee1394_transactions.c index 3fe2f6c4a253..a114b91d606d 100644 --- a/drivers/ieee1394/ieee1394_transactions.c +++ b/drivers/ieee1394/ieee1394_transactions.c  | |||
| @@ -136,8 +136,11 @@ int hpsb_get_tlabel(struct hpsb_packet *packet) | |||
| 136 | { | 136 | { | 
| 137 | unsigned long flags; | 137 | unsigned long flags; | 
| 138 | struct hpsb_tlabel_pool *tp; | 138 | struct hpsb_tlabel_pool *tp; | 
| 139 | int n = NODEID_TO_NODE(packet->node_id); | ||
| 139 | 140 | ||
| 140 | tp = &packet->host->tpool[packet->node_id & NODE_MASK]; | 141 | if (unlikely(n == ALL_NODES)) | 
| 142 | return 0; | ||
| 143 | tp = &packet->host->tpool[n]; | ||
| 141 | 144 | ||
| 142 | if (irqs_disabled() || in_atomic()) { | 145 | if (irqs_disabled() || in_atomic()) { | 
| 143 | if (down_trylock(&tp->count)) | 146 | if (down_trylock(&tp->count)) | 
| @@ -175,8 +178,11 @@ void hpsb_free_tlabel(struct hpsb_packet *packet) | |||
| 175 | { | 178 | { | 
| 176 | unsigned long flags; | 179 | unsigned long flags; | 
| 177 | struct hpsb_tlabel_pool *tp; | 180 | struct hpsb_tlabel_pool *tp; | 
| 181 | int n = NODEID_TO_NODE(packet->node_id); | ||
| 178 | 182 | ||
| 179 | tp = &packet->host->tpool[packet->node_id & NODE_MASK]; | 183 | if (unlikely(n == ALL_NODES)) | 
| 184 | return; | ||
| 185 | tp = &packet->host->tpool[n]; | ||
| 180 | 186 | ||
| 181 | BUG_ON(packet->tlabel > 63 || packet->tlabel < 0); | 187 | BUG_ON(packet->tlabel > 63 || packet->tlabel < 0); | 
| 182 | 188 | ||
