file->private_data = p;
}
memset(p, 0, sizeof(*p));
- mutex_init(&p->lock);
+ sema_init(&p->sem, 1);
p->op = op;
/*
void *p;
int err = 0;
- mutex_lock(&m->lock);
+ down(&m->sem);
/*
* seq_file->op->..m_start/m_stop/m_next may do special actions
* or optimisations based on the file->f_version, so we want to
else
*ppos += copied;
file->f_version = m->version;
- mutex_unlock(&m->lock);
+ up(&m->sem);
return copied;
Enomem:
err = -ENOMEM;
struct seq_file *m = (struct seq_file *)file->private_data;
long long retval = -EINVAL;
- mutex_lock(&m->lock);
+ down(&m->sem);
m->version = file->f_version;
switch (origin) {
case 1:
}
}
}
- mutex_unlock(&m->lock);
+ up(&m->sem);
file->f_version = m->version;
return retval;
}