diff options
author | Andreas Eversberg <andreas@eversberg.eu> | 2009-05-22 15:04:47 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-25 11:51:32 +0400 |
commit | ba3af34ec9866dddac36c15947f867eb8e889bbc (patch) | |
tree | 21895b97b7ec004e39ad01d97a0fec83a657eab0 /drivers/isdn | |
parent | 44e095897d745a03d71611fd318f26d8b12a4771 (diff) | |
download | linux-ba3af34ec9866dddac36c15947f867eb8e889bbc.tar.xz |
mISDN: Fixed missing spin lock on pipeline process
Need to protect the complete pipeline.
Signed-off-by: Andreas Eversberg <andreas@eversberg.eu>
Signed-off-by: Karsten Keil <keil@b1-systems.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/mISDN/dsp_core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/isdn/mISDN/dsp_core.c b/drivers/isdn/mISDN/dsp_core.c index 1c49368e0a90..621ea9bc7c25 100644 --- a/drivers/isdn/mISDN/dsp_core.c +++ b/drivers/isdn/mISDN/dsp_core.c @@ -704,6 +704,8 @@ dsp_function(struct mISDNchannel *ch, struct sk_buff *skb) break; } + spin_lock_irqsave(&dsp_lock, flags); + /* decrypt if enabled */ if (dsp->bf_enable) dsp_bf_decrypt(dsp, skb->data, skb->len); @@ -741,11 +743,11 @@ dsp_function(struct mISDNchannel *ch, struct sk_buff *skb) } } /* we need to process receive data if software */ - spin_lock_irqsave(&dsp_lock, flags); if (dsp->pcm_slot_tx < 0 && dsp->pcm_slot_rx < 0) { /* process data from card at cmx */ dsp_cmx_receive(dsp, skb); } + spin_unlock_irqrestore(&dsp_lock, flags); if (dsp->rx_disabled) { |