if (info == NULL)
return -ENOMEM;
- spin_lock_init(&info->info_lock);
+ mutex_init(&info->info_lock);
info->info_size = SPLAT_INFO_BUFFER_SIZE;
info->info_buffer = (char *)vmalloc(SPLAT_INFO_BUFFER_SIZE);
if (info->info_buffer == NULL) {
ASSERT(info);
ASSERT(info->info_buffer);
+ mutex_destroy(&info->info_lock);
vfree(info->info_buffer);
kfree(info);
ASSERT(info);
ASSERT(info->info_buffer);
- spin_lock(&info->info_lock);
+ mutex_lock(&info->info_lock);
memset(info->info_buffer, 0, info->info_size);
info->info_head = info->info_buffer;
- spin_unlock(&info->info_lock);
+ mutex_unlock(&info->info_lock);
return 0;
}
ASSERT(info);
ASSERT(info->info_buffer);
- spin_lock(&info->info_lock);
+ mutex_lock(&info->info_lock);
if (kcfg->cfg_arg1 > 0) {
size = kcfg->cfg_arg1;
if (copy_to_user((struct splat_cfg_t __user *)arg, kcfg, sizeof(*kcfg)))
rc = -EFAULT;
out:
- spin_unlock(&info->info_lock);
+ mutex_unlock(&info->info_lock);
return rc;
}
ASSERT(info);
ASSERT(info->info_buffer);
- spin_lock(&info->info_lock);
+ mutex_lock(&info->info_lock);
/* Write beyond EOF */
if (*ppos >= info->info_size) {
*ppos += count;
rc = count;
out:
- spin_unlock(&info->info_lock);
+ mutex_unlock(&info->info_lock);
return rc;
}
ASSERT(info);
ASSERT(info->info_buffer);
- spin_lock(&info->info_lock);
+ mutex_lock(&info->info_lock);
/* Read beyond EOF */
if (*ppos >= info->info_size)
*ppos += count;
rc = count;
out:
- spin_unlock(&info->info_lock);
+ mutex_unlock(&info->info_lock);
return rc;
}
ASSERT(info);
ASSERT(info->info_buffer);
- spin_lock(&info->info_lock);
+ mutex_lock(&info->info_lock);
switch (origin) {
case 0: /* SEEK_SET - No-op just do it */
rc = offset;
}
- spin_unlock(&info->info_lock);
+ mutex_unlock(&info->info_lock);
return rc;
}
#define SPLAT_INFO_BUFFER_REDZONE 256
typedef struct splat_info {
- spinlock_t info_lock;
+ struct mutex info_lock;
int info_size;
char *info_buffer;
char *info_head; /* Internal kernel use only */
ASSERT(_info_); \
ASSERT(_info_->info_buffer); \
\
- spin_lock(&_info_->info_lock); \
+ mutex_lock(&_info_->info_lock); \
\
/* Don't allow the kernel to start a write in the red zone */ \
if ((int)(_info_->info_head - _info_->info_buffer) > \
_info_->info_head += _rc_; \
} \
\
- spin_unlock(&_info_->info_lock); \
+ mutex_unlock(&_info_->info_lock); \
_rc_; \
})