Commit 52e8c209 authored by Dave Young's avatar Dave Young Committed by Greg Kroah-Hartman
Browse files

sysfs/file.c - use mutex instead of semaphore



Use mutex instead of semaphore in sysfs/file.c : sys_buffer.

Signed-off-by: default avatarDave Young <hidave.darkstar@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 2ebefc50
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -8,8 +8,8 @@
#include <linux/namei.h>
#include <linux/poll.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>

#include "sysfs.h"

@@ -55,7 +55,7 @@ struct sysfs_buffer {
	loff_t			pos;
	char			* page;
	struct sysfs_ops	* ops;
	struct semaphore	sem;
	struct mutex		mutex;
	int			needs_read_fill;
	int			event;
};
@@ -128,7 +128,7 @@ sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos)
	struct sysfs_buffer * buffer = file->private_data;
	ssize_t retval = 0;

	down(&buffer->sem);
	mutex_lock(&buffer->mutex);
	if (buffer->needs_read_fill) {
		retval = fill_read_buffer(file->f_path.dentry,buffer);
		if (retval)
@@ -139,7 +139,7 @@ sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos)
	retval = simple_read_from_buffer(buf, count, ppos, buffer->page,
					 buffer->count);
out:
	up(&buffer->sem);
	mutex_unlock(&buffer->mutex);
	return retval;
}

@@ -228,13 +228,13 @@ sysfs_write_file(struct file *file, const char __user *buf, size_t count, loff_t
	struct sysfs_buffer * buffer = file->private_data;
	ssize_t len;

	down(&buffer->sem);
	mutex_lock(&buffer->mutex);
	len = fill_write_buffer(buffer, buf, count);
	if (len > 0)
		len = flush_write_buffer(file->f_path.dentry, buffer, len);
	if (len > 0)
		*ppos += len;
	up(&buffer->sem);
	mutex_unlock(&buffer->mutex);
	return len;
}

@@ -294,7 +294,7 @@ static int sysfs_open_file(struct inode *inode, struct file *file)
	if (!buffer)
		goto err_out;

	init_MUTEX(&buffer->sem);
	mutex_init(&buffer->mutex);
	buffer->needs_read_fill = 1;
	buffer->ops = ops;
	file->private_data = buffer;