mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2025-03-01 10:35:23 +00:00
use stricter locking in case somebody still uses redirect (deprecated)
This commit is contained in:
parent
9e6e34b857
commit
4d0c806262
@ -649,9 +649,9 @@ static void ddb_input_stop_unlocked(struct ddb_input *input)
|
|||||||
static void ddb_input_stop(struct ddb_input *input)
|
static void ddb_input_stop(struct ddb_input *input)
|
||||||
{
|
{
|
||||||
if (input->dma) {
|
if (input->dma) {
|
||||||
spin_lock_bh(&input->dma->lock);
|
spin_lock_irq(&input->dma->lock);
|
||||||
ddb_input_stop_unlocked(input);
|
ddb_input_stop_unlocked(input);
|
||||||
spin_unlock_bh(&input->dma->lock);
|
spin_unlock_irq(&input->dma->lock);
|
||||||
} else {
|
} else {
|
||||||
ddb_input_stop_unlocked(input);
|
ddb_input_stop_unlocked(input);
|
||||||
}
|
}
|
||||||
@ -693,9 +693,9 @@ static void ddb_input_start_unlocked(struct ddb_input *input)
|
|||||||
static void ddb_input_start(struct ddb_input *input)
|
static void ddb_input_start(struct ddb_input *input)
|
||||||
{
|
{
|
||||||
if (input->dma) {
|
if (input->dma) {
|
||||||
spin_lock_bh(&input->dma->lock);
|
spin_lock_irq(&input->dma->lock);
|
||||||
ddb_input_start_unlocked(input);
|
ddb_input_start_unlocked(input);
|
||||||
spin_unlock_bh(&input->dma->lock);
|
spin_unlock_irq(&input->dma->lock);
|
||||||
} else {
|
} else {
|
||||||
ddb_input_start_unlocked(input);
|
ddb_input_start_unlocked(input);
|
||||||
}
|
}
|
||||||
@ -2474,18 +2474,19 @@ static void input_work(struct work_struct *work)
|
|||||||
{
|
{
|
||||||
struct ddb_dma *dma = container_of(work, struct ddb_dma, work);
|
struct ddb_dma *dma = container_of(work, struct ddb_dma, work);
|
||||||
|
|
||||||
spin_lock(&dma->lock);
|
spin_lock_irq(&dma->lock);
|
||||||
input_proc(dma);
|
input_proc(dma);
|
||||||
spin_unlock(&dma->lock);
|
spin_unlock_irq(&dma->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void input_tasklet(unsigned long data)
|
static void input_tasklet(unsigned long data)
|
||||||
{
|
{
|
||||||
struct ddb_dma *dma = (struct ddb_dma *)data;
|
struct ddb_dma *dma = (struct ddb_dma *)data;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_bh(&dma->lock);
|
spin_lock_irqsave(&dma->lock, flags);
|
||||||
input_proc(dma);
|
input_proc(dma);
|
||||||
spin_unlock_bh(&dma->lock);
|
spin_unlock_irqrestore(&dma->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void input_handler(void *data)
|
static void input_handler(void *data)
|
||||||
@ -2498,7 +2499,7 @@ static void input_handler(void *data)
|
|||||||
* through the tasklet scheduler.
|
* through the tasklet scheduler.
|
||||||
*/
|
*/
|
||||||
if (!input->redi) {
|
if (!input->redi) {
|
||||||
input_work(&dma->work);
|
input_tasklet((unsigned long) dma);
|
||||||
} else {
|
} else {
|
||||||
if (use_workqueue)
|
if (use_workqueue)
|
||||||
queue_work(ddb_wq, &dma->work);
|
queue_work(ddb_wq, &dma->work);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user