Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b25472f9 authored by Al Viro's avatar Al Viro
Browse files

new helpers: no_seek_end_llseek{,_size}()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b808b1d6
Loading
Loading
Loading
Loading
+2 −18
Original line number Diff line number Diff line
@@ -1033,25 +1033,9 @@ static ssize_t mdesc_read(struct file *file, char __user *buf,

static loff_t mdesc_llseek(struct file *file, loff_t offset, int whence)
{
	struct mdesc_handle *hp;

	switch (whence) {
	case SEEK_CUR:
		offset += file->f_pos;
		break;
	case SEEK_SET:
		break;
	default:
		return -EINVAL;
	}

	hp = file->private_data;
	if (offset > hp->handle_size)
		return -EINVAL;
	else
		file->f_pos = offset;
	struct mdesc_handle *hp = file->private_data;

	return offset;
	return no_seek_end_llseek_size(file, offset, whence, hp->handle_size);
}

/* mdesc_close() - /dev/mdesc is being closed, release the reference to
+1 −23
Original line number Diff line number Diff line
@@ -58,28 +58,6 @@ static void cpuid_smp_cpuid(void *cmd_block)
		    &cmd->eax, &cmd->ebx, &cmd->ecx, &cmd->edx);
}

static loff_t cpuid_seek(struct file *file, loff_t offset, int orig)
{
	loff_t ret;
	struct inode *inode = file->f_mapping->host;

	mutex_lock(&inode->i_mutex);
	switch (orig) {
	case 0:
		file->f_pos = offset;
		ret = file->f_pos;
		break;
	case 1:
		file->f_pos += offset;
		ret = file->f_pos;
		break;
	default:
		ret = -EINVAL;
	}
	mutex_unlock(&inode->i_mutex);
	return ret;
}

static ssize_t cpuid_read(struct file *file, char __user *buf,
			  size_t count, loff_t *ppos)
{
@@ -132,7 +110,7 @@ static int cpuid_open(struct inode *inode, struct file *file)
 */
static const struct file_operations cpuid_fops = {
	.owner = THIS_MODULE,
	.llseek = cpuid_seek,
	.llseek = no_seek_end_llseek,
	.read = cpuid_read,
	.open = cpuid_open,
};
+1 −23
Original line number Diff line number Diff line
@@ -45,28 +45,6 @@

static struct class *msr_class;

static loff_t msr_seek(struct file *file, loff_t offset, int orig)
{
	loff_t ret;
	struct inode *inode = file_inode(file);

	mutex_lock(&inode->i_mutex);
	switch (orig) {
	case SEEK_SET:
		file->f_pos = offset;
		ret = file->f_pos;
		break;
	case SEEK_CUR:
		file->f_pos += offset;
		ret = file->f_pos;
		break;
	default:
		ret = -EINVAL;
	}
	mutex_unlock(&inode->i_mutex);
	return ret;
}

static ssize_t msr_read(struct file *file, char __user *buf,
			size_t count, loff_t *ppos)
{
@@ -194,7 +172,7 @@ static int msr_open(struct inode *inode, struct file *file)
 */
static const struct file_operations msr_fops = {
	.owner = THIS_MODULE,
	.llseek = msr_seek,
	.llseek = no_seek_end_llseek,
	.read = msr_read,
	.write = msr_write,
	.open = msr_open,
+1 −30
Original line number Diff line number Diff line
@@ -277,36 +277,7 @@ static loff_t flash_llseek(struct file *file, loff_t offset, int orig)
		printk(KERN_DEBUG "flash_llseek: offset=0x%X, orig=0x%X.\n",
		       (unsigned int) offset, orig);

	switch (orig) {
	case 0:
		if (offset < 0) {
			ret = -EINVAL;
			break;
		}

		if ((unsigned int) offset > gbFlashSize) {
			ret = -EINVAL;
			break;
		}

		file->f_pos = (unsigned int) offset;
		ret = file->f_pos;
		break;
	case 1:
		if ((file->f_pos + offset) > gbFlashSize) {
			ret = -EINVAL;
			break;
		}
		if ((file->f_pos + offset) < 0) {
			ret = -EINVAL;
			break;
		}
		file->f_pos += offset;
		ret = file->f_pos;
		break;
	default:
		ret = -EINVAL;
	}
	ret = no_seek_end_llseek_size(file, offset, orig, gbFlashSize);
	mutex_unlock(&flash_mutex);
	return ret;
}
+1 −16
Original line number Diff line number Diff line
@@ -1205,26 +1205,11 @@ static ssize_t dev_mem_write(struct file *file, const char __user *user_buf,

static loff_t dev_mem_seek(struct file *file, loff_t offset, int orig)
{
	loff_t ret;

	/* only requests of dword-aligned size and offset are supported */
	if (offset % 4)
		return -EINVAL;

	switch (orig) {
	case SEEK_SET:
		file->f_pos = offset;
		ret = file->f_pos;
		break;
	case SEEK_CUR:
		file->f_pos += offset;
		ret = file->f_pos;
		break;
	default:
		ret = -EINVAL;
	}

	return ret;
	return no_seek_end_llseek(file, offset, orig);
}

static const struct file_operations dev_mem_ops = {
Loading